k8s中的重启策略
创始人
2024-11-22 00:06:40

一、k8s的pod,kill进程和上节点停止容器,容器是否被重启(重启策略为OnFailure):

解释:docker ps -a看到容器退出码为:

  • kill进程,其容器退出码为:exit(137)
  • stop 容器,容器退出码为:exit(1)

exit(1)exit(137)的区别在于其退出的原因。exit(1)通常表示程序由于某种错误而非正常退出,而exit(137)则意味着程序被SIGKILL信号强制终止,这可能是由于系统内存不足或者人为干预导致的。

在Docker容器的上下文中,docker stop命令首先会发送SIGTERM信号给容器中的主进程,给它一定的时间进行清理工作并优雅地退出。如果在一定时间后(默认为10秒)容器仍未退出,那么docker stop会发送SIGKILL信号强制结束容器进程。

而直接使用kill命令杀死容器进程相当于直接发送SIGKILL信号,容器进程没有机会进行任何清理工作就被强制终止。

至于Kubernetes的重启策略,如果设置为onFailure,当容器状态由运行变为终止时,只有非零退出状态的容器会被Kubernetes重启。也就是说,如果容器由于exit(1)非正常退出,Kubernetes会尝试重启它。但如果容器被exit(137)(SIGKILL)强制终止,Kubernetes则不会重启它,因为这通常意味着容器是由于系统级别的原因被终止的,如系统内存不足等。

总的来说,如果任务设置重启策略为onFailure,那么在exit(1)情况下任务会被重启并恢复为running状态,但在exit(137)情况下则不会。

相关内容

热门资讯

下一个航天亿级市场,藏在你手机... 商业航天的第一个大众市场来了。 过去很多年,商业航天始终面临一个问题:技术很热,但离普通人太远。 火...
【科普小知识】太空金属3D打印... 近日,中国科学院力学研究所联合中国科学院微小卫星创新研究院,利用轻舟试验飞船,成功完成太空金属增材制...
从没人做到抢着做,71台概念车... 刚结束的2026年北京车展,有一个令人震撼的数字,概念车多达71台,数量创下近几届A级车展之最。从自...
原创 1... 在以前,一提到激光雷达,很多人的第一反应就是“高端”、“昂贵”,仿佛是20万甚至30万以上高端车型的...
解散xAI ,马斯克和Anth... 文 | 字母AI 就在刚才,马斯克在X平台上发布了一条简短的声明:xAI从此以后不再是独立的公司,...