PVC在K8S集群迁移或恢复需注意地方

目前在做同城双活,每个机房都有一个k8s集群,其中一些共享卷需要做到双活的2个集群上都可用。

比如我们现在在主机房的集群上有一个PVC:

以及对应的PV:

如果我们将上面的yaml直接导到备机房的集群上,会发现其实有问题:

pvc的状态是lost的,查看事件,发现报错:Two claims are bound to the same volume, this one is bound incorrectly。

根据报错查找kubernetes的源码,发现在pkg/controller/volume/persistentvolume/pv_controller.go:

通过查看源码,可以发现是pv中的claimRef存在,且claimRef.UID与pvc的UID对应不上(if elseif的条件)导致的。主要原因是虽然yaml内有uid,但是apply到一个新的集群内,UID会重新生成,跟yaml内的不一样了。

那我们去掉UID和claimRef,PVC的yaml如下:

pv的yaml如下:

将上面的yaml apply后,发现正常了:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

19 − 17 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据