Kubectl est l'interface en ligne de commande indispensable pour gérer des clusters Kubernetes. Que tu sois débutant ou ops confirmé, maîtriser cet outil fait toute la différence au quotidien. En 2026, avec l'explosion des déploiements cloud-native, connaître les bonnes commandes kubectl n'est plus optionnel.
Ce guide rassemble les 50 commandes essentielles, organisées par cas d'usage. Tu y trouveras tout ce qu'il faut pour créer, surveiller, déboguer et scaler tes applications sans jamais quitter ton terminal.
Les bases : navigation et information
Avant d'opérer sur ton cluster, tu dois savoir où tu es et ce qui s'y passe. Ces commandes sont tes yeux sur l'infrastructure.
Lister les ressources : kubectl get pods affiche tous les pods du namespace courant. Ajoute -A pour voir tous les namespaces ou -o wide pour plus de détails comme le node hôte.
Obtenir des informations détaillées : kubectl describe pod mon-pod te donne l'état complet, les événements récents et les raisons d'échec éventuelles. C'est ta première ligne de défense quand quelque chose cloche.
Consulter les logs : kubectl logs mon-pod affiche les logs d'un conteneur. Ajoute -f pour suivre en temps réel ou --previous pour voir les logs d'un pod redémarré.
Exécuter des commandes dans un pod : kubectl exec -it mon-pod -- /bin/sh ouvre un shell interactif. Pratique pour déboguer ou inspecter le filesystem d'un conteneur.
Gestion des déploiements et services
Créer et modifier des applications sur Kubernetes passe par les déploiements et services. Ces commandes te permettent de gérer le cycle de vie complet.
Créer un déploiement : kubectl create deployment mon-app --image=nginx:latest lance rapidement une application. Pour plus de contrôle, utilise un fichier YAML avec kubectl apply -f deployment.yaml.
Scaler un déploiement : kubectl scale deployment mon-app --replicas=5 passe instantanément à 5 replicas. Kubernetes s'occupe de créer ou supprimer les pods nécessaires.
Mettre à jour une image : kubectl set image deployment/mon-app mon-app=nginx:1.21 déclenche un rolling update vers la nouvelle version. Tu peux suivre la progression avec kubectl rollout status deployment/mon-app.
kubectl rollout undo deployment/mon-app annule le dernier déploiement en cas de problème. Un sauvegarde en quelques secondes.
Exposer un service : kubectl expose deployment mon-app --port=80 --type=LoadBalancer crée un service accessible de l'extérieur. Les types possibles sont ClusterIP, NodePort, LoadBalancer et ExternalName.
Configuration et secrets
Les applications ont besoin de configuration et de données sensibles. Kubernetes gère ça via ConfigMaps et Secrets.
Créer un ConfigMap : kubectl create configmap ma-config --from-literal=cle=valeur ou --from-file=config.env pour charger depuis un fichier.
Créer un Secret : kubectl create secret generic mon-secret --from-literal=password=motdepasse. Les secrets sont encodés en base64 mais pas chiffrés par défaut — pense à activer le chiffrement au repos.
Lister et visualiser : kubectl get configmaps et kubectl get secrets. Pour voir le contenu : kubectl describe configmap ma-config ou kubectl get secret mon-secret -o yaml.
Éditer à la volée : kubectl edit configmap ma-config ouvre l'éditeur par défaut pour modifier une ressource existante sans recréer de fichier YAML.
Débogage et troubleshooting
Quand ça ne marche pas, ces commandes te sauvent la vie. Le débogage Kubernetes demande méthode et les bons outils.
Vérifier les événements : kubectl get events --sort-by='.lastTimestamp' montre ce qui s'est passé sur le cluster. Ajoute --field-selector type=Warning pour ne voir que les problèmes.
Port-forward local : kubectl port-forward pod/mon-pod 8080:80 redirige le port 80 du pod vers ton localhost:8080. Idéal pour tester un service sans l'exposer publiquement.
Copier des fichiers : kubectl cp mon-pod:/chemin/fichier.txt ./local.txt copie depuis le pod vers ta machine. Fonctionne aussi dans l'autre sens pour injecter des fichiers.
Top et métriques : kubectl top pod affiche la consommation CPU/mémoire (nécessite metrics-server). kubectl top node fait de même pour les nœuds.
Administration du cluster
Ces commandes s'adressent aux administrateurs et ops qui gèrent l'infrastructure Kubernetes elle-même.
Informations cluster : kubectl cluster-info affiche les endpoints du master et des services internes. kubectl version donne les versions client et serveur.
Gestion des nœuds : kubectl get nodes liste tous les workers. kubectl cordon mon-node empêche de nouveaux pods de s'y déployer. kubectl drain mon-node vide le nœud pour maintenance.
Namespaces : kubectl create namespace prod crée un nouvel environnement. kubectl config set-context --current --namespace=prod bascule ton contexte par défaut.
Contextes multiples : kubectl config get-contexts liste tes clusters configurés. kubectl config use-context mon-cluster change de cible instantanément.
Les commandes avancées
Pour aller plus loin, ces commandes moins connues mais très puissantes.
Run temporaire : kubectl run debug --rm -it --image=busybox -- /bin/sh lance un pod éphémère pour tester le réseau ou debuguer, supprimé automatiquement à la sortie.
Label et sélecteurs : kubectl label pods mon-pod env=prod ajoute un label. Combine avec -l env=prod sur d'autres commandes pour filtrer.
Annotations : kubectl annotate deployment mon-app description='Mon application' ajoute des métadonnées non filtrables.
Attendre une condition : kubectl wait --for=condition=ready pod/mon-pod --timeout=60s bloque jusqu'à ce que la condition soit remplie. Pratique dans les scripts CI/CD.
Questions fréquentes
- Quelle est la différence entre kubectl create et kubectl apply ?
- kubectl create crée une ressource une seule fois et échoue si elle existe déjà. kubectl apply gère l'état déclaratif : il crée la ressource si elle n'existe pas, ou la met à jour si elle existe. Pour la gestion quotidienne, privilégie apply.
- Comment voir les logs de tous les pods d'un déploiement ?
- Utilise le label du déploiement : kubectl logs -l app=mon-app --tail=100. Tu peux aussi utiliser kubectl logs deployment/mon-app qui sélectionne automatiquement les pods du déploiement.
- Comment entrer dans un conteneur qui n'a pas de shell ?
- Si l'image est basée sur distroless ou scratch, tu ne peux pas y entrer directement. Alternative : kubectl debug qui injecte un conteneur debug ephemeral dans le même namespace réseau.
- Pourquoi kubectl top ne fonctionne pas ?
- Cette commande nécessite que metrics-server soit installé sur le cluster. Vérifie avec kubectl get pods -n kube-system | grep metrics. Si absent, installe-le avec les manifests officiels.
- Comment annuler un déploiement en cours ?
- kubectl rollout pause deployment/mon-app met le déploiement en pause. kubectl rollout resume le relance. Pour revenir en arrière complètement : kubectl rollout undo deployment/mon-app.
Maîtriser ces 50 commandes kubectl te donne un contrôle total sur tes clusters Kubernetes. Commence par les bases (get, describe, logs), puis progressivement intègre les commandes de gestion et de débogage.
L'astuce ? Crée-toi des alias pour les plus fréquentes : alias k='kubectl', alias kg='kubectl get', alias kd='kubectl describe'. Ton productivité explosera.
Pour aller plus loin, consulte la documentation officielle kubectl et garde ce guide sous la main. Kubernetes n'aura plus de secrets pour toi.