Я новичок в мире 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
---