apiVersion: apps/v1 kind: Deployment metadata: name: ollama namespace: nxtgauge-ai labels: app: ollama spec: replicas: 1 selector: matchLabels: app: ollama template: metadata: labels: app: ollama spec: containers: - name: ollama image: ollama/ollama:latest ports: - containerPort: 11434 name: http env: - name: OLLAMA_HOST value: "0.0.0.0:11434" # Keep a loaded model resident for 30 min of inactivity instead # of Ollama's 5-minute default — job-description/resume/cover- # letter traffic is bursty, and reloading a 2.5-5GB model from # disk on every request would add multi-second latency to each # first call after a gap. - name: OLLAMA_KEEP_ALIVE value: "30m" volumeMounts: - name: ollama-models mountPath: /root/.ollama resources: requests: cpu: 1000m memory: 3Gi limits: # qwen3:4b (~2.5GB on disk) and qwen3:8b (~5.2GB) are already # pulled onto the PVC, but the previous 1500Mi limit could # only ever load gemma3:270m — which is why every LiteLLM # model alias was mapped to gemma3:270m regardless of name # (see apps/litellm/base/configmap.yaml). Sized to comfortably # hold qwen3:8b plus KV cache/runtime overhead, with headroom; # node has 16GB total and was at ~26% memory use. cpu: 4000m memory: 8Gi volumes: - name: ollama-models persistentVolumeClaim: claimName: ollama-models