mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 07:04:43 +02:00
122 lines
3.9 KiB
Markdown
122 lines
3.9 KiB
Markdown
# 2026-05-12 — Kubernetes (Flannel fix, MetalLB, Traefik, DNS) + Architecture multi-modèles
|
|
|
|
## Résumé
|
|
|
|
Cluster Kubernetes opérationnel : correction du crash Flannel, déploiement MetalLB L2 +
|
|
Traefik + wildcard DNS `*.lab.local`. Mise en place de l'architecture multi-modèles sur
|
|
gpu-01 : 1 instance GPU + 2 instances CPU avec isolation CPUAffinity/MemoryMax.
|
|
Création des 5 profils Hermes. Documentation complète admin/install/.
|
|
|
|
---
|
|
|
|
## Flannel CrashLoopBackOff
|
|
|
|
**Symptôme** : 2 pods flannel en `CrashLoopBackOff` dans kube-system.
|
|
|
|
**Cause** : Le `ClusterRoleBinding flannel` pointait vers le namespace `kube-flannel`
|
|
(supprimé) au lieu de `kube-system`.
|
|
|
|
**Fix** :
|
|
```bash
|
|
kubectl patch clusterrolebinding flannel --type='json' \
|
|
-p='[{"op":"replace","path":"/subjects/0/namespace","value":"kube-system"}]'
|
|
```
|
|
|
|
---
|
|
|
|
## MetalLB + Traefik + DNS wildcard
|
|
|
|
- MetalLB L2 mode : pool `192.168.10.200-230`
|
|
- Traefik : `loadBalancerIP: 192.168.10.200`, helm `logs.general.level=INFO`
|
|
(pas `log.level` — paramètre invalide → rollback helm)
|
|
- dnsmasq wildcard : `address=/.lab.local/192.168.10.200`
|
|
→ toutes les entrées `*.lab.local` résolvent vers Traefik
|
|
|
|
---
|
|
|
|
## Architecture multi-modèles gpu-01
|
|
|
|
### Instances llama-server
|
|
|
|
| Service | Port | Modèle | Infra | Isolation |
|
|
|---|---|---|---|---|
|
|
| `llama-server` | 1234 | Qwen3-8B Q4_K_M | GPU RX 6700XT | ROCm |
|
|
| `llama-server-system` | 1236 | Qwen3-1.7B Q4_K_M | CPUs 0-6,16-22 | 6G RAM |
|
|
| `llama-server-monitor` | 1237 | Qwen3-1.7B Q4_K_M | CPUs 7-13,23-29 | 6G RAM |
|
|
|
|
GPU = RX 6700XT 12 GB VRAM, CPU = Ryzen 9 5950X 16c/32t (32 GB RAM)
|
|
|
|
### Masquage GPU pour les instances CPU
|
|
|
|
Les instances CPU crashaient en SEGV car ROCm tentait d'initialiser le GPU même
|
|
avec `--n-gpu-layers 0` :
|
|
```ini
|
|
Environment=ROCR_VISIBLE_DEVICES=
|
|
Environment=HIP_VISIBLE_DEVICES=-1
|
|
```
|
|
|
|
### Ouverture firewall
|
|
|
|
```bash
|
|
firewall-cmd --permanent --add-port=1235/tcp --add-port=1236/tcp --add-port=1237/tcp
|
|
firewall-cmd --reload
|
|
```
|
|
|
|
---
|
|
|
|
## 5 profils Hermes
|
|
|
|
Créés avec `HERMES_HOME=/srv/data/hermes hermes profile create <nom>` puis configurés
|
|
dans `/srv/data/hermes/profiles/<nom>/config.yaml`.
|
|
|
|
| Profil | Modèle LiteLLM | Rôle |
|
|
|---|---|---|
|
|
| `funk-ai` | `qwen3-8b` (GPU) | Principal — par défaut |
|
|
| `brain` | `claude-sonnet-4-6` (API) | Analyse complexe |
|
|
| `dev` | `qwen2.5-7b-dev` (CPU) | Développement (supprimé en session suivante) |
|
|
| `system` | `qwen3-1.7b-system` (CPU) | Tâches système rapides |
|
|
| `monitor` | `qwen3-1.7b-monitor` (CPU) | Monitoring rapide |
|
|
|
|
Tous pointent vers LiteLLM (`http://127.0.0.1:4000/v1`) qui route selon le modèle.
|
|
|
|
### Problème HERMES_HOME vs HOME
|
|
|
|
Les profils créés sans `HERMES_HOME` explicite étaient créés dans `/opt/hermes/.hermes/`
|
|
(HOME du compte hermes) au lieu de `/srv/data/hermes/` (HERMES_HOME).
|
|
|
|
**Fix** : Toujours préfixer avec `HERMES_HOME=/srv/data/hermes` pour toutes les commandes hermes.
|
|
|
|
### Problème contexte 64k minimum
|
|
|
|
Hermes exige un contexte ≥ 64 000 tokens pour tout modèle. Override via config.yaml :
|
|
```yaml
|
|
model:
|
|
context_length: 65536 # override le check Hermes — llama-server peut rester à 32768
|
|
```
|
|
|
|
### Profil par défaut
|
|
|
|
```bash
|
|
HERMES_HOME=/srv/data/hermes hermes profile use funk-ai
|
|
```
|
|
|
|
---
|
|
|
|
## Documentation créée
|
|
|
|
| Fichier | Contenu |
|
|
|---|---|
|
|
| `admin/install/storage-01.md` | Guide complet installation AlmaLinux → RAID5 → 8 phases Ansible |
|
|
| `admin/install/gpu-01.md` | AlmaLinux → ROCm → NFS → llama-server |
|
|
| `admin/install/kubernetes.md` | Talos → talhelper → MetalLB → Traefik → DNS wildcard |
|
|
| `admin/install/README.md` | Index + ordre d'installation |
|
|
| `admin/README.md` | Refonte — 2 sections : guides install vs référence opérationnelle |
|
|
|
|
---
|
|
|
|
## État final
|
|
|
|
- Cluster k8s : Flannel OK, MetalLB OK, Traefik OK, DNS wildcard OK
|
|
- gpu-01 : 3 instances llama-server (GPU + 2 CPU)
|
|
- LiteLLM : 5 modèles routés (qwen3-8b, qwen3-1.7b-system/monitor, claude-sonnet/opus)
|
|
- Hermes : 5 profils créés, `funk-ai` par défaut
|