Publié le 2 octobre 2019, mis à jour le 18 décembre 2023.

Êtes-vous réellement confiant dans votre utilisation de Kubectl sur des clusters Kubernetes ? Si ce n’est pas le cas, cet article peut vous aider. K8s regroupe beaucoup de ressources et technologies et avoir une base solide de commandes fondamentales de création, suppression et monitoring de ces ressources pourrait vous apporter un gain de temps considérable. 

Un peu de contexte : Kubectl ?

“Kubectl est une interface en ligne de commande qui permet d’exécuter des commandes sur des clusters Kubernetes”. C’est avec cela que l’on va pouvoir effectuer diverses opérations sur notre cluster.

Kubectl dépend d’une kubeconfig. Il s’agit d’un fichier de configuration d’accès à un ou plusieurs clusters. On parlera alors de context, pour savoir sur quel cluster est configuré notre commande Kubectl, on peut utiliser :

  • Kubectl config current-context

Ou bien si l’on veut changer de clusters dans notre config, on peut utiliser :

  • Kubectl config use-context

Commandes de monitoring Kubectl

  • Kubectl get pods

Cette commande permet de lister les pods présents sur le cluster Kubernetes. Cette commande fonctionne pour tous les types de ressources Kubernetes: pods, services, deployments, cronjobs, events, ingresses, etc... On peut aussi ajouter des paramètres: 

--all-namespaces : Liste toutes les ressources de tous les namespaces.

-o wide : Liste toutes les ressources avec plus de détails.

  • Kubectl describe pod

La commande describe donne un affichage verbeux du pod contrairement au get et affichage basique. Cela permet d’avoir les events, utile quand un pod ne démarre pas. 

Ex : Kubectl describe pods my-pod.

  • Kubectl logs [-f] POD [-c CONTENEUR]

Cette commande affiche les logs de votre POD. On peut rajouter l’option -c conteneur lorsque l’on veut afficher les logs d’un pod multi-conteneur. La commande -f permet d’afficher la sortie des logs en continue (stream)

Exemple: Kubectl logs -f my_pod -c my_app

- Stream les logs du containeur my_app sur le pod my_pod.

  • Kubectl top pod POD_NAME --containers

Affiche les métriques pour un pod donné et ses conteneurs au sein d’un cluster Kubernetes

Commandes de création/suppression Kubectl

  • Kubectl create -f FICHIER

Créer une ou plusieurs ressources depuis votre fichier ou dossier.

  • Kubectl apply -f FICHIER

Applique un changement de configuration à une ressource depuis votre fichier.

  • Kubectl delete (-f FICHIER | TYPE [PREFIXE_NOM | NOM])

Supprime une ou plusieurs ressources Kubernetes à partir d’un fichier de configuration ou bien directement à partir des noms des ressources.

Ex: Kubectl delete my_pod (détruit le pod sur le cluster portant le nom my_pod)

  • Kubectl port-forward POD [PORT_LOCAL:]PORT_DISTANT

Permet d’exposer un port local vers le port d’un POD qui est en train de tourner sur le cluster Kubernetes. Utile pour débugger.

Ex : Kubectl port-forward my_pod 80:3000 (expose le port 3000 du pod my_pod sur notre port local 80)

  • Kubectl run NOM --image=image [--env=”cle=valeur”] [--port=port] [--replicas=replicas]

Exécute dans la ressource dans le cluster Kubernetes. 

Exemple : Kubectl run -i --tty busybox --image=busybox -- sh

- Exécute un pod comme un shell interactif

Voici les commandes de base pour Kubernetes et Kubectl. N’hésitez pas à nous contacter si vous avez des questions ou que vous souhaitez que nous ajoutions certaines commandes à l’article. Je vous conseille également d'aller lire cet article concernant les "tips and tricks" de Kubernetes pour améliorer votre productivité avec Kubernetes. Pour aller plus loin au niveau de la conteneurisation, je vous invite à consulter cet article concernant les commandes de docker et docker-compose à connaître.