gpt4 book ai didi

Kubernetes,如何将 PersistentVolume 链接到 volumeClaim

转载 作者:行者123 更新时间:2023-12-02 11:44:15 24 4
gpt4 key购买 nike

我是 Kubernetes 世界的新手,我试图弄清楚 StatefulSet 中定义的 volumeClaim 或 volumeClaimTemplates 如何链接到特定的 PersistentVolume。

我已经按照一些教程来理解和设置本地 PersistentVolume。如果我以 Elasticsearch 为例,当 StatefulSet 启动时,PersistantVolumeClaim 绑定(bind)到 PersistantVolume。

如您所知,对于本地 PersistentVolume,我们必须定义存储目的地的本地路径。

对于 Elasticsearch,我定义了类似这样的内容

local:
path: /mnt/kube_data/elasticsearch

但在实际项目中,存在不止一个持久卷。因此,我将在路径/mnt/kube_data 中有多个文件夹。 Kubernetes 如何为持久卷声明选择正确的持久卷?

我不希望 Kubernetes 将数据库数据放在为另一个服务创建的持久卷中。

这是 Elasticsearch 的配置:
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: elasticsearch-sts
spec:
serviceName: elasticsearch
replicas: 1
[...]
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
volumeMounts:
- name: elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: local-storage
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-elasticsearch
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/elasticsearch
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
---

最佳答案

您需要在持久卷定义中具有您想要绑定(bind) PV 的 PVC 名称的 ClaimRef。此外,PV 中的 ClaimRef 应该具有 PVC 所在的命名空间名称,因为 PV 独立于命名空间,而 PVC 不是。因此同名 PVC 可以存在于两个不同的命名空间中,因此即使 PVC 位于默认命名空间中,也必须提供命名空间和 PVC 名称。

您可以引用以下关于 PV、PVC 和 statefulset yaml 文件的本地存储答案。

Is it possible to mount different pods to the same portion of a local persistent volume?

希望这可以帮助。

关于Kubernetes,如何将 PersistentVolume 链接到 volumeClaim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com