我有一个有2个pod的statfulset,运行在单独的专用节点上,每个节点都有自己的pvc。
我需要对分配给每个分配给statfulset的pod的pvc的pv进行一些维护。
到目前为止,我已经能够将statefulset缩小到1个副本,这使statefulset/pod-1脱机,这样我就能够执行维护任务了。
现在我需要对statfulset/pod-0执行相同的任务,而不脱机statfulset/pod-1。
我有什么选择?请记住,要启动维护任务,必须卸载statfulset/pod-0的pv。
我能够在statfulset/pod-0上执行任务:
- 封锁节点
- 删除statefulset/pod-0
任务完成后,解除节点的封锁,pod自动启动,没有任何问题。
此操作仅在pod包含特定nodeAffinity
时有效我不认为这是可能实现的一个状态集,因为一个状态集提供的部署和缩放保证。要卸载一个pod的卷,必须先关闭/删除该pod,在对statfulset中的pod执行此操作之前,"必须完全关闭它的所有后续节点"。
我的建议是与应用程序的涉众计划并沟通维护窗口,并完全缩小statfulset以将更改应用到存储后端中的卷。跨存储后端移动卷不是一项定期执行的任务,因此我认为要求一次性维护是合理的。
...to move the cinder pv from one backend to another
使用Cinder CSI,您可以执行快照或克隆卷到一个新的PV,并移动到另一个。