Kubernetes Pod 生命周期管理与应用优雅关闭实践
1. Pod 生命周期基础理解
容器的运行形式不同,会影响其主进程的执行方式。第一种形式的容器将 mybinary 可执行文件作为主进程运行,而第二种形式则以 shell 作为主进程, mybinary 进程作为 shell 进程的子进程运行。
需要强调的是,Kubernetes 中的生命周期钩子是针对容器而非 Pod 的。例如, pre-stop 钩子在容器终止时调用,通常是因为存活探针失败,这可能在 Pod 的生命周期内多次发生,并非仅在 Pod 关闭时触发。所以,不能用 pre-stop 钩子来执行仅在 Pod 终止时才需要的操作。
2. Pod 关闭流程解析
Pod 的关闭由通过 API 服务器删除 Pod 对象触发。当 API 服务器收到 HTTP DELETE 请求时,不会立即删除对象,而是设置 deletionTimestamp 字段,此时 Pod 进入终止状态。
Kubelet 检测到 Pod 需要终止后,开始终止每个容器。它会给每个容器一定时间进行优雅关闭,这个时间称为终止宽限期,可在 Pod 规范中通过 spec.terminationGracePeriodSeconds 字段进行配置,默认值为 30 秒。终止流程如下:
1. 若配置了 pre-stop 钩子,则运行该钩子并等待其完成。
2. 向容器的主进程发送 S
Kubernetes Pod优雅关闭实践
超级会员免费看
订阅专栏 解锁全文
49

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



