Kubernetes,如何将PersistentVolume链接到volumeClaim

Kubernetes,如何将PersistentVolume链接到volumeClaim,kubernetes,persistent-volumes,persistent-volume-claims,Kubernetes,Persistent Volumes,Persistent Volume Claims,我是Kubernetes领域的新手,我试图弄清楚如何将StatefulSet中定义的volumeClaim或volumeClaimTemplates链接到特定的PersistentVolume 我已经学习了一些教程来理解和设置本地PersistentVolume。如果以Elasticsearch为例,当StatefulSet启动时,PersistantVolumeClaim绑定到PersistantVolume 正如您所知,对于本地PersistentVolume,我们必须定义到存储目标的本地路

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

我已经学习了一些教程来理解和设置本地PersistentVolume。如果以Elasticsearch为例,当StatefulSet启动时,PersistantVolumeClaim绑定到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
---

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

对于用于本地存储的PV、PVC和statefulset yaml文件,您可以参考以下答案


希望这有帮助。

我尝试使用ClaimRef,但kubenetes没有将PersistantVolume与volumeClaimTemplates绑定。请共享Statefulset中定义的PV yaml和volumeClaimTemplates,好吗?