【问题标题】:Kubernetes: NFS with StatefulSetsKubernetes:带有 StatefulSets 的 NFS
【发布时间】:2017-10-10 08:09:17
【问题描述】:

我正在尝试将现有 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

它需要 3 个PresistentVolumeClaim,所以我必须创建 3 个PV 才能使用。是否可以像其他动态配置器(如 aws-ebs)一样在 NFS 中动态添加它

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

【问题讨论】:

    标签: kubernetes nfs persistent-volumes persistent-volume-claims statefulset


    【解决方案1】:

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

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

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

    希望这些链接有所帮助。

    【讨论】:

    • 谢谢马克。已经获得孵化器链接,正在努力使其工作。
    【解决方案2】:

    这是我昨天才回来的一项正在进行的工作(我的解决方案),但如果它适合您的目的(或以后发现的任何人),我的建议是查看 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 2018-08-22
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多