Cluster capacity and probes
Measured 2026-09-24 (kubectl get nodes): three control-plane nodes
(cp-01..03, 4 CPU / 8 GiB, tainted NoSchedule) and three workers
(node-01..03, 4 CPU / 16 GiB). Workloads only land on the workers: about
12 cores and 48 GiB for the whole cluster, no GPU. Re-measure before sizing;
this page is a snapshot, the nodes are the truth.
Scale out, not up
A CPU-bound inference service (OpenAnonymiser, Ollama) gains more from one
replica per worker with required anti-affinity than from a larger limit on one
pod. Roll such a Deployment with maxSurge: 0, maxUnavailable: 1 when
replicas equal the number of workers — a surge pod is unschedulable.
Probes on single-worker inference services
A single-worker inference service blocks its own /health during a forward
pass. With the Kubernetes default probe timeout of 1 s, OpenAnonymiser
dropped out of the Service endpoints mid-run and the next call failed with
No route to host — about 80 documents were stranded before this was found.
Give such services a generous readiness timeout (10 s, failure threshold 6)
and liveness (10 s, threshold 12), or a TCP probe.
The agent host is not a compute node
The host the Claude sessions run on is small (4 GiB RAM, 2 vCPU, no GPU). Starting a torch/GLiNER model there once froze it and needed a reboot. Verify such code statically and with unit tests there; run the inference smoke on a worker.