优雅删除Pod
k8s release-1.15
1. 客户端请求删除Pod。
2. kube-apiserver修改Pod信息,设置DeletionTimestamp和DeletionGracePeriodSeconds(优雅等待退出时间,默认30s)。
staging/src/k8s.io/apiserver/pkg/endpoints/installer.go
registerResourceHandlers方法
restfulDeleteResource方法->DeleteResource方法
staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go
Delete方法->BeforeDelete方法
判断是否立刻删除
3. kubelet监听到Pod的更新事件,优雅释放Pod资源,先删除业务容器再删除pause容器,删除顺序和创建顺序相反。
4. 资源释放后kubelet请求kube-apiserver立即删除Pod。
协程1:list/watch Pod变化
pkg/kubelet/kubelet.go中syncLoopIteration方法
协程2:删除Pod
pkg/kubelet/kubelet.go中Run方法
pkg/kubelet/status/status_manager.go中Start方法
pkg/kubelet/status/status_manager.go中syncPod方法
kubelet清理资源完成后,强制删除Pod
5. kube-apiserver删除etcd中Pod记录。
6. kubelet监听到Pod的删除事件,执行REMOVE操作,删除本地Pod相关信息和探针检测等。
手动删除Pod coredns-5c98db65d4-qsg8x
查看相关kubelet日志
参考资料
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性