我有一个使用 Kube-spray 创建的 k8s 集群。使用 Rook 支持卷配置。到目前为止,我一直在使用持久卷。
该应用程序是使用 helm 图表部署的。为了测试目的,helm 版本会多次升级。我希望每次升级图表时 pod 都使用新卷。我不希望 pod 在 helm 升级后使用旧数据。
我怎样才能做到这一点?如何使用临时卷?
在执行 helm 升级之前已经尝试删除 PV。
我有一个使用 Kube-spray 创建的 k8s 集群。使用 Rook 支持卷配置。到目前为止,我一直在使用持久卷。
该应用程序是使用 helm 图表部署的。为了测试目的,helm 版本会多次升级。我希望每次升级图表时 pod 都使用新卷。我不希望 pod 在 helm 升级后使用旧数据。
我怎样才能做到这一点?如何使用临时卷?
在执行 helm 升级之前已经尝试删除 PV。
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 -}}
我们可以尝试临时卷的一个技巧是:
helm upgrade
.