#kubernetes
Вопрос:
В настоящее время, если я собираюсь осмотреть свой контейнер, мне нужно выполнить три шага:
- kubectl получить все -n {пространство имен}
- описание kubectl {Имя подстановки из шага 1} -n {Пространство имен}
- Найдите хост узла и идентификатор контейнера (мои глаза жалуются!)
- Переключитесь на хост и выполните «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, потому что это то, что ОП использует в своих контейнерах.