Изменение статуса контейнера с помощью Stackdriver и GKE - PullRequest
1 голос
/ 09 июля 2020

Я наверняка упускаю что-то очевидное. GCP предоставляет мне всевозможные видимые указания, когда контейнер не запускается. Например:

Failed deployment

Статус контейнера

Но я хоть убей не могу понять, как заставить его выдавать предупреждение, когда статус контейнера не в порядке.

Как это делается?

1 Ответ

0 голосов
/ 17 июля 2020
  • CrashLoopBackOff указывает, что контейнер неоднократно аварийно завершает работу после перезапуска. Контейнер может взломать sh по многим причинам, и проверка журналов пода может помочь в устранении причины root.

Помимо текстового сообщения об ошибке Does not have minimum availability , могут быть другие текстовые сообщения об ошибках, например Failed to pull image. Однако я рекомендую вам определять текстовые сообщения об ошибках, которые подходят для вашей среды. Вы можете проверить это с помощью kubectl logs <pod_name> или в программе просмотра журналов.

Для справки, вот объяснения проблем pod :

  1. CrashLoopBackOff означает, что контейнер был загружен, но не запустился
  2. ImagePullBackOff означает, что изображение не было загружено
  3. «Нет минимальной доступности» означает, что в кластере нет доступных ресурсов, но не указано c из-за нехватки ресурсов. Например, могут быть узлы, но модуль не может быть запланирован для них в соответствии с развертыванием.
  4. «Недостаточно ЦП» означает, что на узлах недостаточно ЦП.
  5. «Не подлежит планированию» указывает, что ваш под не может быть запланирован из-за недостатка ресурсов или некоторой ошибки конфигурации.

Имея это в виду, вот пошаговая инструкция по созданию метри c на основе журнала для последующего создания на его основе предупреждений.

  1. Настройка Метри на основе журналов c с использованием параметров:

    resource.type="k8s_pod"
    severity>=WARNING
    unschedulable
    

    Вы можете заменить фильтр на более подходящий для вашего случая.

  2. Создайте метку в метрике c, которая позволит вам идентифицировать модуль, который имел unschedulable (или другой статус). Это также поможет с группировкой при создании оповещения для отказавшего модуля.

  3. В Stackdriver Monitoring создайте оповещение со следующими параметрами.

    • Установите тип ресурса k8s_pod
    • Установите метрику c на тот, который вы создали на шаге 1
    • Установите Group By на pod_name (также созданный на шаге 1)
    • В разделе расширенной агрегации установите выравниватель на sum и период выравнивания на 5m (или то, что вы считаете более подходящим).
    • Настройте условие запускает For дольше 1 минуты, чтобы предупреждение не срабатывало снова и снова. Это также можно настроить в соответствии с вашими требованиями.

Надеюсь, эта информация будет полезной. Если у вас есть какие-либо вопросы, дайте мне знать в комментариях.

...