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

Séquence d'arrêt ordonnée du cluster

  1. Scale down des deployments stateful (Immich, Gitea)
  2. Attente de la fin des PVC flush Longhorn
  3. Drain séquentiel des workers (worker3 → worker2 → worker1)
  4. Arrêt du control plane
  5. 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-run pour 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