Skip to content

antony@notes:~/kubernetes$ cat "Install-AI-on-Taroko-K8s.md"

Install AI on Taroko K8s

2025-01-26· kubernetes

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