Cheat-sheet kubectl¶
k9s va vite, mais kubectl reste indispensable (scripts, CI, ce que k9s ne fait pas).
Lecture¶
bash
kubectl get pods # pods du namespace courant
kubectl get pods -A # tous les namespaces
kubectl get pods -o wide # + IP et nœud
kubectl get pods -w # watch (temps réel)
kubectl get all -n mon-ns # tout dans un namespace
kubectl describe pod mon-pod # détails + events (debug !)
kubectl get pod mon-pod -o yaml # YAML complet
kubectl api-resources # liste des types de ressources
Logs & exec¶
bash
kubectl logs mon-pod # logs
kubectl logs mon-pod -f # suivre (follow)
kubectl logs mon-pod --previous # logs du conteneur précédent (crash)
kubectl logs deploy/web # logs d'un deployment
kubectl exec -it mon-pod -- sh # shell dans le pod
kubectl cp mon-pod:/chemin ./local # copier un fichier
Créer / modifier¶
bash
kubectl create deployment web --image=nginx --replicas=3
kubectl apply -f manifest.yaml # appliquer (idempotent)
kubectl delete -f manifest.yaml
kubectl edit deploy web # éditer en live
kubectl scale deploy web --replicas=5
kubectl rollout restart deploy web # redémarrer les pods
kubectl rollout status deploy web
kubectl rollout undo deploy web # rollback
Debug¶
bash
kubectl get events --sort-by=.lastTimestamp
kubectl describe pod mon-pod # cause d'un CrashLoop / Pending
kubectl top pods # conso CPU/mémoire (metrics-server requis)
kubectl get pod mon-pod -o jsonpath='{.status.phase}'
kubectl run debug --rm -it --image=busybox -- sh # pod jetable de debug
Réseau¶
bash
kubectl port-forward svc/web 8080:80 # exposer un service en local
kubectl get svc # services + ClusterIP
kubectl get ingress
kubectl get endpoints web # à quels pods pointe le service
RBAC & contexte¶
bash
kubectl auth can-i create pods # ai-je le droit ?
kubectl auth can-i '*' '*' --as=system:serviceaccount:default:monsa
kubectl config get-contexts
kubectl config use-context mon-cluster
kubectl config set-context --current --namespace=mon-ns
Raccourcis bien pratiques¶
bash
alias k=kubectl
kubectl explain pod.spec.containers # doc intégrée d'un champ
kubectl get pods --field-selector status.phase=Running
kubectl label pod mon-pod env=test
kubectl get pods -l app=web # filtrer par label