编辑
2025-11-10
AI大模型
00
请注意,本文编写于 45 天前,最后修改于 44 天前,其中某些信息可能已经过时。

目录

一、编写K8S的yml文件

一、编写K8S的yml文件

先创建一个PV用于存储

js
vi open-webui-pv.yaml
yml
apiVersion: v1 kind: PersistentVolume metadata: name: open-webui-pv # PV 名称,需与后续绑定逻辑对应 spec: capacity: storage: 10Gi # 容量必须与 PVC 请求的 10Gi 一致 accessModes: - ReadWriteOnce # 访问模式必须与 PVC 的 ReadWriteOnce 一致 hostPath: path: /data/open-webui # 节点上的本地目录(需在目标节点手动创建) type: DirectoryOrCreate # 若目录不存在,自动创建 storageClassName: "" # 存储类必须与 PVC 一致(空,表示不使用存储类) persistentVolumeReclaimPolicy: Delete # PVC 删除后,自动删除 PV(避免残留 Released 状态) # 可选:限制 PV 只能被特定节点使用(若需要固定节点,取消注释并修改节点名称) # nodeAffinity: # required: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/hostname # operator: In # values: # - k8s-node01 # 替换为你的目标节点名称(如 k8s-node01)

然后每个节点都创建好存放的目录

js
mkdir -p /data/open-webui

然后启动

js
kubectl apply -f open-webui-pv.yaml

再写一个open-webui.yaml

js
vi open-webui.yaml
js
apiVersion: v1 kind: PersistentVolume metadata: name: open-webui-pv # PV 名称,需与后续绑定逻辑对应 spec: capacity: storage: 10Gi # 容量必须与 PVC 请求的 10Gi 一致 accessModes: - ReadWriteOnce # 访问模式必须与 PVCReadWriteOnce 一致 hostPath: path: /data/open-webui # 节点上的本地目录(需在目标节点手动创建) type: DirectoryOrCreate # 若目录不存在,自动创建 storageClassName: "" # 存储类必须与 PVC 一致(空,表示不使用存储类) persistentVolumeReclaimPolicy: Delete # PVC 删除后,自动删除 PV(避免残留 Released 状态) # 可选:限制 PV 只能被特定节点使用(若需要固定节点,取消注释并修改节点名称) # nodeAffinity: # required: # nodeSelectorTerms: # - matchExpressions: # - key: kubernetes.io/hostname # operator: In # values: # - k8s-node01 # 替换为你的目标节点名称(如 k8s-node01) [root@k8s-master01 openwebAI]# [root@k8s-master01 openwebAI]# cat open-webui.yaml # 持久化存储声明(不变) apiVersion: v1 kind: PersistentVolumeClaim metadata: name: open-webui-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: "" --- # Deployment(更新资源配置) apiVersion: apps/v1 kind: Deployment metadata: name: open-webui spec: replicas: 1 selector: matchLabels: app: open-webui template: metadata: labels: app: open-webui spec: containers: - name: open-webui image: ghcr.io/open-webui/open-webui:main ports: - containerPort: 8080 env: - name: OLLAMA_BASE_URL value: "http://192.168.201.120:11434" # 资源配置:最少2核4G,最多4核8G(核心修改) resources: requests: # 启动时至少分配的资源(保证基础运行) cpu: 2000m # 2核(1核=1000m) memory: 2Gi # 4G内存(1Gi≈1G) limits: # 最多能使用的资源(避免占用过多) cpu: 3000m # 4memory: 4Gi # 8G内存 volumeMounts: - name: data-volume mountPath: /app/backend/data volumes: - name: data-volume persistentVolumeClaim: claimName: open-webui-data --- # Service(不变) apiVersion: v1 kind: Service metadata: name: open-webui-service spec: selector: app: open-webui type: NodePort ports: - port: 8080 targetPort: 8080 nodePort: 30000

启动

js
kubectl apply -f open-webui.yaml

这时就分配到该节点运行了,用该节点的IP+service暴露的端口号30000进行访问 image.png

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document