非常抱歉,上述PVC中的storage-name
确实有问题。应该使用volumeName
字段来指定使用哪个PV卷,而不是使用标签匹配。以下是修正后的yaml文件:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb
spec:
replicas: 1
serviceName: mongodb
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongo-container
image: mongo
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db # MongoDB默认数据目录路径,可以根据需要修改。
ports:
- containerPort: 27017 # MongoDB默认端口号。
volumes:
- name: mongo-persistent-storage
persistentVolumeClaim:
claimName: mongo-pv-claim # 需要与下面定义的PVC名称保持一致。
---
apiVersion: v1
kind: Service
metadata:
name: mongodb
spec:
selector:
app : mongodb
ports :
- port : 27017
targetPort : 27017
---
apiVersion : v1
kind : PersistentVolume
metadata :
name : mongo-pv-volume # 给PV命名。
spec :
capacity :
storage : 3Gi # 设置存储容量大小。
accessModes :
- ReadWriteOnce # 只读/写模式,表示只有一个节点可以挂载该卷。如果需要多个节点共享,则修改为ReadWriteMany或者ReadOnlyMany。
persistentVolumeReclaimPolicy : Retain # PV回收策略设置为Retain,避免数据丢失。
storageClassName : local-storage # 设置存储类型为本地存储,需要提前在Kubernetes集群中定义。
local :
path : /mnt/data/mongo-pv # 指定PV的挂载路径。在每个节点上必须都存在该路径,并且有足够的空间来存储数据。
---
apiVersion : v1
kind : PersistentVolumeClaim
metadata :
name : mongo-pv-claim # 给PVC命名
spec :
accessModes :
- ReadWriteOnce # 只读/写模式
resources :
requests :
storage : 3Gi # 请求3Gi的存储容量大小。
volumeName: mongo-pv-volume # 指定使用哪个PV卷。