Kubernetes: NFS с StatefulSets

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

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

Проблема:

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

Примечание. NFS-сервер сам по себе статичен, просто необходимо создавать тома в K8s динамически, а не на NFS-сервере.

Я использую пример mongo statefulset:

---
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.


person Shan    schedule 11.05.2017    source источник


Ответы (2)


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

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

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

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

person Mark O'Connor    schedule 11.05.2017
comment
Спасибо, Марк. Уже получил ссылку на инкубатор, пытаюсь заставить работать. - person Shan; 11.05.2017

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

Информация приведена ниже, но TL; DR гласит, что 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

person Steven Aldinger    schedule 16.08.2018