【问题标题】:Helm delete release and clear associated storageHelm 删除发布并清除关联存储
【发布时间】:2019-11-08 03:37:48
【问题描述】:

我通过

安装了helm release
helm install --name my-release .

然后删除它

helm delete --purge my-release

但我发现 kubernetes 不会清除与该版本的容器关联的任何存储。我安装了 postgresql,对它做了很多事情,删除了,当我重新安装它时,我所有的数据都在那里。如何通过 helm delete 清除存储?

编辑:我使用的是Postgresql Stable Chart版本5.3.10

这是我发布的唯一自定义内容

values.yaml

postgresql:
  postgresqlDatabase: test
  postgresqlUsername: test
  postgresqlPassword: test

【问题讨论】:

  • 您是否在为 PostgreSQL 使用任何持久卷?
  • 我没有设置任何内容,尽管它确实使用了一些默认值,如我所见。但我想知道是否有任何方法可以使用 helm 将其删除,而不是在集群上进行暴力 rm -rf
  • 能否在设置音量的问题中添加 helm chart 文件?
  • 我完全没有自定义,只是添加了一个postgresql依赖,设置了用户名密码,安装了release
  • 你在使用来自 stable repo github.com/helm/charts/tree/master/stable/postgresql 的 postgresql helm 图表吗?

标签: kubernetes kubernetes-helm


【解决方案1】:

查看helm图表文件: https://github.com/helm/charts/blob/master/stable/postgresql/templates/statefulset.yaml

很明显,如果你没有在 values.yaml 中指定.Values.persistence.existingClaim 的值,它会自动创建一个持久化卷声明。

  • 如果您为.Values.persistence.storageClass 设置了存储类,则创建的 pvc 将使用该类来配置卷。
  • 如果您将存储类设置为“-”,动态配置将被禁用。
  • 如果不为.Values.persistence.storageClass 指定任何内容,则自动创建的pvc 将不会指定存储类字段。

由于您使用的是图表的默认 values.yaml,因此您有第三种情况。

在 kubernetes 中,如果您没有在持久卷声明中指定存储类,它将使用集群的默认存储类来配置卷。

检查哪个是您的集群的存储类:

kubectl get sc 

默认的 StorageClass 将标记为(default)。 描述那个存储类并找到它是Reclaim Policy

如果 Reclaim Policy 是 Delete,则它创建的 pv 将在其声明被删除时自动删除(在您的情况下,当图表被卸载时)。

如果默认存储类的 Reclaim Policy 不是Delete,则必须创建自己的存储类并使用 Delete 策略,然后进一步使用。

【讨论】:

  • 所以我需要确保仔细查看图表描述。不知道默认值。谢谢
【解决方案2】:

如果你看一下默认values.yamlhere中的默认值:

persistence:
  enabled: true

通过将其设置为 false,我们可以禁用持久性,以便在卸载 helm release 后,数据不会持久化。

要实现这一点,请创建您自己的包含以下内容的值文件:

persistence:
  enabled: false

#Sample command
helm install myrelease --values values-override.yaml bitnami/postgresql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2012-07-26
    • 2018-03-15
    • 2019-12-13
    • 2012-11-17
    • 2017-11-25
    • 2023-03-06
    • 2014-07-08
    相关资源
    最近更新 更多