概述

k8s中默认的健康检查机制:每个容器启动时都会执行一个进程,这个进程是Dockerfile的CMD或Entryoint指定。如果进程推出时返回码非0,就会认为容器发生了故障,k8s会根据yaml文件中的spec:下的restartPolicy字段判断是否重启容器。

重启策略

Always

表示一直重启,不特殊指定这是默认的重启策略。容器失效后,kubelet自动进行重启。以保证副本数。

OnFailure

当容器终止运行且退出码不为0时,由kubelet自动重启该容器。也就是说正常的退出不会再重新启动Pod,仅当退出地时候重启Pod。

Never

不论容器的运行状态如何,kubelet都不会重启该容器。

控制方式

Pod的重启策略与控制方式息息相关,可管理Pod的控制器有ReplicationController(RC)、Jo、DaemonSet以及kubelet。每种控制器对Pod的策略要求不同。
RC和DaemonSet:必须设定为Always,需要保证容器的持续运行。
Job和CronJob:OnFailure,确保容器执行完成后不再重启。
kubelet:在Pod失效时自动重启它,不论将RestarPolicy设置为什么值,也不会对Pod进行健康检查。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐