如何在GKE上重用动态配置的PersistentVolumes和Helm?

use*_*280 4 kubernetes google-kubernetes-engine kubernetes-helm

我正在尝试部署一个使用PersistentVolumeClaimStorageClass动态配置所需的sotrage 的头盔图.这按预期工作,但我找不到任何允许工作流程的配置

helm delete xxx

# Make some changes and repackage chart

helm install --replace xxx
Run Code Online (Sandbox Code Playgroud)

我不想经常运行该版本,并且我希望将来在部署中重用存储.

设置存储类以reclaimPolicy: Retain保留磁盘,但是helm将删除PVC并孤立它们.注释PVC以便helm不会删除它们修复了这个问题,但是然后运行install会导致错误

Error: release xxx failed: persistentvolumeclaims "xxx-xxx-storage" already exists
Run Code Online (Sandbox Code Playgroud)

我想我误解了管理掌舵版本的一些基本知识.也许不应该在图表中创建卷.

Ant*_*nko 7

PersistenVolumeClain只创建实际PersistentVolume和pod 之间的映射.

使用"helm.sh/resource-policy": keepPV注释不是最好的主意,因为文档中的注释:

注释"helm.sh/resource-policy":keep指示Tiller在头盔删除操作期间跳过此资源.但是,这种资源变成了孤儿.Helm将不再以任何方式管理它.如果在已删除但仍保留资源的版本上使用helm install --replace,则可能会出现问题.

如果您在删除发行版后手动创建PV,Helm将删除PVC,将其标记为"可用",在下次部署时,它将重复使用它.实际上,您不需要将PVC保留在群集中以保留数据.但是,为了使它始终使用相同的PV,您需要使用标签和选择器.

对于保留和重用卷,您可以:

  1. 以标签创建PersistenVolume作为示例,for_app=my-app并为此卷设置"保留"策略,如下所示:

apiVersion: v1 kind: PersistentVolume metadata: name: myappvolume namespace: my-app labels: for_app: my-app spec: persistentVolumeReclaimPolicy: Retain capacity: storage: 5Gi accessModes: - ReadWriteOnce

  1. 修改Helm中的PersistenVolumeClaim配置.您需要添加一个选择器,仅使用带有标签的PersistenVolumes for_app=my-app.

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: myappvolumeclaim namespace: my-app spec: selector: matchLabels: for_app: my-app accessModes: - ReadWriteOnce resources: requests: storage: 5Gi

因此,现在您的应用程序每次启动时都会使用相同的卷.

但是,请记住,您可能需要在同一名称空间中使用选择器用于其他应用程序,以防止使用您的PV.

  • 谢谢你。糟糕的是,动态配置不是替代方案 (2认同)