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>
This commit is contained in:
alkatrazz 2026-05-13 02:11:21 +02:00
parent 07b94fe8a8
commit a1826fe339
4 changed files with 543 additions and 2 deletions

103
admin/cluster.md Normal file
View file

@ -0,0 +1,103 @@
# Gestion du cluster Funk
Script central : `/usr/local/bin/funk-cluster` sur storage-01.
Aliases locaux configurés dans `~/.bashrc` du poste perso.
---
## Commandes
```bash
# 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)
```bash
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` :
```bash
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 :
```bash
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 |