atlas-iac/services/ai-llm/batch-seed-job.yaml

57 lines
2.1 KiB
YAML

# 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