antony@notes:~/kubernetes$ cat "Install-AI-on-Taroko-K8s.md"
Install AI on Taroko K8s
Install AI on Taroko K8s
# 1. 查看安裝環境
$ kls tkllm
tkllm:Up (Internal)
---------------------------------------------------------
[tkllm Infrastructure]
tkllm-control-plane : 172.22.72.1
tkllm-worker1 : 172.22.72.2
tkllm-worker2 : 172.22.72.3
[tkllm Cluster Network]
Service Subnet : 10.98.72.0/24
Pod Subnet : 10.244.72.0/21
TKGW : true
Gateway Interface : ens160
Gateway IP : 10.103.25.32/24
NODE_NAME POD_CIDR
tkllm-control-plane 10.244.72.0/25
tkllm-worker1 10.244.72.128/25
tkllm-worker2 10.244.73.0/25
# 2. 安裝 Local-Path
$ kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.30/deploy/local-path-storage.yaml
$ kubectl get storageclass
$ kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
# 3. 安裝 helm
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 4. 安裝 Milvus
$ kubectl create namespace ollama
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
$ helm repo update
$ helm upgrade --install milvus -n ollama \
--set cluster.enabled=false \
--set etcd.replicaCount=1 \
--set pulsar.enabled=false \
--set etcd.clusterDomain=tkllm.k8s \
--set minio.mode=standalone milvus/milvus
# 5. 檢查 Milvus 是否運作正常
$ kubectl -n ollama get pods
NAME READY STATUS RESTARTS AGE
milvus-etcd-0 1/1 Running 0 83m
milvus-minio-cd798dd6f-n8fl7 1/1 Running 0 83m
milvus-pulsarv3-bookie-0 1/1 Running 0 83m
milvus-pulsarv3-bookie-1 1/1 Running 0 83m
milvus-pulsarv3-bookie-2 1/1 Running 0 83m
milvus-pulsarv3-broker-0 1/1 Running 0 83m
milvus-pulsarv3-broker-1 1/1 Running 0 83m
milvus-pulsarv3-proxy-0 1/1 Running 0 83m
milvus-pulsarv3-proxy-1 1/1 Running 0 83m
milvus-pulsarv3-recovery-0 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-0 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-1 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-2 1/1 Running 0 83m
milvus-standalone-848fbd9c57-mwzcm 1/1 Running 0 83m
# 6. 安裝 Open Webui 並使用 llama3 model
$ helm repo add open-webui https://helm.openwebui.com/
$ helm repo update
$ nano ollama-values.yaml
ollama:
enabled: true
fullnameOverride: open-webui-ollama
ollama:
gpu:
enabled: false
number: 1
type: nvidia
models:
pull:
- llama3.2:1b
run:
- llama3.2:1b
persistentVolume:
enabled: true
ingress:
annotations: {}
class: nginx
enabled: true
existingSecret: ''
host: ollama.example.com
tls: false
openaiBaseApiUrl: open-webui-ollama.ollama.svc.tkllm.k8s
persistence:
accessModes:
- ReadWriteOnce
annotations: {}
enabled: true
existingClaim: ''
selector: ''
size: 2Gi
storageClass: local-path
nodeSelector:
app: taroko
extraEnvVars:
- name: OPENAI_API_KEY
value: "0p3n-w3bu!"
- name: WEBUI_AUTH
value: "False"
- name: VECTOR_DB
value: "milvus"
- name: MILVUS_URI
value: http://milvus.ollama.svc.tkllm.k8s:19530
clusterDomain: tkllm.k8s
$ helm upgrade --install open-webui open-webui/open-webui -n ollama -f ollama-values.yaml
# 7. 檢查 Open-Web UI 是否運作正常
$ kubectl -n ollama get pods
NAME READY STATUS RESTARTS AGE
milvus-etcd-0 1/1 Running 0 83m
milvus-minio-cd798dd6f-n8fl7 1/1 Running 0 83m
milvus-pulsarv3-bookie-0 1/1 Running 0 83m
milvus-pulsarv3-bookie-1 1/1 Running 0 83m
milvus-pulsarv3-bookie-2 1/1 Running 0 83m
milvus-pulsarv3-broker-0 1/1 Running 0 83m
milvus-pulsarv3-broker-1 1/1 Running 0 83m
milvus-pulsarv3-proxy-0 1/1 Running 0 83m
milvus-pulsarv3-proxy-1 1/1 Running 0 83m
milvus-pulsarv3-recovery-0 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-0 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-1 1/1 Running 0 83m
milvus-pulsarv3-zookeeper-2 1/1 Running 0 83m
milvus-standalone-848fbd9c57-mwzcm 1/1 Running 0 83m
open-webui-0 1/1 Running 0 16m
open-webui-ollama-7ccd54cf7c-5sp74 1/1 Running 0 18m
open-webui-pipelines-6445445d74-n8l9j 1/1 Running 0 18m
# 8. 將 Open-webui 對外開在 Taroko Gateway 的 30888 Port 上
$ kubectl -n ollama edit sts open-webui
...
spec:
containers:
name: open-webui
ports:
- containerPort: 8080
hostPort: 30888 # 新增此行
name: http
protocol: TCP
# 9. 再次檢查 Open-webui Pod 是否運作正常
$ kubectl -n ollama get pods
NAME READY STATUS RESTARTS AGE
milvus-etcd-0 1/1 Running 0 87m
milvus-minio-cd798dd6f-n8fl7 1/1 Running 0 87m
milvus-pulsarv3-bookie-0 1/1 Running 0 87m
milvus-pulsarv3-bookie-1 1/1 Running 0 87m
milvus-pulsarv3-bookie-2 1/1 Running 0 87m
milvus-pulsarv3-broker-0 1/1 Running 0 87m
milvus-pulsarv3-broker-1 1/1 Running 0 87m
milvus-pulsarv3-proxy-0 1/1 Running 0 87m
milvus-pulsarv3-proxy-1 1/1 Running 0 87m
milvus-pulsarv3-recovery-0 1/1 Running 0 87m
milvus-pulsarv3-zookeeper-0 1/1 Running 0 87m
milvus-pulsarv3-zookeeper-1 1/1 Running 0 87m
milvus-pulsarv3-zookeeper-2 1/1 Running 0 87m
milvus-standalone-848fbd9c57-mwzcm 1/1 Running 0 87m
open-webui-0 1/1 Running 0 20m
open-webui-ollama-7ccd54cf7c-5sp74 1/1 Running 0 22m
open-webui-pipelines-6445445d74-n8l9j 1/1 Running 0 22m
# 10. 在瀏覽器存取 Open WebUI
http://192.168.38.231:30888
# 11. 查看 service
# 12. 測試用 curl API 跟 Ollama 交流
$ curl http://10.98.72.164:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2:1b",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "1+1=?"
}
]
}'
# 13. 清除環境
$ helm -n ollama uninstall open-webui
$ helm -n ollama uninstall milvus
$ for i in $(kubectl -n ollama get pvc -o name); do kubectl -n ollama delete ${i}; done
$ kubectl delete ns ollama