运维开发网

Kubernetes:NFS与StatefulSets

运维开发网 https://www.qedev.com 2020-06-17 13:46 出处:网络
我正在尝试将现有NFS与StateFulSets一起使用. 使用volumeClaimTemplates创建PresistentVolumeClaim似乎是自动的.
我正在尝试将现有NFS与StateFulSets一起使用.

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

问题:

但是,由于PresistentVolumeClaim要求整个PresistentVolume.我必须手动为所有副本创建PresistentVolume.

有没有办法在Kubernetes中动态配置NFS持久卷?

注意:NFS服务器本身是静态的,只需要动态创建K8中的卷,而不是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才能使用它.这可以像其他动态配置程序(如aws-ebs)一样在NFS中动态添加

这是使用NFS持久卷获取StatefulSet的正确方法.

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

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消