# services/ai-llm/batch-seed-job.yaml apiVersion: batch/v1 kind: Job metadata: name: ollama-batch-seed-v2 namespace: ai spec: backoffLimit: 2 activeDeadlineSeconds: 7200 template: metadata: labels: app: ollama-batch-seed spec: automountServiceAccountToken: false restartPolicy: Never nodeSelector: kubernetes.io/hostname: titan-23 tolerations: - {key: veles.bstein.dev/simulation, operator: Equal, value: "true", effect: NoSchedule} containers: - name: seed image: ollama/ollama@sha256:0c0a83210471fb50226bcdc2d6611d20ab13ae87e024cc304c94a6a5765c5e65 env: - {name: OLLAMA_HOST, value: "127.0.0.1:11434"} - {name: OLLAMA_MODELS, value: /models} - {name: OLLAMA_NO_CLOUD, value: "1"} command: [/bin/bash, -ec] args: - | ollama serve >/tmp/ollama.log 2>&1 & server_pid=$! trap 'kill "$server_pid"; wait "$server_pid" || true' EXIT for attempt in $(seq 1 60); do ollama list >/dev/null 2>&1 && break sleep 1 done ollama pull qwen3.5:9b >/tmp/pull.log 2>&1 || { tail -c 1000 /tmp/pull.log; exit 1; } ollama pull qwen3.6:27b >/tmp/pull.log 2>&1 || { tail -c 1000 /tmp/pull.log; exit 1; } cd /models/manifests/registry.ollama.ai/library sha256sum -c <<'PINS' 6488c96fa5faab64bb65cbd30d4289e20e6130ef535a93ef9a49f42eda893ea7 qwen3.5/9b 9d5803d493a991af27b9441c098aa56f2ed7bbd260877f075ec09b575c049bc3 qwen3.6/27b PINS # Runtime mounts this cache read-only, after registry digest checks. chmod -R a+rX /models touch /models/.pilot-v1-ready resources: requests: {cpu: 500m, memory: 512Mi} limits: {cpu: "2", memory: 2Gi} volumeMounts: - {name: models, mountPath: /models} volumes: - name: models persistentVolumeClaim: claimName: ollama-batch-titan23