我正在尝试部署一个使用 PersistentVolumeClaim
和 StorageClass
动态配置所需的sotrage的头盔图 . 这按预期工作,但我找不到任何允许工作流程的配置
helm delete xxx
# Make some changes and repackage chart
helm install --replace xxx
我不想经常运行该版本,并且我希望将来在部署中重用存储 .
将存储类设置为 reclaimPolicy: Retain
会保留磁盘,但是helm将删除PVC并将它们孤立 . 注释PVC以便helm不会删除它们修复了这个问题,但是然后运行install会导致错误
Error: release xxx failed: persistentvolumeclaims "xxx-xxx-storage" already exists
我想我误解了管理掌舵版本的一些基本知识 . 也许不应该在图表中创建卷 .
1 回答
PersistenVolumeClain只在您的实际PersistentVolume和您的广告连播之间创建一个映射 .
使用
"helm.sh/resource-policy": keep
注释PV并不是最好的主意,因为_2908794中的注释:如果您在删除发行版后手动创建PV,Helm将删除PVC,将其标记为"Available",在下次部署时,它将重复使用它 . 实际上,您不需要将PVC保留在群集中以保留数据 . 但是,为了使它始终使用相同的PV,您需要使用labels and selectors .
对于保留和重用卷,您可以:
for_app=my-app
并为该卷设置"Retain"策略,如下所示:apiVersion: v1 kind: PersistentVolume metadata: name: myappvolume namespace: my-app labels: for_app: my-app spec: persistentVolumeReclaimPolicy: Retain capacity: storage: 5Gi accessModes: - ReadWriteOnce
for_app=my-app
的PersistenVolumes .apiVersion: v1 kind: PersistentVolumeClaim metadata: name: myappvolumeclaim namespace: my-app spec: selector: matchLabels: for_app: my-app accessModes: - ReadWriteOnce resources: requests: storage: 5Gi
因此,现在您的应用程序每次启动时都会使用相同的卷 .
但是,请记住,您可能需要在同一名称空间中使用选择器用于其他应用程序,以防止使用您的PV .