3.9 KiB
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 :
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, helmlogs.general.level=INFO(paslog.level— paramètre invalide → rollback helm) - dnsmasq wildcard :
address=/.lab.local/192.168.10.200→ toutes les entrées*.lab.localré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 :
Environment=ROCR_VISIBLE_DEVICES=
Environment=HIP_VISIBLE_DEVICES=-1
Ouverture firewall
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 :
model:
context_length: 65536 # override le check Hermes — llama-server peut rester à 32768
Profil par défaut
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-aipar défaut