Get · List 01
Le B.A.-BA — toute interrogation du cluster.
k get popods du ns courantk get po -Atous les namespacesk get po -n <ns>namespace précisk get po -o wide+ IP + nodek get po -wwatch (live)k get po -l app=webfiltre par labelk get po -l 'env in (prod,stg)'label INk get po --field-selector status.phase=Runningpar champk get po --show-labelsaffiche les labelsk get po --sort-by=.metadata.creationTimestamptri chronok get allressources communesk get po,svc,cmplusieurs typesk get ev --sort-by=.lastTimestampevents récentsDescribe · Explain 02
Documentation interne à l'API.
k describe po <n>détails + eventsk explain pod.specdoc d'un champk explain --recursive deploy.specdoc récursivek api-resourcestoutes les ressourcesk api-resources --namespaced=truenamespaced onlyk api-versionsgroupes d'APIContext · Namespace 03
Naviguer entre clusters et namespaces.
k config current-contextcontexte actifk config get-contextsliste des contextesk config use-context <ctx>changer de contextek config set-context --current --namespace=<ns>ns par défautk config view --minify --flattenconfig courantek config delete-context <ctx>supprimer contexteSetup · 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 à jourk apply -f ./dir/tout un dossierk apply -k ./overlay/Kustomizek apply -f https://…depuis une URLk diff -f <file>dry-run comparatifk delete -f <file>supprimer d'un manifestk delete po <n>supprimer une ressourcek delete po <n> --forcesuppression immédiatek delete po --all -n <ns>tout purgerk create ns <n>créer un namespacek create cm <n> --from-file=./ConfigMap depuis fichierk create secret generic <n> --from-literal=k=vsecret rapidek run <n> --image=nginx -it --rm -- shpod éphémèreEdit · Patch · Label 06
Modifier en place, sans YAML.
k edit <res> <n>ouvre $EDITORk patch deploy/<n> -p '{"spec":{"replicas":3}}'strategic mergek patch … --type=json -p='[{op,path,value}]'JSON patch (RFC 6902)k label po <n> env=prodajouter un labelk label po <n> env-supprimer un labelk annotate po <n> note=fooajouter une annotationk replace -f <file>remplacer intégralementWait · Conditions 07
Bloquer jusqu'à un état précis.
k wait --for=condition=Ready po/<n>pod prêtk wait --for=condition=Available deploy/<n> --timeout=60sdeploy OKk wait --for=delete po/<n>disparitionShort 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>logsk logs -f <pod>follow (live)k logs --previous <pod>pod crashé précédentk logs -c <ctnr> <pod>multi-containerk logs deploy/<n>n'importe quel podk logs -l app=web --all-containerspar labelk logs --since=1h --tail=100 <pod>fenêtre / lignesExec · Shell
k exec -it <pod> -- shshell interactifk exec <pod> -- ls /commande ponctuellek exec -it <pod> -c <ctnr> -- bashcontainer précisk attach -it <pod>attach stdin/stdoutPort-forward · Copy · Debug
k port-forward <pod> 8080:80pod → localk port-forward svc/<n> 8080:80service → localk cp <pod>:/remote /localtéléchargerk cp /local <pod>:/remotetéléverserk debug <pod> --image=busybox --target=<c>éphémère (distroless)k debug node/<node> -it --image=busyboxshell sur le nodeRollout · Scale · Set 10
Pilotage des deployments.
Rollout
k rollout status deploy/<n>état en coursk rollout history deploy/<n>historique des révisionsk rollout history deploy/<n> --revision=3détail d'une révisionk rollout undo deploy/<n>rollback précédentk rollout undo deploy/<n> --to-revision=2rollback précisk rollout restart deploy/<n>forcer un restartk rollout pause|resume deploy/<n>mettre en pauseScale · Set
k scale deploy/<n> --replicas=5nb de replicask autoscale deploy/<n> --min=2 --max=10 --cpu-percent=80HPA rapidek set image deploy/<n> <c>=<img>:<tag>changer l'imagek set env deploy/<n> FOO=barchanger une envk set resources deploy/<n> --limits=cpu=1,memory=512Miquotas CPU/RAMOutput 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 champJSONPath · 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 nodesk top nodesmétriques CPU/RAMk top pods -Atop pods tous nsk cordon <node>plus de nouveaux podsk drain <node> --ignore-daemonsets --delete-emptydir-datavider le nodek uncordon <node>réactiver le nodek taint no <n> key=v:NoScheduletaint (anti-schedule)k taint no <n> key-retirer un taintk cluster-infoendpoints principauxk version --shortversions client/serverk get --raw='/readyz?verbose'health checkk auth can-i create povérifier un droitk auth can-i --list -n <ns>tous mes droits