我已经通过persistentcolumecclaims在"azure-file"AKS中的StorageClass。现在Azure提供的StorageClass的挂载选项不符合我们的需求,我不得不用不同的挂载选项更新/重新配置它。
我现在是否必须手动销毁绑定的PersistentVolumes以强制重新创建和重新配置(不同的挂载),或者提供程序是否负责此操作?
强制执行的最佳方法是什么?
- 删除PersistentVolume本身?
- 删除索赔?
- 删除卷绑定的位置(我猜没有)
- 删除并重新创建整个StatefulSet?
@SahadatHossain的回答是对的,但我想用更多的细节和来源来扩展它。
了解卷和索赔的生命周期是很重要的。pv和pvc之间的相互作用遵循以下生命周期:
-
Provisioning—可以是静态的也可以是动态的。
-
绑定
使用 回收
回收步骤将我们带入您的实际用例:
当用户完成了他们的卷,他们可以删除PVC对象从允许资源回收的API中获取。的回收持久化卷的策略告诉集群如何处理持久化卷音量后,它已释放其索赔。目前,卷可以保留、回收或删除。
-
Retain—
Retain
回收策略允许手动回收资源。 -
Delete -对于支持
Delete
回收策略的卷插件,删除将从Kubernetes中删除PersistentVolume对象,以及外部基础设施中相关的存储资产。 -
Recycle -如果底层卷插件支持,Recycle回收策略对卷执行基本擦洗(
rm -rf /thevolume/*
),并使其再次可用于新的索赔。:不支持使用Recycle
回收策略(源)。相反,推荐的方法是使用"Delete"策略(默认为动态配置)或"保留";如果您的数据很有价值,并且需要在pod运行之间持久化(请参阅文档)。
当涉及到更新Pod规范时,您可以考虑使用各种更新策略更新部署(如果可能的话),例如滚动更新:
部署以滚动更新的方式更新pod
.spec.strategy.type==RollingUpdate
。可以指定maxUnavailable
和maxSurge
来控制滚动更新过程。
基本上如果你删除一个PVC,那么PV的状态将根据它的ReclaimPolicy。PV有三个回收策略,分别为:Retain
、Recycle
和Delete
。
对于Delete
,当被尊重的PVC被删除时,PV将被自动删除。但是记住pv不能被删除除非它是有界的pvc。同样,对于动态配置,默认策略是Delete
。同样,如果当前有pod正在使用pvc,则不能删除它。
现在,一切都取决于你。