Aller au contenu
Conteneurs & Orchestration high

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

9 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.

  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) »
  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 --dry-run=client -o yaml

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 --container=debug

Guide debug

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
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

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn