k8s中的重启策略

一、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)情况下则不会。

相关推荐
w200512248 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
国医中兴1 天前
电子病历的时序数据分析:ClickHouse在临床指标监控中的落地
微服务·云原生·容器·kubernetes·k8s
m0_525724721 天前
端到端 GitOps + 金丝雀流程测评报告
云原生·自动化·k8s·devops
tangyal2 天前
kubernetes(k8s)基础理论与集群部署
kubernetes·k8s·部署·node·理论·pod·集群cluster
深念Y3 天前
Makefile vs go run:Go 项目构建方式对比
java·开发语言·golang·k8s·编译·流水线·cicd
智码看视界4 天前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
养海绵宝宝的小蜗4 天前
Pod 管理总结
k8s
张洛闻Eren4 天前
云原生k8s【第六课】:K8s 访问控制
运维·docker·云原生·容器·kubernetes·k8s
张洛闻Eren6 天前
云原生k8s【第五课】:资源配额与限制
运维·数据库·云原生·kubernetes·k8s·github
.柒宇.6 天前
运维常见面试题_07_配置管理与监控(Ansible · Prometheus · Alertmanager)· 容器编排(Kubernetes)
运维·k8s·ansible·prometheus