问题描述
我需要使用PVC来指定PV的规格,还需要确保它在PV中使用了自定义的本地存储路径。
我无法弄清楚如何在PVC中提及主机路径?
这是PVC配置:
apiVersion: v1
kind: PersistentVolumeClaim
Metadata:
name: mongo-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
这是mongodb部署:
spec:
replicas: 1
selector:
matchLabels:
app: mongo
template:
Metadata:
labels:
app: mongo
spec:
volumes:
- name: mongo-volume
persistentVolumeClaim:
claimName: mongo-pvc
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-volume
mountPath: /data/db
如何和在何处,我提到要在此处安装的 hostPath 吗?
解决方法
医生说您在创建PV时(创建PVC之前的步骤)设置了hostPath
。
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
创建PersistentVolumeClaim之后,Kubernetes控制平面将查找满足声明要求的PersistentVolume。如果控制平面找到具有相同StorageClass的合适的PersistentVolume,则会将声明绑定到该卷。
请参阅https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
,您不能(也不能)在PersistentVolumeClaim中强制使用特定的主机路径。
通常,Kubernetes集群将配置为dynamic volume provisioner,这将为您创建匹配的PersistentVolume。根据您集群的安装方式而定,它可以是Amazon EBS卷,Google Cloud Platform永久磁盘,iSCSI卷或some other type of storage;作为应用程序作者,您并不能真正控制它。 (您为GKE标记了这个问题,并且GKE文档包含a section on dynamic volume provisioning。)您无需指定可以在主机上安装卷的位置,并且无法在PersistentVolumeClaim中提供此详细信息。 / p>
随着显示的YAML的出现,并且上下文在GKE上,我希望Google自动配置GCE永久磁盘。如果pod在其他节点上重新安排了时间,则永久性磁盘将跟随pod到达新节点。您无需担心正在使用哪个特定主机目录。 Kubernetes将为您管理。
在大多数情况下,您将希望避免hostPath存储。您不直接控制Pod将在哪个节点上运行,因此不能保证Pod实际上会安排在具有数据量的节点上。它适用于在DaemonSet中运行的日志收集器之类的东西,您可以在其中保证每个节点上的该路径中都有有趣的内容,但不适用于常规应用程序数据库存储。