0

我有一个使用 Kube-spray 创建的 k8s 集群。使用 Rook 支持卷配置。到目前为止,我一直在使用持久卷。

该应用程序是使用 helm 图表部署的。为了测试目的,helm 版本会多次升级。我希望每次升级图表时 pod 都使用新卷。我不希望 pod 在 helm 升级后使用旧数据。

我怎样才能做到这一点?如何使用临时卷?

在执行 helm 升级之前已经尝试删除 PV。

4

2 回答 2

2

helm upgrade将尽可能多地保留现有的基础设施。如果您已经有一个名为 的 PersistentVolumeClaim myapp-pvc,并且您运行helm upgrade,它将注意到 PVC 已经存在,并保持原样。我认为这发生在 Helm 层,但是即使 Helm 向 Kubernetes 上传了相同的 PVC 描述,它仍然不会导致任何变化。

直截了当的方法是运行helm del --purge现有安装,等待 PVC 完全清理干净,然后helm install重新安装。

另一种可能的方法是在 PVC 名称中编码一些唯一或随机值。诀窍是,您需要在同一图表安装中的所有使用中使用相同的值,但如果升级图表,则需要不同。您可以使用图表元数据的组合来提供此

{{- define "myapp.pvc.name" -}}
{{ .Release.Name }}-{{ .Chart.Name }}-pvc
{{- if .Values.destroyPersistentState -}}
-{{ .Release.Revision }}
{{- end -}}
{{- end -}}
于 2019-09-03T11:58:38.573 回答
0

我们可以尝试临时卷的一个技巧是:

  1. 使用emptyDir 卷而不是 pv 或 pvc安装图表。
  2. 使用该部署运行测试。这将对卷内容进行更改。
  3. 删除使用 emptyDir 卷的 pod。这也将删除当前的卷数据。豆荚将自动重新创建。
  4. helm upgrade.
于 2019-09-04T05:00:05.037 回答