Aller au contenu
Conteneurs & Orchestration high

Hub des guides pour maîtriser kubectl de A à Z

12 min de lecture

logo kubernetes

kubectl est la CLI officielle de Kubernetes. Chaque commande devient une requête REST vers l'API Server : c'est votre point d'entrée pour inspecter, déployer, déboguer et maintenir les ressources du cluster. Objectif de cette page : vous faire gagner du temps en vous envoyant immédiatement vers le bon guide, puis vous proposer un parcours et une référence rapide.

Toutes les commandes kubectl suivent le même schéma :

Fenêtre de terminal
kubectl [VERBE] [TYPE] [NOM] [OPTIONS]
  • Verbe : get, apply, delete, describe, logs
  • Type : pod, deployment, service, node, configmap
  • Nom : optionnel (sans nom = toutes les ressources)
  • Options : -n, -o, -l, --watch, --dry-run, etc.

Les 10 commandes pour être opérationnel :

Fenêtre de terminal
# 1) Vérifier où vous êtes
kubectl config current-context
# 2) Voir rapidement l'état
kubectl get pods -A
kubectl get nodes -o wide
# 3) Comprendre un problème (ordre logique)
kubectl describe pod <pod> -n <ns>
kubectl get events -n <ns> --sort-by=.metadata.creationTimestamp
kubectl logs -n <ns> pod/<pod> --since=10m --tail=200
# 4) Déployer sans risque
kubectl diff -f k8s/
kubectl apply -f k8s/
# 5) Suivre un rollout / redémarrer
kubectl rollout status deploy/<name> -n <ns>
kubectl rollout restart deploy/<name> -n <ns>

Pour les commandes avancées, les patterns et les pièges : rendez-vous sur le cheat sheet kubectl.

Les quatre onglets ci-dessous ne sont pas une progression : ce sont quatre intentions distinctes, et vous n'avez aucune raison de les parcourir dans l'ordre. Choisissez celui qui décrit ce que vous devez faire aujourd'hui. Si vous hésitez, le premier onglet est le seul qui suppose un cluster jamais touché ; les trois autres partent du principe que kubectl répond déjà et qu'un contexte est configuré.

L'ordre de ces quatre étapes est délibéré et se lit comme une réduction du risque. Vous commencez par des commandes qui ne modifient rien (installation, lecture de contexte, diagnostic) et vous ne touchez à l'état du cluster qu'à la dernière. La deuxième étape est celle que les débutants sautent le plus souvent, et c'est aussi celle qui cause le plus de dégâts quand elle manque : appliquer un manifeste dans le mauvais contexte est l'erreur la plus banale et la plus coûteuse de Kubernetes.

  1. Installez kubectl et configurez l'autocomplétion.

  2. Comprenez les contextes et apprenez à naviguer entre clusters.

  3. Maîtrisez le trio get / describe / logs pour diagnostiquer.

  4. Passez au déploiement déclaratif avec apply + diff.

Parcours B, "Je veux de la prod propre" (intermédiaire)

Section intitulée « Parcours B, "Je veux de la prod propre" (intermédiaire) »

Ce parcours suppose le A acquis et déplace la question : il ne s'agit plus de savoir taper la commande, mais de savoir laquelle et quand. La quatrième étape est le vrai point d'arrivée : tant que kubectl reste une commande tapée à la main sur un poste, la reproductibilité repose sur la mémoire de l'opérateur. diff et wait sont ce qui transforme les trois premières étapes en déploiement automatisable.

  1. Ajoutez les modifications ciblées (edit/patch/replace).

  2. Maîtrisez le scaling, les rollouts et les rollbacks.

  3. Passez en mode debug avec exec et conteneurs éphémères.

  4. Intégrez kubectl dans vos pipelines CI/CD (diff/wait).

Vous voulez une réponse immédiate ? Cette section est faite pour ça.

Syntaxe kubectl, le modèle mental
  • Verbe : l'action (get, apply, delete, describe, logs…)
  • Type : la ressource ciblée (pod, deploy, svc, node…)
  • Nom : optionnel (sans nom = toutes les ressources du type)
  • Options : -n (namespace), -o (output), -l (label selector), --watch

Exemple : kubectl get pods -n production -l app=web -o wide

Cheat sheet complet

Diagnostic, "je fais quoi quand ça marche pas"
  • Si un Pod ne démarre pas : describe pod → Events → logs --previous
  • Si un Pod redémarre : get pod (RESTARTS) → logs --previousdescribe (OOMKilled ?)
  • Si un Service ne répond pas : get endpointsdescribe svc → labels selector
  • Si un déploiement bloque : rollout statusget events → pods du ReplicaSet

Guide diagnostic

Déploiement, le workflow sûr
  • "Je prévisualise" : kubectl diff -f manifests/
  • "Je déploie" : kubectl apply -f manifests/
  • "Je vérifie" : kubectl rollout status deploy/<name>
  • "Je rollback" : kubectl rollout undo deploy/<name>
  • "Je génère" : kubectl create deploy web --image=nginx:1.29-alpine --dry-run=client -o yaml (le nom et --image sont obligatoires, sinon required flag(s) "image" not set)

Guide déploiement

Contextes, naviguer entre clusters
  • Voir les contextes : kubectl config get-contexts
  • Changer : kubectl config use-context <nom>
  • Namespace par défaut : kubectl config set-context --current --namespace=<ns>
  • Multi-kubeconfig : export KUBECONFIG=~/.kube/config:~/.kube/staging

Guide contextes

Maintenance nœuds, le workflow sans downtime
  • Bloquer : kubectl cordon <node>
  • Évacuer : kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
  • Maintenir : (mise à jour OS, kubelet, etc.)
  • Remettre : kubectl uncordon <node>

Guide maintenance

Debug avancé, conteneurs éphémères
  • Shell classique : kubectl exec -it pod/<name> -n <ns> -- sh
  • Distroless/scratch : kubectl debug -it pod/<name> --image=busybox --target=container
  • Copie de Pod : kubectl debug pod/<name> -it --copy-to=debug-pod --image=busybox (--container ne sert qu'à désigner un conteneur déjà présent dont on change la commande)

Guide debug

Ce tableau reprend les mêmes douze guides que les onglets plus haut, mais trié par niveau au lieu de l'être par intention. Servez-vous-en pour évaluer un écart : si vous êtes à l'aise sur les quatre premières lignes et perdu dès la cinquième, vous savez exactement où reprendre. La colonne Niveau évalue la difficulté du guide, pas la fréquence d'usage de la commande : drain est classé avancé alors que vous le taperez peut-être dès votre première maintenance.

GuideObjectifNiveau
Installation & configInstaller, autocomplete, aliasDébutant
Contextes & kubeconfigNaviguer entre clustersDébutant
Diagnostic (get/describe/logs/top)Comprendre l'état du clusterDébutant → Intermédiaire
Explorer l'API (api-resources/explain)Découvrir types et CRDsIntermédiaire
Déployer (create/apply)Workflow déclaratifIntermédiaire
Modifier (edit/patch/replace)Changements ciblés en prodIntermédiaire
Labels & annotationsOrganiser et filtrerIntermédiaire
Exposer (expose/port-forward/proxy)Services et tunnelsIntermédiaire
Scale & rolloutMise à l'échelle, rollbacksIntermédiaire → Avancé
Debug (exec/debug)Conteneurs éphémères, distrolessAvancé
Maintenance nœudsDrain, cordon, taintsAvancé
CI/CD (diff/wait)Pipelines fiablesAvancé

Avant d'apprendre 50 commandes, maîtrisez 10 objets. Ce sont eux que vous administrez au quotidien.

Ressources de base (10 objets du quotidien)
RessourceÀ comprendreCommandes kubectlPour aller plus loin
NamespaceIsoler environnements/équipesget ns, -n, -ALes Namespaces
PodUnité d'exécution (1..n conteneurs)get po, describe po, logs, execLes Pods
DeploymentDéploiement + rollout/rollbackget deploy, apply, rollout, scaleLes Deployments
ReplicaSetGarantir N réplicas d'un Podget rs, describe rsLes ReplicaSets
ServiceExposition interne / stable IPget svc, describe svc, exposeLes Services
IngressExposition HTTP(S) via contrôleurget ing, describe ingLes Ingress
ConfigMapConfiguration non sensibleget cm, describe cm, applyLes ConfigMaps
SecretConfiguration sensible (RBAC !)get secret, describe, applyLes Secrets
Job/CronJobExécution batch/planifiéeget job, get cj, logsJobs et CronJobs
NodeCapacité et schedulingget node, describe node, cordon, drainWorker Nodes
Ressources avancées (scaling, sécurité, stockage)
RessourceQuand l'utiliserPour aller plus loin
DaemonSetUn Pod par nœud (monitoring, logs, réseau)Les DaemonSets
StatefulSetApps avec état (BDD, Kafka, ZooKeeper)Les StatefulSets
HPAAuto-scaling horizontal sur CPU/mémoireHPA
PVC/StorageClassStockage persistantStockage
NetworkPolicyContrôler le trafic réseau entre PodsNetworkPolicies
RBACContrôle d'accès (Role, ClusterRole, Binding)RBAC
ProbesLiveness, Readiness, StartupLes Probes

Aucun de ces outils ne remplace kubectl : ils s'appuient tous sur le même kubeconfig et la même API Server. Ils se répartissent en trois familles qu'il vaut mieux ne pas confondre. Les outils de navigation (k9s, kubectx, Stern, KDash) vous font gagner des frappes sans rien changer au cluster. Les outils de packaging (Helm, Kustomize) changent la façon dont vous produisez vos manifestes. Les outils d'audit (Kubescape, Polaris, Popeye, Pluto) lisent votre cluster pour vous dire ce qui ne va pas. Commencez par la première famille, elle est sans risque et rentabilise immédiatement.

Outils de productivité et sécurité autour de kubectl
OutilRôleLien
KustomizeFactoriser vos manifestes sans templatesGuide Kustomize
HelmGestionnaire de packages KubernetesHelm de A à Z
k9sInterface TUI pour naviguer dans un clusterGuide k9s
SternLogs multi-pods en temps réel avec couleursGuide Stern
kubectx/kubensChanger de contexte/namespace en un motGuide kubectx/kubens
KubieAlternative à kubectx avec isolation par shellGuide Kubie
KDashDashboard TUI léger pour clustersGuide KDash
PlutoDétecter les API Kubernetes dépréciéesGuide Pluto
Sealed SecretsChiffrer les Secrets pour GitOpsGuide Sealed Secrets
KubescapeAudit de sécurité du clusterGuide Kubescape
PolarisBonnes pratiques et validation de manifestesGuide Polaris
Kube-ScoreAnalyse statique de manifestesGuide Kube-Score
PopeyeScan hygiène de clusterGuide Popeye
RancherPlateforme de gestion multi-clustersGuide Rancher
KarpenterAuto-provisioning de nœuds (FinOps)Guide Karpenter
Cast AIOptimisation coûts et scaling automatiqueGuide Cast AI
GoldilocksRecommandations de requests/limitsGuide Goldilocks
Ansible k8sAutomatiser Kubernetes via AnsibleGuide Ansible k8s

Dix réponses courtes aux questions qui reviennent le plus, dont trois qui portent sur des distinctions que la documentation officielle laisse implicites : apply contre create, edit contre patch contre replace, et les formats de sortie -o wide, -o yaml et -o json. Ce sont exactement les points où une mauvaise habitude prise au début coûte cher plus tard, chaque réponse renvoie vers le guide complet correspondant.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn