在K8S集群中使用临时卷

时间:2019-09-03 09:20:19

标签: kubernetes volume kubernetes-rook

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

使用头盔图表部署应用程序。为了测试目的,头盔版本已多次升级。我希望豆荚每次升级图表时都使用新的音量。我不希望Pod在头盔升级后使用旧数据。

我该如何完成?如何使用临时卷?

在执行头盔升级之前已经尝试移除PV。

2 个答案:

答案 0 :(得分:2)

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 :(得分:0)

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

  1. 使用 emptyDir卷而不是pv或pvc安装图表。
  2. 使用该部署运行测试。那将改变卷内容。
  3. 删除使用emptyDir卷的Pod。这还将删除当前的体积数据。吊舱将自动重新创建。
  4. 执行helm upgrade