Kubernetes CLI · Cheatsheet

kubectl

Le couteau suisse de Kubernetes. Raccourci k = kubectl — les commandes ci-dessous utilisent cet alias.

VERSION · v1.30+
CONFIG · ~/.kube/config
DOCS · kubernetes.io/docs

Get · List 01

Le B.A.-BA — toute interrogation du cluster.

k get popods du ns courant
k get po -Atous les namespaces
k get po -n <ns>namespace précis
k get po -o wide+ IP + node
k get po -wwatch (live)
k get po -l app=webfiltre par label
k get po -l 'env in (prod,stg)'label IN
k get po --field-selector status.phase=Runningpar champ
k get po --show-labelsaffiche les labels
k get po --sort-by=.metadata.creationTimestamptri chrono
k get allressources communes
k get po,svc,cmplusieurs types
k get ev --sort-by=.lastTimestampevents récents

Describe · Explain 02

Documentation interne à l'API.

k describe po <n>détails + events
k explain pod.specdoc d'un champ
k explain --recursive deploy.specdoc récursive
k api-resourcestoutes les ressources
k api-resources --namespaced=truenamespaced only
k api-versionsgroupes d'API

Context · Namespace 03

Naviguer entre clusters et namespaces.

k config current-contextcontexte actif
k config get-contextsliste des contextes
k config use-context <ctx>changer de contexte
k config set-context --current --namespace=<ns>ns par défaut
k config view --minify --flattenconfig courante
k config delete-context <ctx>supprimer contexte

Setup · Aliases 04

À ajouter dans ~/.zshrc ou ~/.bashrc.

# Aliases
alias k=kubectl
alias kg='kubectl get'
alias kd='kubectl describe'
alias kaf='kubectl apply -f'
alias klo='kubectl logs -f'

# Complétion
source <(kubectl completion bash)
complete -o default -F __start_kubectl k

Apply · Create · Delete 05

Gestion des manifests.

k apply -f <file.yaml>créer / mettre à jour
k apply -f ./dir/tout un dossier
k apply -k ./overlay/Kustomize
k apply -f https://…depuis une URL
k diff -f <file>dry-run comparatif
k delete -f <file>supprimer d'un manifest
k delete po <n>supprimer une ressource
k delete po <n> --forcesuppression immédiate
k delete po --all -n <ns>tout purger
k create ns <n>créer un namespace
k create cm <n> --from-file=./ConfigMap depuis fichier
k create secret generic <n> --from-literal=k=vsecret rapide
k run <n> --image=nginx -it --rm -- shpod éphémère

Edit · Patch · Label 06

Modifier en place, sans YAML.

k edit <res> <n>ouvre $EDITOR
k patch deploy/<n> -p '{"spec":{"replicas":3}}'strategic merge
k patch … --type=json -p='[{op,path,value}]'JSON patch (RFC 6902)
k label po <n> env=prodajouter un label
k label po <n> env-supprimer un label
k annotate po <n> note=fooajouter une annotation
k replace -f <file>remplacer intégralement

Wait · Conditions 07

Bloquer jusqu'à un état précis.

k wait --for=condition=Ready po/<n>pod prêt
k wait --for=condition=Available deploy/<n> --timeout=60sdeploy OK
k wait --for=delete po/<n>disparition

Short names 08

Alias officiels — à utiliser partout.

popods
deploydeployments
svcservices
stsstatefulsets
dsdaemonsets
rsreplicasets
cmconfigmaps
secsecrets
ingingresses
nsnamespaces
nonodes
evevents
pv · pvcstorage
saserviceaccounts
hpaautoscalers
pdbdisruption budgets
netpolnetwork policies
cjcronjobs
crdcustom resources

Debugging 09

Logs · exec · port-forward · cp · debug.

Logs
k logs <pod>logs
k logs -f <pod>follow (live)
k logs --previous <pod>pod crashé précédent
k logs -c <ctnr> <pod>multi-container
k logs deploy/<n>n'importe quel pod
k logs -l app=web --all-containerspar label
k logs --since=1h --tail=100 <pod>fenêtre / lignes
Exec · Shell
k exec -it <pod> -- shshell interactif
k exec <pod> -- ls /commande ponctuelle
k exec -it <pod> -c <ctnr> -- bashcontainer précis
k attach -it <pod>attach stdin/stdout
Port-forward · Copy · Debug
k port-forward <pod> 8080:80pod → local
k port-forward svc/<n> 8080:80service → local
k cp <pod>:/remote /localtélécharger
k cp /local <pod>:/remotetéléverser
k debug <pod> --image=busybox --target=<c>éphémère (distroless)
k debug node/<node> -it --image=busyboxshell sur le node

Rollout · Scale · Set 10

Pilotage des deployments.

Rollout
k rollout status deploy/<n>état en cours
k rollout history deploy/<n>historique des révisions
k rollout history deploy/<n> --revision=3détail d'une révision
k rollout undo deploy/<n>rollback précédent
k rollout undo deploy/<n> --to-revision=2rollback précis
k rollout restart deploy/<n>forcer un restart
k rollout pause|resume deploy/<n>mettre en pause
Scale · Set
k scale deploy/<n> --replicas=5nb de replicas
k autoscale deploy/<n> --min=2 --max=10 --cpu-percent=80HPA rapide
k set image deploy/<n> <c>=<img>:<tag>changer l'image
k set env deploy/<n> FOO=barchanger une env
k set resources deploy/<n> --limits=cpu=1,memory=512Miquotas CPU/RAM

Output formats 11

Flags -o et --sort-by.

-o wide+ colonnes (IP, node)
-o yamlYAML complet
-o jsonJSON complet
-o namenoms uniquement
-o jsonpath='{…}'expression JSONPath
-o jsonpath-as-json='{…}'JSONPath en JSON
-o custom-columns=N:.x.ycolonnes au choix
-o go-template='{{ … }}'templating Go
--no-headerssans en-têtes
--sort-by=.metadata.nametri sur un champ

JSONPath · Recettes 12

Patterns réutilisables pour scripts.

# Noms de tous les pods

k get po -o jsonpath='{.items[*].metadata.name}'

# Liste unique des images utilisées

k get po -o jsonpath='{.items[*].spec.containers[*].image}' \
  | tr ' ' '\n' | sort -u

# Mapping pod → IP

k get po -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}
  {.status.podIP}{"\n"}{end}'

# Décoder un secret

k get secret <n> -o jsonpath='{.data.password}' \
  | base64 -d

# Ready status des nodes

k get no -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}
  {.status.conditions[?(@.type=="Ready")].status}{"\n"}{end}'

Node · Cluster ops 13

Administration et maintenance.

k get nodesliste des nodes
k top nodesmétriques CPU/RAM
k top pods -Atop pods tous ns
k cordon <node>plus de nouveaux pods
k drain <node> --ignore-daemonsets --delete-emptydir-datavider le node
k uncordon <node>réactiver le node
k taint no <n> key=v:NoScheduletaint (anti-schedule)
k taint no <n> key-retirer un taint
k cluster-infoendpoints principaux
k version --shortversions client/server
k get --raw='/readyz?verbose'health check
k auth can-i create povérifier un droit
k auth can-i --list -n <ns>tous mes droits