Savoir déployer ne suffit pas : il faut aussi observer, diagnostiquer et maintenir le cluster. Ce module regroupe les outils indispensables.
Table of Contents
Objectifs
- Diagnostiquer les incidents avec kubectl, events et logs.
- Mettre en place une stack observabilité (Prometheus, Grafana, Loki).
- Planifier les opérations : upgrades, backups, tests de reprise.
Plan
- kubectl debug et collecte d’informations.
- Logs et agrégation (Loki, Elasticsearch).
- Métriques et alerting (Prometheus, Alertmanager).
- Tracing distribué (OpenTelemetry, Jaeger).
- Opérations : upgrade control plane/nœuds, sauvegarde etcd.
- Lab complet.
1. kubectl debug
kubectl debug deploy/webapp -it --image=busybox --target=webkubectl describe pod webapp-XXXkubectl get events --sort-by=.lastTimestamp
Utilisez kubectl top nodes et kubectl top pods (metrics-server requis).
2. Logs
kubectl logs -f deploy/webapp- Stack Loki + Promtail + Grafana (ou EFK) pour centraliser.
- Structurer les logs (JSON) et ajouter des labels.
3. Prometheus & Grafana
Installez kube-prometheus-stack via Helm :
helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm install monitoring prometheus-community/kube-prometheus-stack -n observability --create-namespace
Créez un dashboard Grafana ciblant les métriques container_cpu_usage_seconds_total et kube_deployment_status_replicas_available.
4. Tracing
Déployez Jaeger ou Tempo, instrumentez avec OpenTelemetry SDK. Exportez les traces via OTLP.
5. Opérations
- Upgrade : suivez la matrice version kubeadm / kubelet / kubectl.
- Backup etcd :
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-$(date +%F).db. - Chaos testing : utilisez
kubectl delete podaléatoirement, ou LitmusChaos.
6. Lab
- Déployez kube-prometheus-stack et exposez Grafana en NodePort.
- Créez un tableau de bord avec CPU, mémoire et latence (Prometheus + custom metrics).
- Utilisez
kubectl debugpour analyser un Pod crashLoopBackOff (injectez un bug). - Réalisez un snapshot etcd, restaurez-le dans un cluster de test.
Checklist
- ✅ Vous savez collecter events, logs et métriques.
- ✅ Vous pouvez installer une stack Prometheus/Grafana.
- ✅ Vous connaissez la procédure de backup et d’upgrade.
Ressources
Solution détaillée
- kubectl debug
kubectl debug deploy/webapp -it --image=busybox --target=webouvre un shell dans un Pod éphémère. Vérifiez que/proc/1/cmdlinecorrespond à votre conteneur cible. - Events & logs
kubectl get events --sort-by=.lastTimestamp | tailmontre les derniers incidents.
kubectl logs deploy/webapprenvoie les logs applicatifs ; avec-fpour le suivi. - Prometheus / Grafana
kubectl get pods -n observabilitydoit montrer les composantsprometheus,alertmanager,grafana.
Exposez Grafana :kubectl port-forward svc/monitoring-grafana -n observability 3000:80, connectez-vous (admin/prom-operatorpar défaut) et créez un dashboard aveccontainer_cpu_usage_seconds_total. - Snapshot etcd
Depuis le control plane :export ETCDCTL_API=3 sudo ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-$(date +%F).db --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.keyPuis test de restauration dans un cluster de labo.
- Chaos léger
kubectl delete pod -n staging -l app=webapp --now: le Deployment recrée les Pods. Notez le temps de résilience.
Conservez les captures Grafana et les extraits de logs/snapshots dans votre dépôt de formation pour prouver la mise en place de l’observabilité.


