Kubernetes, как связать PersistentVolume с томом Claim - PullRequest
0 голосов
/ 07 ноября 2018

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

0 голосов
/ 07 ноября 2018

Вам нужен ClaimRef в определении постоянного тома, у которого есть имя PVC, с которым вы хотите связать свой PV. Кроме того, ClaimRef в PV должен иметь имя пространства имен, в котором находится PVC, поскольку PV независимы от пространства имен, а PVC - нет. Таким образом, одно и то же имя PVC может существовать в двух разных пространствах имен, поэтому обязательно указывать пространство имен вместе с именем PVC, даже если PVC находится в пространстве имен по умолчанию.

Вы можете обратиться к следующему ответу для PV, PVC и YAML-файлов с Statefulset для локального хранилища.

Можно ли монтировать разные модули в одну и ту же часть локального постоянного тома?

Надеюсь, это поможет.

...