Kubernetes:本地存储多个节点

问题描述

在我的kubernetes集群中,有1个主节点和3个节点。

每个节点上都会有一个部署/守护程序集,并且需要存储。

考虑到本地存储由于gluster的性能问题,因为文件很多(大/小)。

有没有一种方法可以自动分配在已分配Pod的节点中具有pv的pvc?

谢谢

解决方法

有没有一种自动分配具有pv的pvc的方法 容器已分配到的节点?

这取决于您“自动分配pvc” 的确切含义,但是我相信local volume应该符合您的要求。 PVC或许多不同的PVCs

hostPath上最大的优势是无需手动调度Pod到特定节点,因为PersistentVolume上定义了节点亲和力:

hostPath卷相比,本地卷可以持久使用 无需手动将Pod调度到节点, 系统通过查看以下内容了解卷的节点约束 PersistentVolume上的节点亲和力。

您只需要定义一个本地存储类,本地PVPVC,然后就可以在volumeClaimTemplates中使用它们,就像在Statefulset规范的以下片段中一样:

...
  volumeClaimTemplates:
  - metadata:
      name: local-vol
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "local-storage"
      resources:
        requests:
          storage: 368Gi

您的所有Pods都将自动调度到适当的节点,因为已经在PersistentVolume中定义了节点亲缘关系,并且特定的PersistentVolumeClaim已绑定到此类PV。重要的是要记住,PV:PVC始终是1:1绑定,而一个PVC可以被许多不同的Pods使用。对于本地卷,如果Pods使用单个公用PVC,则它们将全部调度在声明的PV所在的同一节点上。

,

您可以使用nodeAffinity

选择将哪些节点的PV绑定到哪些PVC。

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#node-affinity

索赔也可以指定一个选择器,该选择器将限制PV池:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#selector