一次偶然中,在 k8s 集群中删除了一个 pod ,其 pod 挂载的 pvc 竟然也被删除了!
如上图,可以看到该 pvc 被 group-rds-canal-server-deployment-6b8b94cfb-gs98c 这个 pod 所绑定。那么按理解,正常情况下,删除这个 pod ,其关联挂载的该 pvc 是不会被删除的。但实际这次操作却恰恰相反。观察发现,该 pvc 有点“问题”。
pvc 状态为 Terminating ,这就比较奇怪了,pvc 在正常使用,其 pvc 关联的 pv 也正常。
那么就奇怪了,Terminating 这种状态是怎么回事?
经查询,结合上面这种情况,这里最可能的原因就是,在某次使用中,可能由于误操作将 pvc 删除。由于 pvc Protection 机制,pvc 在有 Pod 使用时,删除无法成功,会一直处于 Terminating 状态。也就是说 pvc 在使用,只不过状态不对,只要这种 Terminating 状态的 pvc ,其 pod 一旦没了,pvc 也就会自动删除。所以当我删除了 pod 的时候,pvc 咋也被删除,消失了。
所以针对这种 Terminating 状态的 pvc ,是无法通过 API 撤销的。要想让 pvc 恢复正常状态,需要对 pvc 进行重建 或者绑定其的 pod 被删除即可。
发表评论