Partilhar via


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

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

O que são eventos do Kubernetes?

Os eventos são uma das fontes mais proeminentes para monitorar e solucionar problemas no Kubernetes. Eles capturam e registam informações sobre o ciclo de vida de vários objetos do Kubernetes, como pods, nodes, serviços e implementações. Ao monitorar eventos, você pode obter visibilidade das atividades do cluster, identificar problemas e solucionar problemas de forma eficaz.

Os eventos do Kubernetes não persistem durante todo o ciclo de vida do cluster, pois não há nenhum mecanismo de retenção. Os eventos só estão disponíveis durante uma hora após a geração do evento. Para armazenar eventos por um período de tempo maior, habilite Container insights.

Objetos de evento do Kubernetes

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

Nome do campo Descrição
tipo O tipo é baseado na gravidade do evento:
Os eventos de aviso sinalizam situações potencialmente problemáticas, como um pod a falhar repetidamente ou um nó a ficar sem recursos. Requerem atenção, mas podem não resultar em falha imediata.
Os eventos normais representam operações de rotina, como um pod a ser agendado ou um escalonamento de implantação. Eles geralmente indicam um comportamento saudável do agrupamento.
razão A razão pela qual o evento foi gerado. Por exemplo, FailedScheduling ou CrashLoopBackoff.
mensagem Uma mensagem legível por humanos que descreve o evento.
espaço de nomes O namespace do objeto Kubernetes ao qual o evento está associado.
primeira vez visto Carimbo de data/hora quando o evento foi observado pela primeira vez.
visto pela última vez Data e hora de quando o evento foi observado pela última vez.
controlador de relatórios O nome do controlador que relatou o evento. Por exemplo, kubernetes.io/kubelet.
objecto O nome do objeto Kubernetes ao qual o evento está associado.

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

Ver eventos do Kubernetes

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

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

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

Agora liste todos os eventos no 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
...

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

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

Práticas recomendadas para solução de problemas com eventos

Filtrando eventos por relevância

Você pode ter vários namespaces e serviços em execução no cluster do AKS. A filtragem de 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 dentro do namespace padrão:

kubectl get events --namespace default

Automatizando notificações de eventos

Para garantir uma resposta atempada a eventos críticos no seu cluster 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 disparar com base em padrões de eventos específicos. Desta forma, é imediatamente informado sobre questões cruciais que requerem atenção.

Revisão regular de eventos

Crie o hábito de rever regularmente os eventos no seu cluster AKS. Essa abordagem proativa pode ajudá-lo a identificar tendências, detetar problemas potenciais com antecedência e evitar escaladas. Ao manter-se a par dos eventos, pode manter a estabilidade e o desempenho das suas aplicações.

Próximos passos

Agora que você entende os eventos do Kubernetes, pode continuar sua jornada de monitoramento e observabilidade habilitando os insights do Container.