Partager via


Utiliser les événements Kubernetes pour la résolution des problèmes dans Azure Kubernetes Service (AKS)

Cet article explique comment utiliser les événements Kubernetes pour surveiller et résoudre les problèmes dans vos clusters Azure Kubernetes Service (AKS).

Que sont les événements Kubernetes ?

Les événements sont l’une des sources les plus importantes pour le monitoring et la résolution des problèmes dans Kubernetes. Ils capturent et enregistrent des informations sur le cycle de vie de différents objets Kubernetes, tels que les pods, les nœuds, les services et les déploiements. En monitorant les événements, vous pouvez obtenir une visibilité sur les activités de votre cluster, identifier et résoudre des problèmes efficacement.

Les événements Kubernetes ne persistent pas tout au long du cycle de vie de votre cluster, car il n’y a pas de mécanisme de conservation. Les événements ne sont disponibles que pendant une heure après leur génération. Pour stocker les événements plus longtemps, activez Container Insights.

Objets d’événements Kubernetes

Le tableau suivant liste certains objets d’événements Kubernetes clés :

Nom du champ Descriptif
type Le type est basé sur la gravité de l’événement :
Les événements de type Avertissement signalent des situations potentiellement problématiques, comme la défaillance répétée d’un pod ou un nœud à court de ressources. Ils nécessitent une attention, mais il est possible qu’ils n’entraînent pas de défaillance immédiate.
Les événements de type Normal représentent des opérations de routine, comme un pod en cours de planification ou le scale-up d’un déploiement. Ils indiquent généralement un comportement de cluster sain.
reason Raison pour laquelle l’événement a été généré. Par exemple, FailedScheduling ou CrashLoopBackoff.
message Message lisible par les êtres humains qui décrit l’événement.
espace de noms Espace de noms de l’objet Kubernetes auquel l’événement est associé.
firstSeen Horodateur lorsque l’événement a été observé pour la première fois.
lastSeen Horodateur de la dernière observation de l’événement.
reportingController Nom du contrôleur qui a signalé l’événement. Par exemple : kubernetes.io/kubelet.
object Nom de l’objet Kubernetes auquel l’événement est associé.

Pour plus d’informations, consultez la documentation Kubernetes officielle.

Afficher les événements Kubernetes

Pour lister tous les événements de votre cluster, utilisez la commande kubectl get events.

En supposant que votre cluster est déjà créé et disponible (par prérequis doc), obtenez les informations d’identification (notez que l’indicateur --overwrite-existing est défini pour éviter les erreurs kubeconfig) :

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

Répertoriez maintenant tous les événements de votre cluster :

kubectl get events

Résultats :

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

Pour examiner les événements d’un pod spécifique, recherchez d’abord le nom du pod, puis utilisez la commande kubectl describe pod.

Répertoriez les pods dans le namespace actuel :

kubectl get pods

Résultats :

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

Remplacez <pod-name> ci-dessous par le nom de votre pod réel. Pour l’automatisation, voici un exemple pour le premier pod de la liste :

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

Meilleures pratiques pour la résolution des problèmes relatifs à des événements

Filtrage des événements pour la pertinence

Vous pouvez avoir plusieurs espaces de noms et services en cours d’exécution dans votre cluster AKS. Le filtrage des événements en fonction du type d’objet, de l’espace de noms ou de la raison peut être utile pour afficher uniquement les informations les plus pertinentes dans les résultats.

Par exemple, vous pouvez utiliser la commande suivante pour filtrer les événements dans l’espace de noms par défaut :

kubectl get events --namespace default

Automatisation des notifications d’événements

Pour assurer une réponse rapide aux événements critiques dans votre cluster AKS, configurez des notifications automatisées. Azure offre une intégration avec des services de monitoring et d’alerte tels qu’Azure Monitor. Vous pouvez configurer des alertes pour qu’elles se déclenchent en fonction de modèles d’événements spécifiques. Ainsi, vous êtes immédiatement informé des questions primordiales qui nécessitent une attention particulière.

Évaluation régulière des événements

Prenez l’habitude d’examiner régulièrement des événements dans votre cluster AKS. Cette approche proactive peut vous aider à identifier des tendances, à détecter des problèmes potentiels de manière anticipée et à empêcher les escalades. En maîtrisant les événements, vous pouvez maintenir la stabilité et les performances de vos applications.

Étapes suivantes

Maintenant que vous comprenez les événements Kubernetes, vous pouvez continuer votre parcours de monitoring et d’observabilité en activant Container Insights.