Поделиться через


Использование событий Kubernetes для устранения неполадок в службе Azure Kubernetes (AKS)

В этой статье показано, как использовать события Kubernetes для мониторинга и устранения неполадок в кластерах Службы Azure Kubernetes (AKS).

Что такое события Kubernetes?

События являются одним из самых важных источников для мониторинга и устранения неполадок в Kubernetes. Они захватывают и записывают сведения о жизненном цикле различных объектов Kubernetes, таких как поды, узлы, службы и развертывания. Отслеживая события, вы можете получить представление о действиях кластера, определить проблемы и эффективно устранять неполадки.

События Kubernetes не сохраняются в течение жизненного цикла кластера, так как нет механизма хранения. События доступны только через час после создания события. Чтобы хранить события в течение более длительного периода времени, включите аналитику контейнеров.

Объекты событий Kubernetes

В следующей таблице перечислены некоторые ключевые объекты событий Kubernetes:

Имя поля Описание
type Тип основан на серьезности события:
Предупреждающие события сигнализируют о потенциально проблематичных ситуациях, таких как повторный сбой пода или узел, исчерпывающий ресурсы. Они требуют внимания, но могут не привести к немедленному сбою.
Обычные события представляют собой обычные операции, такие как запланированный модуль pod или масштабирование развертывания. Обычно они указывают на работоспособное поведение кластера.
причина Причина создания события. Например, FailedScheduling или CrashLoopBackoff.
message Читаемое человеком сообщение, описывающее событие.
namespace Пространство имен объекта Kubernetes, с которым связано событие.
firstSeen Время, когда впервые было замечено событие.
lastSeen Метка времени последнего фиксирования события.
контроллерОтчетности Имя контроллера, сообщающего о событии. Например: kubernetes.io/kubelet.
object Имя объекта Kubernetes, с которым связано событие.

Дополнительные сведения см. в официальной документации Kubernetes.

Просмотр событий Kubernetes

Перечислите все события в вашем кластере, используя команду kubectl get events.

Предположим, что кластер уже создан и доступен (в соответствии с требованиями документации), получите учетные данные для доступа к кластеру (обратите внимание, что установлен флаг --overwrite-existing, чтобы избежать ошибок kubeconfig).

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --overwrite-existing

Теперь перечислите все события в кластере:

kubectl get events

Результаты:

LAST SEEN   TYPE      REASON              OBJECT                      MESSAGE
xxm         Normal    Scheduled           pod/my-pod-xxxxx            Successfully assigned default/my-pod-xxxxx to aks-nodepoolxx-xxxxxxx-vmss000000
xxm         Normal    Pulled              pod/my-pod-xxxxx            Container image "nginx" already present on machine
xxm         Normal    Created             pod/my-pod-xxxxx            Created container nginx
xxm         Normal    Started             pod/my-pod-xxxxx            Started container nginx
...

Просмотрите события конкретного pod, сначала найдите имя pod, а затем используйте команду kubectl describe pod.

Вывод списка модулей pod в текущем пространстве имен:

kubectl get pods

Результаты:

NAME                             READY   STATUS    RESTARTS   AGE
my-pod-xxxxx                     1/1     Running   0          xxm
nginx-deployment-xxxxx           1/1     Running   0          xxm
...

Замените <pod-name> ниже фактическим именем pod. Для автоматизации вот пример для первого pod в списке:

POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}")
kubectl describe pod $POD_NAME

Лучшие практики по диагностированию проблем с событиями

Фильтрация событий для релевантности

В кластере AKS могут работать различные пространства имен и службы. Фильтрация событий на основе типа объекта, пространства имен или причины может помочь сузить результаты до наиболее релевантной информации.

Например, можно использовать следующую команду для фильтрации событий в пространстве имен по умолчанию:

kubectl get events --namespace default

Автоматизация уведомлений о событиях

Чтобы обеспечить своевременное реагирование на критические события в кластере AKS, настройте автоматические уведомления. Azure предлагает интеграцию с службами мониторинга и оповещениями, такими как Azure Monitor. Оповещения можно настроить для активации на основе определенных шаблонов событий. Таким образом, вы сразу же узнаете о важных проблемах, требующих внимания.

Регулярный обзор событий

Регулярно просматривайте события в кластере AKS. Этот упреждающий подход поможет выявить тенденции, поймать потенциальные проблемы в начале и предотвратить эскалацию. Оставаясь на вершине событий, вы можете поддерживать стабильность и производительность приложений.

Дальнейшие шаги

Теперь, когда вы понимаете события Kubernetes, вы можете продолжить мониторинг и отслеживание, включив аналитику контейнеров.