Kubectl quelques commandes utiles pour commencer

Print Friendly, PDF & Email

Pour débuter avec kubernetes, il faut aimer la ligne de commande et on peut y prendre un certain plaisir au fur et à mesure du temps. D’ailleurs, je ne saurais trop vous recommander si vous débuter de ne pas avoir recours aux alias et autres tools qui facilitent l’utilisation ou by-pass la CLI.

Eh oui personnellement je considère qu’il faut passer un peu de temps avec cette cli avant de passer aux tools. D’ailleurs, il y a tellement de tools qu’il vaut mieux se contenter de quelques uns (kubectx, kubens, k9s…).

Commençons

Pour débuter, nous avons bien retenu que pour lister tout objet/ressource dans kubernetes il faut utiliser kubectl get. Maintenant vous pouvez lister tous les objets de bases en utilisant :

kubectl get all

Et pour aller plus loin et récupérer tous les objets communs pour tous les namespaces :

kubectl get all –all-namespaces

Mais comment connaît les ressources justement ?

kubectl api-resources -o wide

Remarquez le -o wide qui permet d’avoir le maximum d’informations sur chacun des objets. On peut utiliser assez souvent cette option, par exemple sur les pods etc.

Et pour connaître l’état des composants principaux de votre cluster (etcd, kubelet etc), vous pouvez réaliser un :

kubectl get componentstatuses

Debugger pour un débutant ?

Débuguer dans un cluster kubernetes demande d’avoir des réflexes. Je vous en livre quelques uns pour commencer et petit à petit vous trouverez vos automatismes.

Là encore la ligne de commande est votre meilleure amie. Bien sûr tout commence par un :

kubectl get pods

Puis une fois le pod identifié, on va pouvoir d’une part regarder l’état de l’objet en question et ses caractéristiques :

Découvrez  Raspberry et Kubernetes : tuto de montage et installation

kubectl describe pods <id_du_pod>

Et si finalement l’erreur mentionnée dans les events du bas de la page vous laisse penser qu’il s’agit d’un problème applicatif, vous pouvez vous référez aux logs du pods.

Si celui ne possède qu’un conteneur :

kubectl logs -f <id-pod>

Mais si vous voulez obtenir les logs d’un conteneur spécifiquement :

kubectl logs <id_pod> <nom_conteneur>

Et pour avoir les logs de tous les conteneurs fusionnés :

kubectl logs <id_pod> --all-containers

Vous pouvez également lister les évènements d’un pod :

kubectl get events <id_pod>

Et pour identifier le contenu du manifest du pod :

kubectl edit pod <id_pod>

Mais souvent il vous faudra revenir à l’objet qui a créé le pod à savoir un deployment, un statefulset ou un cronjob et vous pourrez visualiser aussi son manifest avec la commande edit :

kubectl edit deployment <nom_deployment>

Et pour récupérer le yaml du déploiement dans un fichier au format yaml :

kubectl get deployment <nom_deployment> -o yaml > monfichier.yaml

Mais si vous avez un doute sur la rédaction d’un objet/ressource utilisez explain. Par exemple pour la documentation sur les pods

kubectl explain pod

kubectl explain pod.spec

Si vous lez souhaitez, vous pouvez suivre ma chaine youtube et voir les vidéos relative à cette formation kubernetes gratuite ici.