Eu consigo executar o Ollama como um k8s STS. Estou usando-o para o aplicativo Python Langchain LLM/RAG. No entanto, o seguinte ENTRYPOINT
script Dockerfile que tenta puxar uma lista de imagens exportadas como MODELS
ENV do manifesto k8s STS encontra problemas. O Dockerfile tem o seguinte ENTRYPOINT
e CMD
:
ENTRYPOINT ["/usr/local/bin/run.sh"]
CMD ["bash"]
run.sh
:
#!/bin/bash
set -x
ollama serve&
sleep 10
models="${MODELS//,/ }"
for i in "${models[@]}"; do \
echo model: $i \
ollama pull $i \
done
Registros do k8s:
+ models=llama3.2
/usr/local/bin/run.sh: line 10: syntax error: unexpected end of file
Solução de David Maze:
lifecycle:
postStart:
exec:
command:
- bash
- -c
- |
for i in $(seq 10); do
ollama ps && break
sleep 1
done
for model in ${MODELS//,/ }; do
ollama pull "$model"
done
ollama-0 1/2 CrashLoopBackOff 4 (3s ago) 115s
ollama-1 1/2 CrashLoopBackOff 4 (1s ago) 115s
Warning FailedPostStartHook 106s (x3 over 2m14s) kubelet PostStartHook failed
$ k logs -fp ollama-0
Defaulted container "ollama" out of: ollama, fluentd
Error: unknown command "ollama" for "ollama"
Atualizar Dockerfile
:
ENTRYPOINT ["/bin/ollama"]
#CMD ["bash"]
CMD ["ollama", "serve"]
Preciso personalizar Dockerfile
para poder instalar o Nvidia Container Toolkit.