chore(llm-serving): park clef-serve to free a V100 for candle-vllm #91
Open
rock
wants to merge 1 commits from
chore/park-clef-for-candle into main
pull from: chore/park-clef-for-candle
merge into: :main
:main
:fix/forgejo-gitea-cpu-limits
:fix/llm-serving-poimen-netpol
:chore/park-clef-for-candle
:feat/k8s-api-public-tunnel
:feat/key-rotation-crd
:feat/comfyui-sso
:chore/authentik-retirement
:fix/grafana-oidc-secret
:feat/grafana-gotify-contact
:feat/grafana-gotify-bridge
:feat/igotify-token
:revert/gotify-sso
:feat/gotify-sso
:fix/authentik-tunnel-route
:feat/zitadel-oidc-consumer-wiring
:integration/merge-56-58-69
:harness/zitadel-iam-wiring
:fix/prometheus-retention-size
:fix/allow-zitadel-chart-repo
:fix/sops-generator-indent
:fix/sops-drop-orphan-forgejo-pat
:chore/remove-azhi-riotpiao-app
:fix/certmanager-dns01
:fix/retire-longhorn-disk4
:feat/azhi-cnpg-test
:feat/azhi-riotpiao-argocd
:fix/etcd-defrag-main
:feat/local-path-backend
:fix/minio-frozen-image-pin
:fix/minio-mc-image
:fix/secrets-placeholders
:fix/minio-image
:harness/51-vllm-prefill-scheduling
:paperless-ai-sops-fix
:fix/aggressive-cleanup-and-paperless-ai
:feat/tekton-pipelines-ci
:fix/longhorn-storage-isolation
:fix/cnpg-3-replicas
:fix/org-transfer-urls
:fix/argocd-repo-url
:feat/gotify-notifications
:feat/p3.9-e2e-auth-test
No Reviewers
Labels
Clear labels
area/auth
area/authentik
area/downstream
area/event-bus
area/gateway
area/notifications
area/observer
priority/high
priority/medium
status/blocked
status/done
status/in-progress
status/review
status/todo
type/docs
type/feature
type/infra
Authentication & authorization
Authentik OIDC provider config
Downstream service changes
Event routing and notification pipeline
API gateway code (homelab-frontend)
Gotify, SMTP, push notifications
Poimen goal-driven observation and pattern detection
Must have
Should have
Blocked by dependency
Completed
Currently being worked on
Ready for review
Not started
Documentation
New feature
Infrastructure change
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: riotpiao-poimen/homelab#91
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Blocker this fixes
candle-vllmcannot start anywhere.worker-1has four V100-32GB and all four are allocated.coder-predictorcoder,reasoningreasoning-predictorreasoningclef-serveclef-serveis the only GPU consumer in the namespace that is not vLLM, so it is the only card that can be released while still keeping vLLM healthy as instructed. Measured over its last 5,000 log lines since start (2026-10-30T06:23:40Z): 4,994GET /healthprobes, 2GET /v1/models, 1GET /v1/completions, 1GET /v1/chat/completions, 1GET /docs, 1GET /. No successful inference: the four inference-path requests are GET and those routes answer POST. Nothing in git selects its Service.Teardown plan — staged, one gate per stage
clef-serve(replicas: 0) — this PRreplicas: 1LLM_CHAT_BASEbackreasoning.yaml+coder.yamlfromkustomization.yaml, merge, thenkubectl deleteclef-serveon the 4thGPU accounting through the plan
Stage 0 and stage 3 both release exactly one card at a time relative to what candle needs, so ingest never has to stop.
Hard constraints on how the teardown may happen
llm-servingrunsselfHeal: true, sokubectl scaleandkubectl deleteare reverted within minutes. This is not a preference, it is measured: a live patch to the ingress policy and to the served-model-name both reverted before their new pods finished loading.prune: false. After removing a file fromkustomization.yaml, ArgoCD stops managing the object but does not delete it. Stage 3 therefore needs an explicitkubectl deleteafter the merge, or the pods keep holding cards while no longer being reconciled.status: doneand extraction runs, but every save fails withno unique or exclusion constraint matching the ON CONFLICT specificationbecause the partial unique index onmemory_entityis missing while migration 017 is recorded applied. If the handoff gate used "entity count rose" it could never pass. The gate is that the extraction LLM call succeeds and returns.What breaks, and when
~/.pi/agent/models.jsondefinescoder-vllmathttp://localhost:8000/v1, akubectl port-forwardontocoder-predictor. Deleting that InferenceService ends the port-forward and pi has no coder model until candle-vllm serves one. Expected, given vLLM is retired, but it is the day-to-day model, so the timing matters.clef-finetuneneeds it live, stage 0 must wait or clef must move to networked hardware.reasoningstays ambiguous only until stage 3. After the vLLM teardown only one backend remains, so the duplicate name resolves itself.Open questions sent to the memory terminal
clef-serve; if NO, which workload instead.reasoning-longso the client name survives the handoff.Unrelated bug found while checking:
poimen-memory/k8s/app/config.yamlis modified but uncommitted withLLM_CHAT_BASE: http://reasoning-long-predictor.llm-serving.svc.cluster.local— no such Service exists. Committing and applying it would kill ingest on DNS failure. Live ConfigMap still points atreasoning-predictor, which is why ingest works today.candle-vllm cannot start. worker-1 has four V100-32GB and all four are allocated: coder 2, reasoning 1, clef-serve 1. Free is 0, so a new GPU pod sits Pending no matter what it is. This pod is the only GPU consumer in the namespace that is not vLLM, so it is the only card that can be released without breaking the instruction to keep vLLM healthy until candle-vllm answers. Ingest keeps running on reasoning-predictor, and pi keeps its coder model on coder-predictor. Measured activity over the last 5,000 log lines, since it started on 2026-10-30T06:23:40Z: 4,994 GET /health (kubelet probes) 2 GET /v1/models 1 GET /v1/completions 1 GET /v1/chat/completions 1 GET /docs 1 GET / No successful inference. The four inference-path requests are GET, and these routes answer POST, so they cannot have produced a completion. It held a card for a day to answer liveness probes, which is the same shape as the comfyui retirement. Nothing in git selects this Service. Reversible: set replicas back to 1. It should return once the rollout settles, because 30B-A3B takes 1 card and Coder-Next TP=2 takes 2, which leaves card 4 for this workload. Not applied. ArgoCD runs selfHeal for llm-serving, so a live scale to 0 is reverted within minutes; this needs the merge to stick. Apply through kustomize, not `kubectl apply -f clef-serve.yaml`: the Deployment mounts the generated ConfigMap by its hashed name, and a raw apply drops the hash.44fbf071e1tod821718375View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.