Funk-lab/admin/cluster.md
alkatrazz a1826fe339 docs: gestion cluster + script funk-cluster mis à jour
- admin/cluster.md : nouveau guide démarrage/arrêt (funk-start/stop/--k8s)
- admin/README.md : lien vers cluster.md
- admin/systeme.md : services llama-server mis à jour (GPU + 2 CPU)
- ansible/roles/litellm/files/funk-cluster : script versionné
  (talosctl fix, storage-01 shutdown, --k8s optionnel, stop timeout)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 02:11:21 +02:00

3.6 KiB

Gestion du cluster Funk

Script central : /usr/local/bin/funk-cluster sur storage-01. Aliases locaux configurés dans ~/.bashrc du poste perso.


Commandes

# Depuis le poste perso
funk-status          # État complet (storage-01 + gpu-01 + k8s)
funk-start           # Démarre gpu-01 (WOL) + tous les services
funk-start --k8s     # Idem + démarre le cluster k8s (compute-01/02/03)
funk-stop            # Arrête services + gpu-01 + storage-01
funk-stop --k8s      # Idem + éteint le cluster k8s avant

funk-stop éteint storage-01 en dernier — la connexion SSH se coupe, c'est normal.


Ce que fait chaque commande

funk-status

Vérifie dans l'ordre :

  • Services storage-01 : postgresql-16, qdrant, litellm, hermes-agent
  • Santé : PostgreSQL (connexion réelle), Qdrant (collections), LiteLLM (modèles), Hermes, NFS export
  • gpu-01 : ping, NFS /mnt/models, llama-server GPU (:1234), embeddings, llama-server CPU (:1236/:1237)
  • Cluster k8s : ping compute-01/02/03, kubectl get nodes Ready

funk-start [--k8s]

  1. Démarre postgresql-16, qdrant, litellm, hermes-agent sur storage-01
  2. Envoie un paquet Wake-on-LAN à gpu-01 si éteint, attend le ping + SSH
  3. Attend le montage NFS /mnt/models sur gpu-01
  4. Attend le chargement du modèle GPU (jusqu'à 4 min)
  5. Attend les modèles CPU (jusqu'à 2 min)
  6. --k8s : envoie WOL aux 3 nœuds, attend ping, attend nœuds Ready (3 min max)

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
  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

Machines et MACs

Machine IP MAC Rôle
storage-01 192.168.10.1 / 192.168.1.200 Passerelle + services IA
gpu-01 192.168.10.20 a8:a1:59:72:a6:11 LLM GPU + CPU
compute-01 192.168.10.11 6c:4b:90:82:8e:47 k8s control-plane
compute-02 192.168.10.12 6c:4b:90:cf:7f:c5 k8s worker
compute-03 192.168.10.13 6c:4b:90:b6:49:20 k8s worker

Aliases locaux (~/.bashrc poste perso)

alias funk-status='ssh storage-01 "sudo /usr/local/bin/funk-cluster status"'
alias funk-start='ssh storage-01 "sudo /usr/local/bin/funk-cluster start"'
alias funk-stop='ssh storage-01 "sudo /usr/local/bin/funk-cluster stop"'

Pour passer --k8s :

ssh storage-01 "sudo /usr/local/bin/funk-cluster stop --k8s"
ssh storage-01 "sudo /usr/local/bin/funk-cluster start --k8s"

Note

: les aliases funk-start/funk-stop ne passent pas les arguments. Utiliser la commande SSH directe pour --k8s.


Déploiement du script

Le script est versionné dans ansible/roles/litellm/files/funk-cluster. Pour le redéployer sur storage-01 :

scp ansible/roles/litellm/files/funk-cluster s01:/tmp/
ssh s01 "sudo cp /tmp/funk-cluster /usr/local/bin/funk-cluster && sudo chmod +x /usr/local/bin/funk-cluster"

Points d'attention

Sujet Détail
Ordre d'arrêt Hermes/LiteLLM → k8s (optionnel) → gpu-01 → Qdrant/PG → storage-01
Ordre de démarrage storage-01 (toujours déjà up) → gpu-01 → k8s (optionnel)
LiteLLM bloquant systemctl stop --timeout=10 + SIGKILL automatique si timeout
talosctl path /home/ansible/.config/talos/config requis explicitement (sudo change HOME)
--k8s non passé par alias Utiliser ssh s01 "sudo funk-cluster stop --k8s" directement