Compartilhar via


Usar eventos do Kubernetes para solução de problemas no AKS (Serviço de Kubernetes do Azure)

Este artigo mostra como usar os eventos do Kubernetes para monitorar e solucionar problemas nos seus clusters do AKS (Serviço de Kubernetes do Azure).

O que são eventos do Kubernetes?

Os eventos são uma das fontes mais proeminentes para monitoramento e solução de problemas no Kubernetes. Eles capturam e registram informações sobre o ciclo de vida de vários objetos do Kubernetes, tais como pods, nós, serviços e implantações. Ao monitorar eventos, você pode obter visibilidade das atividades do seu cluster, identificar e solucionar problemas com eficiência.

Os eventos do Kubernetes não persistem em todo o ciclo de vida do cluster, pois não há nenhum mecanismo de retenção. Os eventos só ficam disponíveis por uma hora após a geração do evento. Para armazenar os eventos por um período mais longo, habilite os Insights do contêiner.

Objetos de eventos do Kubernetes

A seguinte tabela lista alguns dos principais objetos de evento do Kubernetes:

Nome do campo Descrição
tipo O tipo é baseado na gravidade do evento:
Os eventos do tipo Aviso sinalizam situações potencialmente problemáticas, como falha repetida de um pod ou recursos insuficientes de um nó. Eles exigem atenção, mas podem não resultar em falha imediata.
Os eventos do tipo Normal representam operações de rotina, como agendamento de um pod ou escala vertical de uma implantação. Eles geralmente indicam um comportamento de cluster íntegro.
reason O motivo pelo qual o evento foi gerado. Por exemplo, FailedScheduling ou CrashLoopBackoff.
mensagem Uma mensagem legível por humanos que descreve o evento.
espaço para nome O namespace do objeto de Kubernetes ao qual o evento está associado.
firstSeen Carimbo de data/hora em que o evento foi primeiramente observado.
lastSeen Carimbo de data/hora de quando o evento foi observado pela última vez.
reportingController O nome do controlador que relatou o evento. Por exemplo, kubernetes.io/kubelet.
objeto O nome do objeto de Kubernetes ao qual o evento está associado.

Para obter mais informações, confira a documentação oficial do Kubernetes.

Exibir os eventos do Kubernetes

Liste todos os eventos no cluster usando o comando kubectl get events.

Supondo que seu cluster já esteja criado e disponível (por pré-requisitos do doc), obtenha credenciais (observe que o --overwrite-existing sinalizador está definido para evitar erros de kubeconfig):

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

Agora, liste todos os eventos em seu cluster:

kubectl get events

Resultados:

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
...

Inspecione os eventos de um pod específico primeiro encontrando o nome do pod e, em seguida, usando o comando kubectl describe pod.

Liste os pods no namespace atual:

kubectl get pods

Resultados:

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

Substitua <pod-name> abaixo pelo nome real do pod. Para automação, aqui está um exemplo para o primeiro pod da lista:

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

Melhores práticas para solucionar problemas com eventos

Filtragem de eventos por relevância

Você pode ter vários namespaces e serviços em execução no cluster do AKS. Filtrar os eventos com base no tipo de objeto, namespace ou motivo pode ajudar a restringir os resultados às informações mais relevantes.

Por exemplo, você pode usar o seguinte comando para filtrar eventos no namespace padrão:

kubectl get events --namespace default

Automatização de notificações de eventos

Para garantir uma resposta oportuna a eventos críticos em seu cluster do AKS, configure notificações automatizadas. O Azure oferece integração com serviços de monitoramento e alerta, como o Azure Monitor. Você pode configurar alertas para serem disparados com base em padrões de eventos específicos. Dessa forma, você é informado imediatamente sobre problemas cruciais que exigem atenção.

Revisão regular de eventos

Crie o hábito de revisar regularmente os eventos em seu cluster do AKS. Essa abordagem proativa pode ajudá-lo a identificar tendências, capturar possíveis problemas com antecedência e evitar escalonamentos. Ao ficar por dentro dos eventos, você pode manter a estabilidade e o desempenho de seus aplicativos.

Próximas etapas

Agora que você entende como funcionam os eventos do Kubernetes, continue sua jornada de monitoramento e observabilidade habilitando os Insights do contêiner.