基本的 delete 命令状态图:
尽管此操作很简单,但其他因素可能会干扰删除,包括 finalizers 和 owner references。
3.1 K8s 中对象删除基本流程如下
(1)客户端提交删除请求到 API Server(可选传递 GracePeriodSeconds 参数)
(2)API Server 做 Graceful Deletion 检查(若对象实现了 RESTGracefulDeleteStrategy 接口,会调用对应的实现并返回是否需要进行 Graceful 删除)
(3)API Server 检查 Finalizers 并结合是否需要进行 graceful 删除,来决定是否立即删除对象(若对象需要进行 graceful 删除,更新 metadata.DeletionGracePeriodSecond 和metadata.DeletionTimestamp 字段,不从存储中删除对象;若对象不需要进行 Graceful 删除时:metadata.Finalizers 为空,直接删除。metadata.Finalizers 不为空,不删除,只更新 metadata.DeletionTimestamp。
3.2 finalizers介绍
Finalizers 字段属于 Kubernetes GC 垃圾收集器,是一种删除拦截机制,能够让控制器实现异步的删除前(Pre-delete)回调。其存在于任何一个资源对象的 Meta中,在 k8s 源码中声明为 []string,该 Slice 的内容为需要执行的拦截器名称。
常见用途:

最低0.47元/天 解锁文章
2405

被折叠的 条评论
为什么被折叠?



