k8s删除一个Pod会发生什么事情?
  0SnbOly3LC5t 2023年11月15日 20 0


概述

Kube-apiserver会接受到用户的删除指令,默认有30秒时间等待优雅退出,超过30秒会被标记为死亡状态,

此时Pod的状态Terminating,kubelet看到pod标记为Terminating就开始了关闭Pod的工作;

关闭流程如下:

1)pod从service的endpoint列表中被移除;

2)如果该pod定义了一个停止前的钩子,其会在pod内部被调用,停止钩子一般定义了如何优雅的结束进程;

3)进程被发送TERM信号(kill -14);

4)当超过优雅退出的时间后,Pod中的所有进程都会被发送SIGKILL信号(kill -9)

详述

当删除一个 Pod 时,以下事件将会发生:

  1. 从集群中移除:Kubernetes 控制平面接收到删除操作后,将从集群中移除该 Pod 的相关配置和定义。这意味着该 Pod 将不再被调度到任何节点,并且不再受到 Kubernetes 的管理。
  2. 终止容器:Kubernetes 会向 Pod 中的容器发送 SIGTERM 信号(15号信号),请求容器进行优雅关闭。容器收到该信号后,可以执行清理操作、释放资源、保存状态等,并尽量在一定时间内正常退出。
  3. 等待终止超时:在发送 SIGTERM 信号后,Kubernetes 会等待一段时间(默认为 30 秒)来等待容器正常退出。如果容器在超时时间内仍然没有终止,Kubernetes 将发送 SIGKILL 信号(9号信号)强制终止容器。
  4. 清理资源:一旦容器终止,Kubernetes 将清理与该 Pod 相关的资源。这可能包括释放节点上的网络、存储卷、临时文件等资源,以及更新集群中的状态信息。
  5. 可能的重新调度:如果删除的 Pod 属于由 ReplicaSet、Deployment 或其他控制器管理的副本集,Kubernetes 将尝试根据副本集的定义重新调度一个新的 Pod 来替代被删除的 Pod,以确保所需的副本数维持在正常状态。

总之,删除一个 Pod 将触发一系列的操作,包括向容器发送终止信号、清理资源以及可能的重新调度。这确保了集群中的 Pods 和相关资源保持一致和可控。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  uIMxVj27KMVR   2023年12月24日   41   0   0 PodIPJavaJavaIPPod
0SnbOly3LC5t