Как перечислить Kubernetes недавно удаленные контейнеры?
Есть ли способ получить некоторые сведения о Kubernetes pod, который был удален (остановлен, заменен новой версией).
Я исследую ошибку. У меня есть журналы с моим именем. Этот блок больше не существует, он был заменен другим (с другой конфигурацией). Новый модуль находится в том же пространстве имен, контроллер репликации и служба как старый.
Команды, подобные
kubectl get pods
kubectl get pod <pod-name>
работать только с текущими контейнерами (в режиме "живого" или "остановлен").
Как я мог получить более подробную информацию о старых контейнерах? Я бы хотел увидеть
- когда они были созданы
- какие переменные среды они имели при создании
- почему и когда они были остановлены
Ответы
Ответ 1
На сегодняшний день kubectl get pods -a
устарела, и в результате вы не можете получить удаленные модули.
Что вы можете сделать, это получить список недавно удаленных имен модулей - до 1 часа в прошлом, если вы не изменили ttl
для событий kubernetes - запустив:
kubectl get event -o custom-columns=NAME:.metadata.name | cut -d "." -f1
Затем вы можете исследовать дальнейшие проблемы в рамках вашего конвейера регистрации, если он у вас есть.
Ответ 2
насколько я знаю, вы можете не получить детали pod после удаления контейнера. могу ли я знать, что такое usecase?
пример:
- если модуль, созданный с использованием - kubectl, запускает busybox-test-pod-status --image = busybox --restart = Never -/bin/false, у вас будет модуль со статусом:
- если pod создан с помощью - kubectl запустить busybox-test-pod-status --image = busybox --restart = Никогда -/bin/true у вас будет блок со статусом завершен: выполнено
- если контейнер в контейнерах перезагрузится: модуль будет активным, и вы можете получить журналы предыдущего контейнера (только предыдущий контейнер) с помощью журналов kubectl --container <имя_контента> --previous = true <имя_поды>
- если вы выполняете обновление своего приложения, и вы создаете контейнеры с использованием развертываний. если развертывание обновления "скажет новое изображение". pod будет прекращен, и будет создан новый блок. вы можете получить информацию о пакете от depamment yaml. если вы хотите получить информацию о предыдущем модуле, вы увидите раздел "spec" предыдущего развертывания yaml
Ответ 3
Вы можете попробовать kubectl logs --previous
чтобы перечислить журналы ранее остановленного модуля
http://kubernetes.io/docs/user-guide/kubectl/kubectl_logs/
Вы также можете проверить эти советы по отладке http://kubernetes.io/docs/user-guide/debugging-pods-and-replication-controllers/
Ответ 4
Если ваш контейнер ранее разбился, вы можете получить доступ к предыдущему журналу сбоев контейнеров с помощью:
журналы kubectl --previous $ {POD_NAME} $ {CONTAINER_NAME}
Ответ 5
Есть способ узнать, почему стручки были удалены и кто их удалил.
Единственный способ что-то выяснить - установить ttl
для k8s больше, чем значение по умолчанию 1 ч, и выполнить поиск по событиям:
kubectl get event -o custom-columns=NAME:.metadata.name | cut -d "." -f1
Ответ 6
Есть этот флаг:
-a, --show -a ll = false: при печати отобразите все ресурсы (по умолчанию скрываются завершенные контейнеры).
Но это может не помочь во всех случаях старых стручков.
Ответ 7
kubectl get pods -a
вы получите список запущенных контейнеров и завершенных контейнеров в случае, если вы ищете это
Ответ 8
Если вы хотите видеть все ранее удаленные pods
и вы пытаетесь извлечь предыдущие pods
.
Командная строка: kubectl describe services
в котором вы получите все детали pod, потому что у каждой службы есть один или несколько контейнеров, и у них есть уникальный ip-адрес
Здесь вы можете проверить жизненный цикл стручков и на каких фазах стручка. https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle