Как я могу быстрее войти в управляемый контейнер Kubernetes?

#kubernetes

Вопрос:

В настоящее время, если я собираюсь осмотреть свой контейнер, мне нужно выполнить три шага:

  1. kubectl получить все -n {пространство имен}
  2. описание kubectl {Имя подстановки из шага 1} -n {Пространство имен}
  3. Найдите хост узла и идентификатор контейнера (мои глаза жалуются!)
  4. Переключитесь на хост и выполните «docker exec-ti-u root {Идентификатор контейнера} bash».

Я так без ума от этого прямо сейчас. Хотелось бы, чтобы кто-нибудь мог предложить некоторую помощь мне и тем, кто, возможно, разделяет ту же проблему.

Комментарии:

1. kubectl exec -it somepod -- bash

2. @стив Ву : Лей Ян комм будет работать. просто добавьте ссылку на документацию kubernetes по подключению к оболочке контейнера . Ссылка : kubernetes.io/docs/tasks/debug-application-cluster/…

Ответ №1:

Модули-это самые маленькие развертываемые вычислительные единицы, которые вы можете создавать и управлять в Kubernetes.

Итак, если вы хотите «ввести» контейнер, вам просто нужно «выполнить» в модуле в определенном пространстве имен. Кубернетес предоставит вам оболочку/команду для этого модуля.

 kubectl -n somenamespace exec -it podname -- bash
 

Здесь нет необходимости упоминать узел, поскольку Kubernetes внутренне знает, на каком узле запланирован модуль.

Если модуль содержит более одного контейнера, используйте —container или-c, чтобы указать контейнер в команде kubectl exec. Например, предположим, что у вас есть модуль с именем my-pod, и в нем есть два контейнера с именами main-app и helper-app. Следующая команда откроет оболочку для контейнера основного приложения.

 kubectl exec -it my-pod -c main-app -- /bin/bash
 

https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/

Комментарии:

1. иногда bash отсутствует в контейнере и sh может потребоваться.

2. @P…. Соглашаться. Я использовал bash, потому что это то, что ОП использует в своих контейнерах.