kubelet如何通知Kubernetes节点向容器发送SIGTERM信号相关咨询
Kubernetes Pod 终止信号相关问题解答
问题1:是否需要执行kubectl delete pod [podname]命令来触发关闭流程?
不需要。kubectl delete pod只是手动触发Pod终止的其中一种方式,除此之外,Deployment滚动更新下线旧Pod、节点资源不足触发Pod驱逐、存活探针(livenessProbe)检测失败重启Pod、节点维护排空等所有会触发Pod终止逻辑的操作,都会启动容器的关闭流程,向容器发送SIGTERM信号。
问题2:容器接收的SIGTERM信号是否来自Kubernetes节点的Linux内核?
是。所有Linux系统下的进程间信号投递最终都是由内核完成的,容器进程收到的SIGTERM信号也不例外,由节点内核负责投递到对应容器的目标进程。
问题3:kubelet如何通知Kubernetes节点的内核向指定容器发送SIGTERM信号?
整个信号触发流程如下:
- kubelet首先接收到Kubernetes API Server下发的Pod终止指令,进入Pod终止处理逻辑
- kubelet调用节点上配置的容器运行时接口(CRI),向容器运行时(如Containerd、Docker)发送终止指定容器的请求
- 容器运行时查询存储的容器元数据,获取该容器主进程在宿主机上对应的真实PID,调用Linux系统
kill系统调用,向该PID发送SIGTERM信号 - 节点Linux内核收到
kill系统调用请求后,完成权限校验、PID归属校验,确认无误后将SIGTERM信号投递到对应容器的主进程,完成信号发送
内容的提问来源于stack exchange,提问作者overexchange
相关产品推荐
相关产品推荐

