Kubernetes, как связать PersistentVolume с томом Claim
Я новичок в мире Kubernetes, и я пытаюсь выяснить, каким образом volumeClaim или volumeClaimTemplates, определенные в StatefulSet, могут быть связаны с определенным 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
---
1 ответ
ClaimRef вам нужен в определении постоянного тома с именем PVC, к которому вы хотите привязать свой PV. Кроме того, ClaimRef в PV должен иметь имя пространства имен, в котором находится PVC, поскольку PV независимы от пространства имен, а PVC - нет. Таким образом, одно и то же имя PVC может существовать в двух разных пространствах имен, поэтому обязательно указывать пространство имен вместе с именем PVC, даже если PVC находится в пространстве имен по умолчанию.
Вы можете сослаться на следующий ответ для PV, PVC и YAML-файлов Statefulset для локального хранилища.
Можно ли монтировать разные модули в одну и ту же часть локального постоянного тома?
Надеюсь это поможет.