在 K8S 集群中使用临时卷

Use ephemeral volumes in K8S cluster

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

应用程序是使用 helm chart 部署的。出于测试目的,helm 版本已升级多次。我希望 pods 每次升级图表时都使用新的音量。我不希望 pod 在 helm 升级后使用旧数据。

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

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

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

说白了就是运行helm del --purge现有安装,等PVC完全清理干净,再helm install重新

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

{{- define "myapp.pvc.name" -}}
{{ .Release.Name }}-{{ .Chart.Name }}-pvc
{{- if .Values.destroyPersistentState -}}
-{{ .Release.Revision }}
{{- end -}}
{{- end -}}

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

  1. 使用 emptyDir volumes 而不是 pv 或 pvc 安装图表。
  2. 运行 使用该部署的测试。这将更改卷内容。
  3. 删除使用 emptyDir 卷的 pods。这也将删除当前卷数据。 pods 将自动重新创建。
  4. helm upgrade.