Как узнать время, проведенное стручка? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть требование, которое я хочу знать каждую часть времени, проведенного в стручке.

  1. сколько времени потянуть docker изображение? Возможно, у Pod есть несколько initContainers и контейнеров. Я хочу знать каждую их часть.

Возможно, я смогу проанализировать События, используя 'kubectl description pod-name ...'

сколько раз готовится стручок? С момента создания и получения готовности.

Для чистого стручка я могу знать время начала стручка и время его окончания. Тогда я могу рассчитать продолжительность.

Но для модулей, созданных с помощью Deployment, StatefulSet, DaemonSet, я не могу найти флаг времени, указывающий первый момент времени, когда модуль становится готовым.

Я хочу знать, сколько времени ушло на подготовку стручка. Не возраст стручка.

1 Ответ

0 голосов
/ 20 апреля 2020

Самый простой способ - подписаться на api-сервер, чтобы уведомлять вас о каких-либо изменениях в вашем кластере.

Например, я выдал:

$ kubectl get pods --output-watch-events --watch

, а затем создал новый стручок Вот вывод:

EVENT      NAME            READY   STATUS              RESTARTS   AGE
ADDED      example-pod     0/1     Pending             0          0s
MODIFIED   example-pod     0/1     ContainerCreating   0          0s
MODIFIED   example-pod     0/1     Running             0          19s
MODIFIED   example-pod     1/1     Running             0          23s

и вот небольшое объяснение:

  • Как вы можете видеть, первое событие ДОБАВЛЕНО и находится в состоянии ожидания, что означает, что объект pod просто был создан.
  • Второе событие MODIFIED со статусом ContainerCreating, возраст 0, что означает, что потребовалось менее 1 секунды, чтобы назначить / запланировать модуль для узла. Теперь kubelet начинает загружать образ продолжения.
  • Третье событие имеет статус «Запущено», означающее, что продолжение континуатора запущено. Глядя на столбец возраста, вы можете увидеть, что прошло 19 с после предыдущего события, поэтому потребовалось около 19 с, чтобы загрузить изображение и запустить контейнер. Если вы посмотрите на столбец READY, вы увидите значение 0/1, поэтому контейнер работает, но он еще не находится в состоянии готовности.
  • Для четвертого события столбец READY имеет значение 1/1, поэтому проверка готовности прошла успешно. Если вы посмотрите на столбец возраста, то увидите, что для проверки готовности и изменения статуса модуля понадобилось около 4 с (32-19).

Если этой информации недостаточно, вы можете использовать --output= параметр для получения полной спецификации модуля при каждом изменении.

Вы также можете поиграть с kubectl get events, чтобы получить еще несколько событий. И, конечно, добавив флаг --watch, вы сможете наблюдать за событиями в реальном времени.

Если вы хотите более высокий уровень гибкости, используйте выделенные библиотеки kubernetes cl inet вместо kuebctl для получить эту информацию и обработать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...