Funk-lab/progress/2026-05-12.md
alkatrazz 24c0bf9e12 docs: progression 2026-05-14 + désignore progress/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:28:10 +02:00

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

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-ai par défaut