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.
L’essentiel
# Basculer de cluster et vérifier l'accès
kubectl config use-context <context>
kubectl cluster-info
# Afficher les ressources (la réponse 80/20)
kubectl get pods
kubectl get nodes
kubectl get all -n <namespace>
kubectl describe pod <name>
# Logs et exec
kubectl logs <pod>
kubectl logs -f <pod>
kubectl exec -it <pod> -- bash
# Déployer et mettre à jour
kubectl apply -f deployment.yaml
kubectl rollout status deployment/<name>
kubectl rollout undo deployment/<name>
# Mettre à l'échelle et supprimer
kubectl scale deployment/<name> --replicas=3
kubectl delete pod <name>
Sur cette page Vue d’ensemble Cluster et config Get et describe : afficher les ressources Logs Exec et commandes interactives Port forwarding Apply, delete et gestion des manifestes Rollout et mises à jour Mise à l’échelle et gestion des ressources Labels et sélecteurs Débogage et dépannage Formats de sortie Espaces de noms Patterns à réutiliser FAQ 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
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
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é).
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.
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 27 octobre 2026 .
Sources officielles consultées pour cet article