这是因为我们没有配置持久化存储,需要在配置后再拉取ollama

# 1. 命名空间(不变)
apiVersion: v1
kind: Namespace
metadata:
  name: ai-services
---
# 2. 核心部署:优化内存 + 持久化 + 固定调度到node2
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ollama
  namespace: ai-services
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ollama
  template:
    metadata:
      labels:
        app: ollama
    spec:
      # ✅ 强制调度到【12GB内存的node2】节点(核心!)
      nodeSelector:
        kubernetes.io/hostname: k8s-node2
      
      containers:
      - name: ollama
        image: ollama/ollama:latest
        ports:
        - containerPort: 11434

        # ✅ 持久化挂载(重启不丢模型)
        volumeMounts:
        - name: ollama-data
          mountPath: /root/.ollama

        # ✅ 适配12GB节点的内存/CPU参数(最关键!)
        resources:
          # 最低保障:必须分配6GB内存,2核CPU
          requests:
            memory: "6Gi"
            cpu: "2"
          # 最高限制:最多用10GB内存,4核CPU
          limits:
            memory: "10Gi"
            cpu: "4"

      # ✅ 持久化存储卷
      volumes:
      - name: ollama-data
        persistentVolumeClaim:
          claimName: ollama-pvc
---
# 3. 持久化存储声明(OpenEBS)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ollama-pvc
  namespace: ai-services
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: openebs-hostpath
  resources:
    requests:
      storage: 50Gi
---
# 4. 服务访问(不变)
apiVersion: v1
kind: Service
metadata:
  name: ollama-service
  namespace: ai-services
spec:
  type: NodePort
  selector:
    app: ollama
  ports:
  - port: 11434
    targetPort: 11434

重点是注释标注的几行代码,创建pvc

如果将代码保存到了github且部署了argocd则需要记得把代码push到仓库里然后拉取ollama


修改完后apply应用,因为replicas: 1只启动一个实例,所以应用后立刻看所有pod会有一个多余的ollamapod,k8s会自动删除旧的启动新的。

[root@k8s-node1 ollama]# kubectl get pvc -n ai-services
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       VOLUMEATTRIBUTESCLASS   AGE
mysql-pvc    Bound    pvc-ba729195-6fd1-4c1d-949f-15729884b89e   5Gi        RWO            openebs-hostpath   <unset>                 6d21h
ollama-pvc   Bound    pvc-eda794c6-093d-4489-8d12-8b1d134a6876   10Gi       RWO            openebs-hostpath   <unset>                 8m31s
[root@k8s-node1 ollama]# pwd
/root/sre-agent-gitops/apps/ollama
----------------------------------------------
[root@k8s-node2 local]# pwd
/var/openebs/local
[root@k8s-node2 local]# ll
total 0
drwxrwxrwx 3 root root 60 Mar 29 02:47 pvc-eda794c6-093d-4489-8d12-8b1d134a6876

如上路径下可以看到对应的目录名字一致即持久化成功,可以删除pod或者重启虚拟机在上一步确认

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐