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
kubectlpour communiquer avec votre cluster :gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATIONRemplacez les éléments suivants :
CLUSTER_NAME: nom du clusterLOCATION: 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
kubectlcommandes, utilisez lakubectl auth can-icommande. Par exemple, pour voir si vous êtes autorisé à exécuterkubectl get nodes, exécutez la commandekubectl auth can-i get nodes.Si vous disposez des autorisations requises, la commande renvoie
yes. Sinon, elle renvoieno.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 :
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 nodesLe 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.1785003Tout état autre que
Readynécessite une investigation supplémentaire.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-namespacesLe 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 4d23hTout état autre que
Runningné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èmesNAMESPACE_NAME: espace de noms dans lequel se trouve le pod Si vous ne savez pas quel est l'espace de noms, consultez la colonneNamespacedans le résultat de la commandekubectl 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 podConditions: état général et disponibilité du podRestart 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 sectionEventsest 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
Consultez Effectuer une analyse historique avec Cloud Logging (page suivante de cette série).
Découvrez comment ces concepts sont appliqués dans le exemple de scénario de dépannage.
Pour obtenir des conseils sur la résolution de problèmes spécifiques, consultez les guides de dépannage de GKE.
Si vous ne trouvez pas de solution à votre problème dans la documentation, consultez Obtenir de l'aide pour bénéficier d'une assistance supplémentaire, y compris des conseils sur les sujets suivants :
- Ouvrir une demande d'assistance en contactant Cloud Customer Care.
- Obtenir de l'aide de la communauté en posant des questions sur Stack Overflow et en utilisant le tag
google-kubernetes-enginepour rechercher des problèmes similaires. Vous pouvez également rejoindre le#kubernetes-enginecanal Slack pour obtenir une assistance supplémentaire de la communauté. - Signaler des problèmes ou demander des fonctionnalités à l'aide de l' outil public de suivi des problèmes.