首页 > kubernetes(k8s) > k8s容器健康检查Health
2020
09-15

k8s容器健康检查Health

一、健康检查机制

k8s的健康检查有主要以探针的方式来进行,目前有以下三种探针:

而通过结合Restartpolicy和健康检查机制,k8s可以实现以下需求:

二、探针的探测方式及参数

上述描述的三类探针目前支持的探测方式包括以下三种方式:

除了上述方式以外,探针还支持很多配置参数,通过这些参数能够精确地控制指针的检测行为:

三、livenessProbe

Liveness probes(存活性探针)用于检查容器pod中的应用程序是否存活,当pod中的应用程序被检查为不存活时,k8s会删除pod并按照设定的restartpolicy处理pod

配置exec方式的Liveness probes

配置TCP方式的Liveness probes

配置http方式的Liveness probes

四、readinessProbe

Readiness Probes又名为就绪探测器,用于在容器启动后探测应用程序是否已经启动完成并做好处理业务流量的准备。
Readiness Probes与Liveness Probes的配置类似,唯一的区别就是使用readinessProbe关键字来替换到livenessProbe关键字。

示例:

五、startupProbe

在某些情况下,容器中的应用程序启动的时候有可能需要较多的初始化时间,这时候为了得出正确的健康检查结果,我们需要灵活地根据初始化时间来调整相关的健康检查参数(如:
initialDelaySeconds),除此之外K8S在1.16版本之后提供了一个新的关键字startupProbe来应对这种启动时间过长的情况。在startupProbe检测中,通过设置failureThreshold * periodSeconds参数来保证有足够长的时间来应对这种慢启动的情况。

示例:

如此一来,应用程序将会有最多 5 分钟(30 * 10 = 300s) 的时间来完成它的启动。 一旦启动探测成功一次,存活探测任务就会接管对容器的探测,对容器死锁可以快速响应。 如果启动探测一直没有成功,容器会在 300 秒后被杀死,并且根据 restartPolicy 来设置 Pod 状态。

额外补充:使用命名的端口

可以使用命名的 ContainerPort 作为 HTTP 或 TCP liveness检查:

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。