Kubernetes:带有 StatefulSet 的 NFS

Sha*_*han 5 nfs kubernetes persistent-volumes persistent-volume-claims statefulset

我正在尝试将现有的 NFS 与 StateFulSets 一起使用。

PresistentVolumeClaim使用 似乎自动创建volumeClaimTemplates

问题:

但是,由于PresistentVolumeClaim索赔整个PresistentVolume. 我必须PresistentVolume手动创建所有副本。有没有办法在 Kubernetes 中动态配置 NFS 持久卷?

注意: NFS Server 本身是静态的,只需要在 K8s 中动态创建卷,而不是 NFS Server 本身。

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

它需要 3 PresistentVolumeClaim,所以我必须创建 3PV供它使用。是否可以像 aws-ebs 等其他动态配置程序一样动态添加到 NFS 中

这是获取带有 NFS 持久卷的 StatefulSet 的正确方法吗?

Mar*_*nor 0

好消息是,Kubernetes 现在支持动态创建持久卷,如以下帖子所述:

坏消息是这个功能似乎不支持 NFS...这意味着即使不涉及 Kubernetes 也需要手动创建每个卷,这意味着有一定的意义:-(

话虽如此,Google 发现以下链接表明可能存在一种动态配置 NFS 的非官方方法。

希望这些链接有帮助。