【问题标题】:Does re-deploying kubernetes statefulset preserve persistent volume claim?重新部署 kubernetes statefulset 是否保留持久卷声明?
【发布时间】:2020-05-28 19:37:13
【问题描述】:

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

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

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

删除清除舵图。

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

【问题讨论】:

  • 是您的StatefulSet 提出索赔还是您单独提出索赔?

标签: kubernetes apache-zookeeper kubernetes-helm persistent-volumes kubernetes-statefulset


【解决方案1】:

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

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

当你有多个replica时,你会看到pods是按顺序一个一个地创建的,在pod创建过程中请求PVC。PVC命名是volumeClaimTemplate name + pod-name + order number的组合。

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

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

卷被挂载到相应的 Pod 之后,在 StatefulSet 上的任何缩放操作重新启动后,都不会删除与 StatefulSet 关联的卷。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2016-10-10
    • 2019-08-11
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多