Как перечислить Kubernetes недавно удаленные контейнеры?

Есть ли способ получить некоторые сведения о Kubernetes pod, который был удален (остановлен, заменен новой версией).

Я исследую ошибку. У меня есть журналы с моим именем. Этот блок больше не существует, он был заменен другим (с другой конфигурацией). Новый модуль находится в том же пространстве имен, контроллер репликации и служба как старый.

Команды, подобные

kubectl  get pods
kubectl  get pod <pod-name> 

работать только с текущими контейнерами (в режиме "живого" или "остановлен").

Как я мог получить более подробную информацию о старых контейнерах? Я бы хотел увидеть

  1. когда они были созданы
  2. какие переменные среды они имели при создании
  3. почему и когда они были остановлены

Ответы

Ответ 1

На сегодняшний день kubectl get pods -a устарела, и в результате вы не можете получить удаленные модули.

Что вы можете сделать, это получить список недавно удаленных имен модулей - до 1 часа в прошлом, если вы не изменили ttl для событий kubernetes - запустив:

kubectl get event -o custom-columns=NAME:.metadata.name | cut -d "." -f1

Затем вы можете исследовать дальнейшие проблемы в рамках вашего конвейера регистрации, если он у вас есть.

Ответ 2

насколько я знаю, вы можете не получить детали pod после удаления контейнера. могу ли я знать, что такое usecase?

пример:

  1. если модуль, созданный с использованием - kubectl, запускает busybox-test-pod-status --image = busybox --restart = Never -/bin/false, у вас будет модуль со статусом:
  2. если pod создан с помощью - kubectl запустить busybox-test-pod-status --image = busybox --restart = Никогда -/bin/true у вас будет блок со статусом завершен: выполнено
  3. если контейнер в контейнерах перезагрузится: модуль будет активным, и вы можете получить журналы предыдущего контейнера (только предыдущий контейнер) с помощью журналов kubectl --container <имя_контента> --previous = true <имя_поды>
  4. если вы выполняете обновление своего приложения, и вы создаете контейнеры с использованием развертываний. если развертывание обновления "скажет новое изображение". pod будет прекращен, и будет создан новый блок. вы можете получить информацию о пакете от depamment yaml. если вы хотите получить информацию о предыдущем модуле, вы увидите раздел "spec" предыдущего развертывания yaml

Ответ 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