Pense-bête kubectl

Vous n’avez pas besoin de connaître Kubernetes pour suivre cette formation : toutes les commandes sont fournies dans les labs. Ce pense-bête sert juste à comprendre ce que vous tapez et à vous dépanner.

Le vocabulaire minimal

TermeCe que c’est (en une phrase)
ClusterLa machine (ici Kind, un Kubernetes local dans Docker) qui fait tourner tout.
NamespaceUn « dossier » qui regroupe des ressources. Toute la démo vit dans otel-demo.
PodLa plus petite unité qui tourne : un (ou plusieurs) conteneur(s). ≈ « un micro-service en cours d’exécution ».
DeploymentRecette qui garde N pods d’un service en vie (ex. review-service).
DaemonSetComme un Deployment, mais un pod par nœud (ex. le collecteur OpenTelemetry).
Service (svc)Une adresse réseau stable pour joindre des pods (ex. grafana, jaeger-query).

⚠️ Presque toutes les commandes prennent -n otel-demo (le namespace de la démo). Si une commande ne renvoie rien, c’est souvent qu’il manque le -n otel-demo.

Regarder ce qui tourne

# Lister les pods de la démo (colonne STATUS = Running, READY = 1/1 attendu)
kubectl get pods -n otel-demo

# Idem, avec le nœud et l'IP de chaque pod
kubectl get pods -n otel-demo -o wide

# Lister les services (adresses réseau internes)
kubectl get svc -n otel-demo

# Infos générales sur le cluster
kubectl cluster-info

Astuce : ajoutez -w (« watch ») pour suivre en direct, Ctrl-C pour quitter :

kubectl get pods -n otel-demo -w

Diagnostiquer un pod

# Détail complet d'un pod (événements, causes de crash en bas de sortie)
kubectl describe pod <nom-du-pod> -n otel-demo

# Voir les logs d'un déploiement (ajoutez -f pour suivre en direct)
kubectl logs -n otel-demo deployment/review-service
kubectl logs -n otel-demo deployment/review-service -f

# Ouvrir un shell dans un pod
kubectl exec -it -n otel-demo deployment/review-service -- bash

Accéder à une UI depuis votre poste (port-forward)

Les services (Grafana, Jaeger…) tournent dans le cluster. port-forward crée un tunnel entre un port de votre machine et le service :

# http://localhost:8080 -> service grafana, port 80, dans le cluster
kubectl port-forward -n otel-demo --address $PF_ADDR svc/grafana 8080:80

Laissez la commande tournée (elle bloque le terminal), ouvrez le navigateur, puis Ctrl-C pour couper le tunnel.

--address $PF_ADDR choisit l’adresse d’écoute du tunnel : 127.0.0.1 (donc localhost) sur un poste individuel, et l’adresse propre à votre compte sur un serveur partagé, pour ne pas entrer en conflit avec les tunnels des autres participants. La variable vient de scripts/env.sh : . ./scripts/env.sh en début de session.

🛠️ Dans les labs, vous n’aurez pas à taper cette commande : ./scripts/open-ui.sh ouvre tous les tunnels dont les labs ont besoin et les maintient ouverts. Les énoncés ne parlent donc que d’URLs. C’est ici, une fois pour toutes, que vous voyez ce qu’il y a dessous.

Attendre qu’un déploiement soit prêt

Après un changement de config, ces commandes rendent la main une fois le service redémarré (bien pratique dans les scripts) :

kubectl rollout status -n otel-demo deployment/review-service
kubectl rollout status -n otel-demo daemonset/otel-collector-agent

Modifier / appliquer de la configuration

# Injecter une variable d'environnement (déclenche un redémarrage du pod)
kubectl set env -n otel-demo deployment/review-service OTEL_LOG_LEVEL=debug

# Afficher un ConfigMap (config d'un composant)
kubectl get configmap otel-collector-agent -n otel-demo -o yaml

# Appliquer un fichier de manifeste YAML
kubectl apply -n otel-demo -f mon-fichier.yaml

Se dépanner soi-même

SymptômeRéflexe
No resources foundIl manque probablement -n otel-demo.
Pod en PendingLe cluster manque de ressources : kubectl describe pod <nom> -n otel-demo.
Pod en CrashLoopBackOffIl redémarre en boucle : lisez les logs kubectl logs <nom> -n otel-demo.
port-forward coupe tout seulLe pod a redémarré : relancez la commande (open-ui.sh le fait pour vous).
Une UI ne répond pasRelancez ./scripts/open-ui.sh, il rouvre tous les accès.

💡 Complétion automatique : tapez le début d’un nom de pod puis Tab. Pensez aussi à l’alias k=kubectl si vous le souhaitez : alias k=kubectl.