Vue d’ensemble

kubectl est votre interface vers les clusters Kubernetes. Cet aide-mémoire couvre les commandes que vous utiliserez 90 % du temps : vérifier l’état du cluster, afficher les ressources, consulter et suivre les logs, exécuter des commandes à l’intérieur de conteneurs, faire du port-forwarding, appliquer des manifestes et déboguer. Chaque commande ci-dessous est testée sur Kubernetes 1.30.

Cluster et config

Commande Fonction Exemple
kubectl config view Afficher le fichier kubeconfig actuel kubectl config view
kubectl config use-context <ctx> Basculer vers un contexte de cluster kubectl config use-context prod
kubectl config current-context Imprimer le contexte actif kubectl config current-context
kubectl config get-contexts Lister tous les contextes configurés kubectl config get-contexts
kubectl config set-context <name> --cluster=<cluster> --user=<user> Créer un nouveau contexte kubectl config set-context dev --cluster=kind-dev --user=admin@kind-dev
kubectl cluster-info Afficher l’adresse du serveur API du cluster kubectl cluster-info
kubectl auth can-i <verb> <resource> Vérifier si vous pouvez effectuer une action kubectl auth can-i create deployments --namespace prod

Get et describe : afficher les ressources

Commande Fonction Exemple
kubectl get pods Lister les pods de l’espace de noms actuel kubectl get pods
kubectl get pods -A Lister les pods de tous les espaces de noms kubectl get pods -A
kubectl get pods -n <ns> Lister les pods d’un espace de noms spécifique kubectl get pods -n prod
kubectl get nodes Lister les nœuds du cluster kubectl get nodes
kubectl get services Lister les services kubectl get services ou kubectl get svc
kubectl get deployments Lister les déploiements kubectl get deploy
kubectl get statefulsets Lister les StatefulSets kubectl get statefulsets ou kubectl get sts
kubectl get daemonsets Lister les DaemonSets kubectl get ds
kubectl get jobs Lister les jobs kubectl get jobs
kubectl get cronjobs Lister les CronJobs kubectl get cronjobs
kubectl get pvc Lister les déclarations de volume persistant kubectl get pvc
kubectl get ingress Lister les ressources ingress kubectl get ingress
kubectl get all Lister toutes les ressources communes de l’espace de noms kubectl get all
kubectl get all -A Lister toutes les ressources de tous les espaces de noms kubectl get all -A
kubectl describe pod <name> Afficher les détails complets d’un pod kubectl describe pod web-abc123
kubectl describe node <name> Afficher les détails du nœud et ses conditions kubectl describe node node-1
kubectl describe svc <name> Afficher la configuration et les endpoints du service kubectl describe svc api

Logs

Commande Fonction Exemple
kubectl logs <pod> Afficher les logs du pod sur stdout kubectl logs web-abc123
kubectl logs -f <pod> Afficher les logs en continu (suivi) kubectl logs -f web-abc123
kubectl logs <pod> -c <container> Afficher les logs d’un conteneur spécifique dans un pod kubectl logs web-abc123 -c app
kubectl logs <pod> --previous Afficher les logs du conteneur précédent (arrêté) kubectl logs web-abc123 --previous
kubectl logs -l <label> Afficher les logs des pods correspondant à un label kubectl logs -l app=web
kubectl logs <pod> --tail=50 Afficher seulement les 50 dernières lignes kubectl logs web-abc123 --tail=50
kubectl logs <pod> --since=1h Afficher les logs de la dernière heure kubectl logs web-abc123 --since=1h
kubectl logs <pod> -f -l <label> Afficher les logs en continu de tous les pods avec un label kubectl logs -f -l app=web

Exec et commandes interactives

Commande Fonction Exemple
kubectl exec -it <pod> -- bash Ouvrir un shell bash dans un pod kubectl exec -it web-abc123 -- bash
kubectl exec -it <pod> -- sh Ouvrir un shell (fonctionne dans les images minimales) kubectl exec -it web-abc123 -- sh
kubectl exec -it <pod> -c <container> -- bash Exec dans un conteneur spécifique d’un pod multi-conteneurs kubectl exec -it web-abc123 -c app -- bash
kubectl exec <pod> -- <command> Exécuter une commande sans mode interactif kubectl exec web-abc123 -- ps aux
kubectl exec -it <pod> -- /bin/bash --user=1000 Exec en tant qu’utilisateur différent (UID) kubectl exec -it web-abc123 -- bash --user=1000

Port forwarding

Commande Fonction Exemple
kubectl port-forward pod/<name> 8080:8080 Rediriger le port local 8080 vers le port 8080 du pod kubectl port-forward pod/web-abc123 8080:8080
kubectl port-forward svc/<name> 5432:5432 Rediriger vers un service (se connecte à n’importe quel pod qui le soutend) kubectl port-forward svc/database 5432:5432
kubectl port-forward pod/<name> 9000:8080 Rediriger le port local 9000 vers le port 8080 du pod kubectl port-forward pod/app 9000:8080
kubectl port-forward <pod> 0:8080 Assigner un port local aléatoire kubectl port-forward app 0:8080
kubectl port-forward pod/<name> 8080:8080 --address 0.0.0.0 Permettre aux clients externes de se connecter (pas seulement localhost) kubectl port-forward pod/api 8080:8080 --address 0.0.0.0

Apply, delete et gestion des manifestes

Commande Fonction Exemple
kubectl apply -f <file.yaml> Créer ou mettre à jour une ressource à partir d’un manifest kubectl apply -f deployment.yaml
kubectl apply -f <dir>/ Appliquer tous les fichiers YAML d’un répertoire kubectl apply -f manifests/
kubectl apply -f <url> Appliquer un manifest à partir d’une URL kubectl apply -f https://example.com/config.yaml
kubectl apply --dry-run=client -f <file> Aperçu de ce qui serait appliqué sans effectuer de modifications kubectl apply --dry-run=client -f deployment.yaml
kubectl apply --dry-run=server -f <file> Exécution de test côté serveur (validation du webhook) kubectl apply --dry-run=server -f deployment.yaml
kubectl delete pod <name> Supprimer un pod kubectl delete pod web-abc123
kubectl delete -f <file.yaml> Supprimer toutes les ressources d’un manifest kubectl delete -f deployment.yaml
kubectl delete <resource-type> -l <label> Supprimer les ressources correspondant à un label kubectl delete pods -l app=web
kubectl delete <resource-type> --all Supprimer toutes les ressources d’un type de l’espace de noms actuel kubectl delete pods --all
kubectl delete <resource-type> --all -A Supprimer toutes les ressources d’un type de tous les espaces de noms kubectl delete pods --all -A

Rollout et mises à jour

Commande Fonction Exemple
kubectl rollout status deployment/<name> Surveiller la progression du déploiement kubectl rollout status deployment/web
kubectl rollout history deployment/<name> Afficher l’historique des révisions kubectl rollout history deployment/web
kubectl rollout undo deployment/<name> Revenir à la révision précédente kubectl rollout undo deployment/web
kubectl rollout undo deployment/<name> --to-revision=3 Revenir à une révision spécifique kubectl rollout undo deployment/web --to-revision=3
kubectl set image deployment/<name> <container>=<new-image> Mettre à jour l’image du conteneur kubectl set image deployment/web web=nginx:1.26 && kubectl annotate deployment/web kubernetes.io/change-cause="nginx 1.26"
kubectl patch deployment/<name> -p '{"spec":{"replicas":5}}' Corriger une ressource en ligne kubectl patch deployment/web -p '{"spec":{"replicas":5}}'

Mise à l’échelle et gestion des ressources

Commande Fonction Exemple
kubectl scale deployment/<name> --replicas=3 Mettre à l’échelle un déploiement à un nombre de réplicas kubectl scale deployment/web --replicas=3
kubectl scale statefulset/<name> --replicas=5 Mettre à l’échelle un StatefulSet kubectl scale statefulset/db --replicas=5
kubectl top nodes Afficher l’utilisation CPU et mémoire par nœud (requiert metrics-server) kubectl top nodes
kubectl top pod Afficher l’utilisation CPU et mémoire par pod kubectl top pod
kubectl top pod -l <label> Afficher l’utilisation des pods avec un label kubectl top pod -l app=web

Labels et sélecteurs

Commande Fonction Exemple
kubectl label pod <name> <key>=<value> Ajouter un label à un pod kubectl label pod web-abc tier=frontend
kubectl label pod <name> <key>=<value> --overwrite Mettre à jour un label existant kubectl label pod web-abc tier=backend --overwrite
kubectl label pod <name> <key>- Supprimer un label d’un pod kubectl label pod web-abc tier-
kubectl label nodes <node> <key>=<value> Étiqueter un nœud kubectl label nodes node-1 disktype=ssd
kubectl get pods -l <key>=<value> Obtenir les pods correspondant à un label kubectl get pods -l app=web
kubectl get pods -l <key>!=<value> Obtenir les pods où le label ne correspond pas kubectl get pods -l app!=db
kubectl get pods -l '<key> in (val1, val2)' Obtenir les pods où le label est dans une liste kubectl get pods -l 'tier in (frontend, backend)'

Débogage et dépannage

Commande Fonction Exemple
kubectl describe pod <name> Afficher les événements et l’état d’un pod kubectl describe pod web-abc123
kubectl get events -n <namespace> Lister les événements récents du cluster kubectl get events -n prod
kubectl get events -n <namespace> --sort-by='.lastTimestamp' Trier les événements par heure kubectl get events -n prod --sort-by='.lastTimestamp'
kubectl debug pod/<name> Démarrer un conteneur de débogage dans l’espace de noms du pod (Kubernetes 1.16+) kubectl debug pod/web-abc123
kubectl debug pod/<name> -it --image=busybox Déboguer un pod avec une image spécifique kubectl debug pod/app -it --image=busybox
kubectl logs <pod> --previous Afficher les logs d’un conteneur qui s’est arrêté kubectl logs web-abc123 --previous
kubectl top pod <name> Afficher CPU et mémoire d’un pod spécifique kubectl top pod web-abc123
kubectl api-resources Lister tous les types de ressources disponibles dans le cluster kubectl api-resources
kubectl get pod/<name> -o yaml Exporter la définition d’un pod en YAML kubectl get pod/web-abc123 -o yaml

Formats de sortie

Commande Fonction Exemple
kubectl get pods -o yaml Sortie en YAML kubectl get pods -o yaml
kubectl get pods -o json Sortie en JSON kubectl get pods -o json
kubectl get pods -o wide Inclure les colonnes supplémentaires (nœud, IP, etc.) kubectl get pods -o wide
kubectl get pods -o name Sortie seulement les noms des ressources kubectl get pods -o name
kubectl get pods -o jsonpath='{.items[*].metadata.name}' Extraire les champs spécifiques avec JSONPath kubectl get pods -o jsonpath='{.items[*].metadata.name}'
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase Définir des colonnes personnalisées kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,IMAGE:.spec.containers[0].image
kubectl get pods --no-headers Masquer la ligne d’en-tête kubectl get pods --no-headers
kubectl get pods -L tier,app Afficher les valeurs de labels spécifiques en tant que colonnes kubectl get pods -L tier,app

Espaces de noms

Commande Fonction Exemple
kubectl get ns Lister tous les espaces de noms kubectl get ns
kubectl create namespace <name> Créer un espace de noms kubectl create namespace prod
kubectl delete namespace <name> Supprimer un espace de noms (et toutes les ressources dedans) kubectl delete namespace staging
kubectl config set-context --current --namespace=<namespace> Définir l’espace de noms par défaut pour le contexte actuel kubectl config set-context --current --namespace=prod
kubectl get pods -n <namespace> Interroger un espace de noms spécifique kubectl get pods -n prod
kubectl get pods -A Interroger tous les espaces de noms à la fois kubectl get pods -A

Patterns à réutiliser

# Surveiller un déploiement en temps réel
kubectl rollout status deployment/<name> --watch

# Obtenir le YAML d'une ressource en cours d'exécution pour éditer
kubectl get deployment/<name> -o yaml | vim - | kubectl apply -f -

# Trouver les pods dans un état d'échec
kubectl get pods --field-selector=status.phase!=Running

# Obtenir tous les événements du cluster triés par heure
kubectl get events -A --sort-by='.lastTimestamp'

# Afficher les logs en continu de plusieurs pods avec un label
kubectl logs -f -l app=<label> --all-containers=true --max-log-requests=10

# Afficher et modifier les limites de ressources
kubectl set resources deployment/<name> --limits=cpu=500m,memory=512Mi --requests=cpu=250m,memory=256Mi

# Obtenir l'adresse IP d'un service
kubectl get svc <name> -o jsonpath='{.spec.clusterIP}'

# Exporter le manifest d'un pod vers un fichier pour sauvegarde
kubectl get pod/<name> -o yaml > backup.yaml

FAQ

Comment basculer entre contextes Kubernetes ?

Exécutez kubectl config use-context <context-name> pour basculer. Listez les contextes disponibles avec kubectl config get-contexts. Consultez le contexte actuel via kubectl config current-context.

Quelle est la différence entre apply et create ?

create échoue si la ressource existe ; apply crée ou met à jour. Utilisez apply en production pour pouvoir relancer vos manifestes de manière fiable. Pour tracer pourquoi un déploiement s’est produit, définissez l’annotation kubernetes.io/change-cause (l’ancien flag --record est supprimé).

Comment afficher les logs en direct d’un pod ?

Utilisez kubectl logs -f <pod> pour les logs en direct d’un pod, ou kubectl logs -f -l app=myapp pour afficher en continu les logs de tous les pods correspondant à un label. Ajoutez --previous pour voir les logs d’un conteneur qui s’est arrêté.

Puis-je exécuter une commande à l’intérieur d’un conteneur en cours d’exécution ?

Oui : kubectl exec -it <pod> -- /bin/bash (ou sh pour les images minimales). Pour les pods multi-conteneurs, spécifiez le conteneur : kubectl exec -it <pod> -c <container> -- bash. Utilisez --user pour exécuter en tant qu’utilisateur différent.

Comment faire un port-forward à partir d’un pod ?

Exécutez kubectl port-forward <pod> 8080:8080 pour rediriger le port 8080 local vers le port 8080 du pod. Utilisez --address 0.0.0.0 pour permettre l’accès distant. Pour les services : kubectl port-forward svc/<service> 5432:5432.

Comment ce guide a été vérifié

Rédigé à la main à partir de la documentation officielle, chaque commande revérifiée, puis relu une seconde fois avant publication. Dernière relecture le .

Sources officielles consultées pour cet article

Share.

Les commentaires sont fermés.