Référence rapide des commandes kubectl essentielles pour débutants et utilisateurs intermédiaires.
# Voir la configuration kubectl
kubectl config view
# Lister les contextes
kubectl config get-contexts
# Changer de contexte
kubectl config use-context <context-name>
# Voir le contexte actuel
kubectl config current-context
# Définir le namespace par défaut
kubectl config set-context --current --namespace=<namespace>
# Informations générales du cluster
kubectl cluster-info
# Version de Kubernetes
kubectl version
# Statut des composants
kubectl get componentstatuses
# Voir tous les nodes
kubectl get nodes
kubectl get nodes -o wide
# Détails d'un node
kubectl describe node <node-name>
# Pods
kubectl get pods
kubectl get pods -o wide
kubectl get pods --all-namespaces
# Deployments
kubectl get deployments
kubectl get deploy -o yaml
# Services
kubectl get services
kubectl get svc
# Tout dans un namespace
kubectl get all
kubectl get all --all-namespaces
# Avec sélecteurs de labels
kubectl get pods -l app=web
kubectl get pods -l 'environment in (prod,staging)'
# Créer à partir d'un fichier
kubectl apply -f <filename.yaml>
kubectl apply -f <directory>/
# Créer rapidement
kubectl create deployment <name> --image=<image>
kubectl run <pod-name> --image=<image>
# Exposer un service
kubectl expose deployment <name> --port=80 --type=NodePort
# Mettre à jour avec un fichier
kubectl apply -f <filename.yaml>
# Éditer directement
kubectl edit <resource> <name>
# Mise à l'échelle
kubectl scale deployment <name> --replicas=5
# Mise à jour d'image
kubectl set image deployment/<name> <container>=<new-image>
# Supprimer par nom
kubectl delete <resource> <name>
# Supprimer à partir d'un fichier
kubectl delete -f <filename.yaml>
# Supprimer par sélecteur
kubectl delete pods -l app=web
# Forcer la suppression
kubectl delete pod <name> --force --grace-period=0
# Détails complets d'un objet
kubectl describe <resource> <name>
# Manifeste YAML
kubectl get <resource> <name> -o yaml
# Format JSON
kubectl get <resource> <name> -o json
# Informations spécifiques
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
# Logs d'un Pod
kubectl logs <pod-name>
kubectl logs <pod-name> -c <container-name> # Multi-conteneur
kubectl logs -f <pod-name> # Suivre en temps réel
# Logs précédents (si redémarré)
kubectl logs <pod-name> --previous
# Événements du cluster
kubectl get events
kubectl get events --sort-by=.metadata.creationTimestamp
# Exécuter une commande
kubectl exec <pod-name> -- <command>
# Shell interactif
kubectl exec -it <pod-name> -- /bin/bash
kubectl exec -it <pod-name> -- sh
# Multi-conteneur
kubectl exec -it <pod-name> -c <container> -- sh
# Copier des fichiers
kubectl cp <pod-name>:/path/to/file /local/path
kubectl cp /local/path <pod-name>:/path/to/file
# Rediriger un port local vers un Pod
kubectl port-forward <pod-name> <local-port>:<pod-port>
# Vers un Service
kubectl port-forward service/<service-name> <local-port>:<service-port>
# Exemple
kubectl port-forward pod/web-pod 8080:80
curl http://localhost:8080
# Lister les namespaces
kubectl get namespaces
# Créer un namespace
kubectl create namespace <name>
# Travailler dans un namespace spécifique
kubectl get pods -n <namespace>
kubectl apply -f <file.yaml> -n <namespace>
# Supprimer un namespace
kubectl delete namespace <name>
# Statut d'un déploiement
kubectl rollout status deployment/<name>
# Historique des versions
kubectl rollout history deployment/<name>
# Rollback à la version précédente
kubectl rollout undo deployment/<name>
# Rollback à une version spécifique
kubectl rollout undo deployment/<name> --to-revision=2
# Pause/Resume
kubectl rollout pause deployment/<name>
kubectl rollout resume deployment/<name>
# Ajouter un label
kubectl label <resource> <name> <key>=<value>
# Modifier un label
kubectl label <resource> <name> <key>=<new-value> --overwrite
# Supprimer un label
kubectl label <resource> <name> <key>-
# Voir les labels
kubectl get <resource> --show-labels
# Ajouter une annotation
kubectl annotate <resource> <name> <key>=<value>
# Voir l'utilisation des ressources
kubectl top nodes
kubectl top pods
# Quotas dans un namespace
kubectl get resourcequota -n <namespace>
kubectl describe quota -n <namespace>
# Limites par défaut
kubectl get limitrange -n <namespace>
# Créer un Secret à partir de littéraux
kubectl create secret generic <name> --from-literal=<key>=<value>
# Créer un Secret à partir d'un fichier
kubectl create secret generic <name> --from-file=<path>
# Créer une ConfigMap
kubectl create configmap <name> --from-literal=<key>=<value>
kubectl create configmap <name> --from-file=<path>
# Voir le contenu (base64 pour secrets)
kubectl get secret <name> -o yaml
kubectl get configmap <name> -o yaml
# Aide générale
kubectl help
# Aide sur une commande spécifique
kubectl <command> --help
# Expliquer les ressources
kubectl explain <resource>
kubectl explain pod.spec.containers
# API Resources disponibles
kubectl api-resources
kubectl api-versions
Ajoutez ces aliases à votre ~/.bashrc ou ~/.zshrc :
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgd='kubectl get deployments'
alias kdp='kubectl describe pod'
alias kds='kubectl describe service'
alias kdd='kubectl describe deployment'
alias kaf='kubectl apply -f'
alias kdf='kubectl delete -f'
alias kex='kubectl exec -it'
alias klo='kubectl logs'
alias kpf='kubectl port-forward'
# Bash
echo 'source <(kubectl completion bash)' >>~/.bashrc
# Zsh
echo 'source <(kubectl completion zsh)' >>~/.zshrc
# Avec alias
echo 'complete -F __start_kubectl k' >>~/.bashrc
# 1. Vérifier les Pods
kubectl get pods -l app=myapp
# 2. Vérifier les Services
kubectl get svc -l app=myapp
# 3. Voir les événements récents
kubectl get events --sort-by=.metadata.creationTimestamp | tail -10
# 4. Logs de l'application
kubectl logs -l app=myapp --tail=50
# Redémarrer tous les Pods d'un Deployment
kubectl rollout restart deployment/myapp
# Ou supprimer les Pods (ils se recréent automatiquement)
kubectl delete pods -l app=myapp
# Créer un Pod temporaire de test
kubectl run test-pod --image=busybox:1.36 -it --rm -- sh
# Dans le Pod :
nslookup <service-name>
wget -qO- http://<service-name>:<port>
-n si ce n'est pas defaultkubectl apply plutôt que create pour la gestion déclarative--dry-run=client -o yaml pour générer des manifestskubectl get all -o yaml > backup.yamlkubectl diff -f <file> avant d'appliquer des changementskubectl explain <resource>