Кубернетес: NFS с StatefulSets

Я пытаюсь использовать существующую NFS с StateFulSets.

Создание PresistentVolumeClaim кажется автоматическим с помощью volumeClaimTemplates,

Проблема:

Но, так как PresistentVolumeClaim утверждает, что весь PresistentVolume, Я должен создать PresistentVolume вручную для всех реплик. Есть ли способ динамически подготовить постоянные тома NFS в Kubernetes?

Примечание. Сам NFS-сервер статичен, просто нужно динамически создавать тома в K8, а не сам NFS-сервер.

Я использую пример состояния Монго:

---
apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    name: mongo
spec:
  ports:
  - port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    role: mongo
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
spec:
  serviceName: "mongo"
  replicas: 3
  template:
    metadata:
      labels:
        role: mongo
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo
          command:
            - mongod
            - "--replSet"
            - rs0
            - "--smallfiles"
            - "--noprealloc"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-data
              mountPath: /data/db
        - name: mongo-sidecar
          image: cvallance/mongo-k8s-sidecar
          env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: "role=mongo"
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          type: nfs

Нужно 3 PresistentVolumeClaimтак что я должен создать 3 PV для этого использовать. Может ли это быть динамически добавлено в NFS, как другие динамические провайдеры, такие как aws-ebs?

Это правильный способ получить StatefulSet с постоянным томом NFS.

2 ответа

Хорошей новостью является то, что да, Kubernetes теперь поддерживает динамическое создание постоянных томов, как описано в следующей публикации:

Плохая новость заключается в том, что эта функция, похоже, не поддерживает NFS... Что означает определенный смысл, учитывая, что каждый том необходимо создавать вручную даже без участия Kubernetes:-(

Сказав, что Google нашел следующую ссылку, которая предполагает, что может быть неофициальный способ динамического предоставления NFS.

Надеюсь, что эти ссылки помогут.

Это работа в процессе, к которой я вернулся только вчера (мое решение), но мой совет, если он подходит вашим целям (или кому-то, кто обнаружит это позже), это проверить GlusterFS и Heketi.

Информация приведена ниже, но TLDR гласит, что GlusterFS - это ваша NFS, а Heketi может автоматически предоставить остальное. Мое репозиторий github автоматизирует настройку... это уродливо... но оно работает для меня, и я сделаю его менее уродливым с тем, что знаю сейчас.


GlusterFS - бесплатная масштабируемая сетевая файловая система с открытым исходным кодом. https://github.com/gluster/glusterfs https://www.gluster.org/

Основанная на RESTful структура управления томами для GlusterFS https://github.com/heketi/heketi


https://github.com/stevenaldinger/gke-glusterfs-heketi

Другие вопросы по тегам