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 actuel de votre cluster. L'apprentissage de ces commandes vous permet de recueillir 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 opérateurs de plate-forme qui doivent effectuer des vérifications d'état approfondies des clusters, gérer les ressources et résoudre les problèmes d'infrastructure de manière précise. Il est également essentiel pour les développeurs d'applications de déboguer le comportement des applications, d'inspecter les journaux et les événements des pods, et de 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 contenu Google Cloud , 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 vérifier si vous disposez des autorisations requises pour exécuter les commandes kubectl, utilisez la commande kubectl auth can-i. Par exemple, pour vérifier 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.

Obtenir une vue d'ensemble de 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 enquête 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 enquête supplémentaire. Voici quelques états courants que vous pouvez rencontrer :

    • Running : état de fonctionnement normal.
    • Pending : le pod est en attente de planification sur un nœud.
    • CrashLoopBackOff : les conteneurs du pod plantent en boucle à plusieurs reprises, 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 d'utilisation de la commande kubectl get. Vous pouvez également utiliser cette 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 d'informations. Par exemple, un problème peut être un pod dont l'état n'est pas 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 n'êtes pas sûr de 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 à consulter lorsque vous résolvez un problème lié à un Nest Pod :

  • Status : état actuel du pod.
  • Conditions : état de santé et disponibilité globale du pod.
  • Restart Count : nombre de fois où les conteneurs du pod ont redémarré. 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 les éventuelles erreurs survenues. La section Events contient souvent des indices directs sur la raison de l'échec d'un pod.

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.

Étapes suivantes