Kubectl
| Fiche express | |
|---|---|
| Type | CLI officiel de gestion des objets du cluster |
| Communique avec | kube-apiserver (via $HOME/.kube/config)
|
| Approches | Impérative (create/run) · déclarative (apply -f)
|
| Voir aussi | Kubernetes · Kubeadm · Kubernetes deployments |
kubectl est la commande principale pour manipuler les objets d'un cluster Kubernetes : elle dialogue avec le kube-apiserver en utilisant le fichier de configuration (kubeconfig) référencé par $HOME/.kube/config ou la variable KUBECONFIG.
Impératif vs déclaratif
kubectl supporte deux façons de gérer les objets :
- Impérative — on décrit l'action à réaliser directement en ligne de commande (
kubectl create deployment ...,kubectl run ...) ; rapide pour un usage ponctuel ou exploratoire, mais rien n'est versionné. - Déclarative — on décrit l'état voulu dans un fichier manifeste puis on l'applique avec
kubectl apply -f fichier.yaml; c'est la référence pour tout objet destiné à durer, car le fichier devient la source de vérité et l'opération est idempotente (contrairement àkubectl create -f, qui échoue si l'objet existe déjà,applyne fait pas erreur).
Consulter des objets
kubectl get pods -o wide
kubectl get pods -o json
kubectl get pods -o yaml
kubectl get pods -o wide --sort-by .spec.nodeName
kubectl get pods -n kube-system --selector k8s-app=calico-node
kubectl describe pod my-pod
Créer, appliquer, supprimer
kubectl apply -f pod.yaml
kubectl create -f pod.yaml
kubectl delete pod my-pod
Générer un manifeste depuis une commande impérative
Pratique pour partir d'un squelette plutôt que d'écrire un YAML à la main :
kubectl create deployment my-deployment --image=nginx --dry-run=client -o yaml > deployment.yml
La syntaxe exacte de l'option de simulation (--dry-run=client sur les versions récentes, historiquement --dry-run seul) dépend de la version de kubectl installée (à vérifier).
Exécuter une commande dans un conteneur
kubectl exec my-pod -c busybox -- echo "Hello, world!"
# ouvrir un shell interactif dans un pod
kubectl exec -it <nom-du-pod> -- /bin/bash
# si le pod contient plusieurs conteneurs, préciser lequel avec -c
kubectl exec -it <nom-du-pod> -c <nom-du-conteneur> -- /bin/bash
Persistent Volumes
kubectl get pv
Scale et rollout d'un Deployment
kubectl scale deployment my-deployment --replicas=5
kubectl describe deployment my-deployment
Voir Kubernetes deployments pour le détail du cycle rolling update / rollback.
Configuration et contexte
kubectl config view
kubectl config use-context <nom-du-contexte>
Utile dès qu'un même poste dispose de plusieurs kubeconfigs ou contextes (plusieurs clusters ou namespaces par défaut différents).