1

我们有一个 kubernetes statefulset,其中包含存储类“zookeeper”的持久卷声明

存储类“zookeeper”有6个持久卷

部署是使用 Helm 图表完成的。当我第一次安装具有 3 个副本数的 helm chart 时,statefulset 使用 Pv1、Pv2 和 Pv3。一切运行正常。

删除清除掌舵图。

使用相同数量的副本重新安装相同的 Helm 图表,3 这次 statefulset 将选择相同的持久卷,Pv1、Pv2 和 Pv3,或者它会从 6 个 Pv 中选择任何随机 Pv。这很重要,因为跨部署,如果持久卷发生变化,zookeeper“myid”就会混乱。

4

1 回答 1

3

StatefulSet 提供了一个名为volumeClaimTemplates使用它的密钥,您可以动态地从存储类中请求 PVC。这volumeClaimTemplates将使用由 PersistentVolume Provisioner 配置的 PersistentVolume 提供稳定的存储。

volumeClaimTemplates:
- metadata:
    name: my-pv
  spec:
    accessModes: 
      - ReadWriteMany
    resources:
      requests:
        storage: 1Gi

当你有多个副本时,你会看到 Pod 是按顺序一个一个创建的,并且在创建 Pod 的过程中请求 PVC。PVC 命名是 volumeClaimTemplate name + pod-name + order number.

例如,我们将有以下 PVC 命名

my-pv-app-0
my-pv-app-1
.. and so on

在 StatefulSet 上通过缩放操作重新启动后,卷将按顺序安装到相应的 Pod 上,不会删除与 StatefulSet 关联的卷。

于 2020-02-13T09:22:08.077 回答