Scripts d'Arrêt & Démarrage
Suite de scripts Bash pour l'arrêt et le démarrage ordonné du cluster k3s
Motivation
Arrêter un cluster Kubernetes dans le bon ordre sans perdre de données est plus complexe qu’il n’y paraît. Longhorn a besoin que les volumes soient proprement démontés, certains services doivent s’arrêter avant d’autres, et le control plane doit être le dernier.
Structure des scripts
cluster-scripts/
├── shutdown.sh # Arrêt complet ordonné
├── startup.sh # Démarrage et vérification de santé
├── drain-node.sh # Drain d'un nœud spécifique
└── lib/
├── k8s.sh # Helpers kubectl
└── logging.sh # Logging coloré avec niveaux
Logique d’arrêt
- Scale down des deployments stateful (Immich, Gitea)
- Attente de la fin des PVC flush Longhorn
- Drain séquentiel des workers (worker3 → worker2 → worker1)
- Arrêt du control plane
- SSH vers chaque Pi pour
sudo shutdown now
Points d’intérêt
- Timeout avec retry configurable pour chaque étape
- Détection automatique si Longhorn est en état dégradé avant de commencer
- Log horodaté avec niveau (INFO/WARN/ERROR)
- Mode
--dry-runpour simuler sans exécuter
Utilisation
# Arrêt complet
./shutdown.sh --timeout 120
# Redémarrage d'un nœud
./drain-node.sh worker2 && ssh pi@worker2 sudo reboot