Pod 终止流程
我们先了解下容器在 Kubernetes 环境中的终止流程:

-
Pod 被删除,状态变为
Terminating。从 API 层面看就是 Pod metadata 中的 deletionTimestamp 字段会被标记上删除时间。 -
kube-proxy watch 到了就开始更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。
-
kubelet watch 到了就开始销毁 Pod。
3.1. 如果 Pod 中有 container 配置了 preStop Hook ,将会执行。
3.2. 发送
SIGTERM信号给容器内主进程以通知容器进程开始优雅停止。3.3. 等待 container 中的主进程完全停止,如果在
terminationGracePeriodSeconds内 (默认 30s) 还未完全停止,就发送SIGKILL信号将其强制杀死。3.4. 所有容器进程终止,清理 Pod 资源。
3.5. 通知 APIServer Pod 销毁完成,完成 Pod 删除。