Kar*_*mar 5 kubernetes microservices google-kubernetes-engine
我需要使用 PVC 来指定 PV 的规格,并且还需要确保它在 PV 中使用自定义本地存储路径。
我不知道如何在 PVC 中提及主机路径?
这是 PVC 配置:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Run Code Online (Sandbox Code Playgroud)
这是 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
Run Code Online (Sandbox Code Playgroud)
我如何以及在哪里提及要在此处挂载的主机路径?
Doc说你hostPath在创建PV时设置(创建PVC之前的步骤)。
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
Run Code Online (Sandbox Code Playgroud)
创建 PersistentVolumeClaim 后,Kubernetes 控制平面会查找满足声明要求的 PersistentVolume。如果控制平面找到具有相同 StorageClass 的合适 PersistentVolume,它将声明绑定到该卷。
请参阅https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
您不会(也不能)在 PersistentVolumeClaim 中强制使用特定的主机路径。
通常,Kubernetes 集群将配置一个动态卷配置程序,它将为您创建匹配的 PersistentVolume。根据集群的安装方式,该集群可能是 Amazon EBS 卷、Google Cloud Platform 永久磁盘、iSCSI 卷或其他类型的存储;作为应用程序作者,您实际上无法控制这一点。(您为 GKE 标记了这个问题,并且 GKE 文档中有一个关于动态卷配置的部分。)您不需要指定卷可能安装在主机上的位置,并且无法在 PersistentVolumeClaim 中提供此详细信息。
通过您显示的 YAML 以及 GKE 上的上下文,我希望 Google 能够自动配置 GCE 永久性磁盘。如果 Pod 在不同的节点上重新调度,持久磁盘将跟随 Pod 到达新节点。您无需担心正在使用哪个特定的主机目录;Kubernetes 将为您管理这个。
在大多数情况下,您会希望避免使用 hostPath 存储。您无法直接控制 pod 将在哪个节点上运行,因此无法保证 pod 实际上会调度到具有数据量的节点上。它适用于像 DaemonSet 中运行的日志收集器这样的东西,您可以保证每个节点上的该路径中都有有趣的内容,但不适用于一般应用程序数据库存储。