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 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 vérifier si vous disposez des autorisations requises pour exécuter les commandes
kubectl
, utilisez la commandekubectl auth can-i
. Par exemple, pour vérifier 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.
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 :
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.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 colonneNamespace
dans 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 à 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 sectionEvents
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
Consultez Effectuer une analyse historique avec Cloud Logging (page suivante de cette série).
Découvrez comment ces concepts s'appliquent dans l'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 obtenir une assistance supplémentaire, y compris des conseils sur les sujets suivants :
- Ouvrez une demande d'assistance en contactant le service client Google Cloud.
- Obtenir de l'aide de la communauté en posant des questions sur Stack Overflow et en utilisant le tag
google-kubernetes-engine
pour rechercher des problèmes similaires. Vous pouvez également rejoindre le canal Slack#kubernetes-engine
pour obtenir de l'aide auprès de la communauté. - Signaler des bugs ou demander des fonctionnalités à l'aide de l'outil public de suivi des problèmes.