Kubectl

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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à, apply ne 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).

Voir aussi