4

我正在尝试将现有 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,所以我必须创建 3PV才能使用。这可以像其他动态供应商(如 aws-ebs)一样动态添加到 NFS 中吗

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

4

2 回答 2

0

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

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

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

希望这些链接有所帮助。

于 2017-05-11T16:40:33.523 回答
0

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

于 2018-08-16T04:50:20.317 回答