优雅删除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日志

 

参考资料

Kubernetes Pod 删除操作源码解析

Pod 终止流程

Kubernetes源码分析之Pod的删除

posted on   王景迁  阅读(220)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示