Kubernetes: NFS with StatefulSets



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

使用volumeClaimTemplates创建PresistentVolumeClaim似乎是自动的。

问题:

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

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

我正在使用 mongo 状态集示例:

---
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 现在支持动态创建持久卷,如以下帖子中所述:

  • http://blog.kubernetes.io/2017/03/dynamic-provisioning-and-storage-classes-kubernetes.html

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

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

  • https://github.com/kubernetes-incubator/external-storage/tree/master/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

相关内容

  • 没有找到相关文章

最新更新