- Pod在遇到故障之后重启的动作
1:Always:當容器终止退出后总是重启容器,默认策略
2:OnFailure:当容器异常退出(退出状态码非0)时重启容器
3:Never:当容器终止退出,从不重启容器
(注意:k8s中不支持重启Pod资源,只有删除重建)
- 设置重启策略为Never
- 休眠之后就不会重新启动了,只显示已完成状态
- Probe支持三种检查方法:
- exec 执行Shell命令返回状态码是0为成功
- Liveness探测让用户可以自定义判断容器是否健康的条件。如果探测失败K8S就会重启容器。
- 操作示例:exec检查方法
- 探测方法是:通过cat命令查看/tmp/healthy文件是否存在如果命令执行成功,返回值为0K8S则认为本次Liveness探测成功;如果返回的是非0,则失败
- initialDelaySeconds: 5 指定容器启动5s后开始执行Liveness探测,一般根据启动的准备时间来设置比如某个应用正常启动要花30s,那么值就应该大于30
- Readiness探测则告诉K8S什么时候可以将容器加入到Service負载均衡池中,对外提供服务
- 操作示例(配置语法与Liveness一样)
- 刚被创建时READY状态不可用。
- 过了10s以后进行第一次Readiness探测并成功返回,READY状态为可鼡
- Liveness与Readiness探测是两种Health Check机制如果不特意配置,K8S会将两种探测机制采取相同的默认行为通过判断容器启动进程的返回值是否为0来探测是否成功。
- 两种配置方法完全一样支持的参数也相同,不同之处在于探测失败后的行为:Liveness则是重启容器;Readiness则是将容器设置为不可用不接受Service转发嘚请求。
- Liveness与Readiness是独立执行的二者没有依赖关系,既可以单独使用也可以同时使用。Liveness探测是判断容器是否需要重启以实现自愈;Readiness探测判断嫆器是否已经准备好对外提供服务
- 一般生产环境都是用exec方式