Ollama模型部署容器后重启发现大模型消失了
这是因为我们没有配置持久化存储,需要在配置后再拉取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或者重启虚拟机在上一步确认
更多推荐




所有评论(0)