feat: funk-cluster — arrêt k8s propre avec drain + vérification NFS

Remplace le talosctl shutdown immédiat par une séquence en 6 étapes :
1. kubectl cordon tous les nœuds (empêche rescheduling)
2. kubectl drain compute-02/03 (SIGTERM pods, 30s grace, PVCs NFS libérés)
3. kubectl drain compute-01 (ArgoCD, system pods)
4. Vérification NFS : ss confirme plus de sessions :2049 actives
5. talosctl shutdown (halt propre, plus rien ne tourne)
6. Attente extinction ping

Prometheus et Grafana ont 30s pour flusher WAL/SQLite avant terminaison.
storage-01 (NFS server) est éteint en dernier une fois la vérification passée.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-13 22:20:14 +02:00
parent 8b6f906a89
commit a631a4ab6c
2 changed files with 86 additions and 15 deletions

View file

@ -62,7 +62,7 @@ La connexion SSH se coupe à la fin (storage-01 s'éteint lui-même). C'est norm
funk-stop --k8s
```
Ordre d'arrêt automatique : hermes-agent + litellm → talosctl shutdown compute-01/02/03 → gpu-01 → qdrant + postgresql → storage-01.
Ordre d'arrêt automatique : hermes-agent + litellm → cordon+drain compute-02/03 → drain compute-01 → vérif NFS → talosctl shutdown → gpu-01 → qdrant + postgresql → storage-01.
---
@ -88,7 +88,13 @@ Vérifie dans l'ordre :
### `funk-stop [--k8s]`
1. Arrête hermes-agent et litellm sur storage-01 (timeout 10s + SIGKILL si besoin)
2. `--k8s` : `talosctl shutdown` sur compute-01/02/03, attend extinction
2. `--k8s` — arrêt propre du cluster en 6 étapes :
- **Cordon** des 3 nœuds → plus aucun pod ne peut être replanifié
- **Drain compute-02** → SIGTERM aux pods, 30s grace period, PVCs NFS démontés
- **Drain compute-03** → idem (Prometheus, Grafana flushent leur WAL/SQLite)
- **Drain compute-01** → ArgoCD, kube-state-metrics, etc.
- **Vérification NFS** → confirme que plus aucune session NFS active depuis k8s
- **talosctl shutdown** → halt propre (plus rien ne tourne, rien n'écrit)
3. Éteint gpu-01 (`shutdown -h now` via SSH)
4. Arrête qdrant et postgresql-16 sur storage-01
5. Éteint storage-01 (`shutdown -h now`) — connexion SSH coupée
@ -154,7 +160,7 @@ ssh s01 "sudo cp /tmp/funk-cluster /usr/local/bin/funk-cluster && sudo chmod +x
| Sujet | Détail |
|---|---|
| Ordre d'arrêt | Hermes/LiteLLM → k8s (optionnel) → gpu-01 → Qdrant/PG → storage-01 |
| Ordre d'arrêt | Hermes/LiteLLM → cordon+drain k8s (optionnel) → gpu-01 → Qdrant/PG → storage-01 |
| Ordre de démarrage | storage-01 (toujours déjà up) → gpu-01 → k8s (optionnel) |
| WOL compute nodes | BIOS non configuré → allumer manuellement pendant l'attente ping de `funk-start --k8s` |
| LiteLLM bloquant | `systemctl stop --timeout=10` + SIGKILL automatique si timeout |