Examiner l'état d'un cluster avec kubectl

Pour diagnostiquer la cause première des problèmes liés à Google Kubernetes Engine (GKE), il est souvent nécessaire d'inspecter en détail l'état, la configuration et les événements en direct de vos ressources Kubernetes. Pour aller au-delà des symptômes superficiels, vous avez besoin d'outils pour interroger directement le plan de contrôle du cluster et interagir avec lui.

Cette page vous présente les commandes kubectl essentielles pour examiner l'état en direct de votre cluster. En apprenant ces commandes, vous pouvez collecter des informations détaillées directement à partir du plan de contrôle Kubernetes, ce qui vous aide à comprendre pourquoi un problème se produit.

Ces informations sont importantes pour les administrateurs et les opérateurs de plate-forme qui doivent effectuer des vérifications approfondies de l'état du cluster, gérer les ressources et résoudre les problèmes d'infrastructure à un niveau précis. Elles sont également essentielles pour les développeurs d'applications qui doivent déboguer le comportement des applications, inspecter les journaux et les événements des pods, et vérifier l'état exact de leurs déploiements dans l'environnement Kubernetes. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le Google Cloud contenu, consultez Rôles utilisateur et tâches courantes de GKE.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Installez kubectl.
  • Configurez l'outil de ligne de commande kubectl pour communiquer avec votre cluster :

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=LOCATION
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster
    • LOCATION : emplacement Compute Engine du plan de contrôle de votre cluster Indiquez une région pour les clusters régionaux ou une zone pour les clusters zonaux.
  • Vérifiez vos autorisations. Pour voir si vous disposez des autorisations requises pour exécuter kubectl commandes, utilisez la kubectl auth can-i commande. Par exemple, pour voir si vous êtes autorisé à exécuter kubectl get nodes, exécutez la commande kubectl auth can-i get nodes.

    Si vous disposez des autorisations requises, la commande renvoie yes. Sinon, elle renvoie no.

    Si vous n'êtes pas autorisé à exécuter une commande kubectl, un message d'erreur semblable à celui-ci peut s'afficher :

    Error from server (Forbidden): pods "POD_NAME" is forbidden: User
    "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the
    namespace "default"
    

    Si vous ne disposez pas des autorisations requises, demandez à l'administrateur de votre cluster de vous attribuer les rôles nécessaires.

Découvrez ce qui est en cours d'exécution

La commande kubectl get vous permet d'obtenir une vue d'ensemble de ce qui se passe dans votre cluster. Utilisez les commandes suivantes pour afficher l'état de deux des composants de cluster les plus importants : les nœuds et les pods :

  1. Pour vérifier si vos nœuds sont opérationnels, affichez les détails de tous les nœuds et de leurs états :

    kubectl get nodes
    

    Le résultat ressemble à ce qui suit :

    NAME                                        STATUS   ROLES    AGE     VERSION
    
    gke-cs-cluster-default-pool-8b8a777f-224a   Ready    <none>   4d23h   v1.32.3-gke.1785003
    gke-cs-cluster-default-pool-8b8a777f-egb2   Ready    <none>   4d22h   v1.32.3-gke.1785003
    gke-cs-cluster-default-pool-8b8a777f-p5bn   Ready    <none>   4d22h   v1.32.3-gke.1785003
    

    Tout état autre que Ready nécessite une investigation supplémentaire.

  2. Pour vérifier si vos pods sont opérationnels, affichez les détails de tous les pods et de leurs états :

    kubectl get pods --all-namespaces
    

    Le résultat ressemble à ce qui suit :

    NAMESPACE   NAME       READY   STATUS      RESTARTS   AGE
    kube-system netd-6nbsq 3/3     Running     0          4d23h
    kube-system netd-g7tpl 3/3     Running     0          4d23h
    

    Tout état autre que Running nécessite une investigation supplémentaire. Voici quelques états courants que vous pouvez rencontrer :

    • Running : état opérationnel.
    • Pending : le pod attend d'être programmé sur un nœud.
    • CrashLoopBackOff: les conteneurs du pod plantent en boucle de manière répétée, car l'application démarre, quitte avec une erreur, puis est redémarrée par Kubernetes.
    • ImagePullBackOff : le pod ne peut pas extraire l'image de conteneur.

Les commandes précédentes ne sont que deux exemples de la façon dont vous pouvez utiliser la commande kubectl get. Vous pouvez également utiliser la commande pour en savoir plus sur de nombreux types de ressources Kubernetes. Pour obtenir la liste complète des ressources que vous pouvez explorer, consultez kubectl get dans la documentation Kubernetes.

En savoir plus sur des ressources spécifiques

Une fois que vous avez identifié un problème, vous devez obtenir plus de détails. Par exemple, un pod peut ne pas avoir l'état Running. Pour obtenir plus de détails, utilisez la commande kubectl describe.

Par exemple, pour décrire un pod spécifique, exécutez la commande suivante :

kubectl describe pod POD_NAME -n NAMESPACE_NAME

Remplacez les éléments suivants :

  • POD_NAME : nom du pod qui rencontre des problèmes
  • NAMESPACE_NAME : espace de noms dans lequel se trouve le pod Si vous ne savez pas quel est l'espace de noms, consultez la colonne Namespace dans le résultat de la commande kubectl get pods.

Le résultat de la commande kubectl describe inclut des informations détaillées sur votre ressource. Voici quelques-unes des sections les plus utiles à examiner lorsque vous résolvez un problème lié à un pod :

  • Status : état actuel du pod
  • Conditions : état général et disponibilité du pod
  • Restart Count: nombre de redémarrages des conteneurs du pod Un nombre élevé peut être préoccupant.
  • Events: journal des événements importants qui se sont produits pour ce pod, comme sa programmation sur un nœud, l'extraction de son image de conteneur et la survenue d'erreurs. La section Events est souvent l'endroit où vous pouvez trouver des indices directs sur la raison pour laquelle un pod échoue.

Comme la commande kubectl get, vous pouvez utiliser la commande kubectl describe pour en savoir plus sur plusieurs types de ressources. Pour obtenir la liste complète des ressources que vous pouvez explorer, consultez kubectl describe dans la documentation Kubernetes.

Étape suivante