k8s之三大探针
livenessProbe存活性探针,用于判断容器是不是健康,如果不满足健康条件,那么 Kubelet 会杀死容器,并根据restartPolicy重启策略(Always,OnFailure,Never)来判断Pod 是否要进行重启操作;readinessProbe 就绪性探针,用于判断容器内的程序是否存活,如果不满足健康条件,那么会自动从Service的 EndPoint 列表中去除该pod的
一、探针类型
livenessProbe存活性探针,从容器启动开始,由kubelet定期执行检测,用于判断容器是不是健康,如果不满足健康条件,那么 Kubelet 会杀死容器(杀死的是container不是pod),并根据restartPolicy重启策略(Always,OnFailure,Never)来判断容器是否要进行重启操作;
readinessProbe 就绪性探针,用于判断容器内的程序是否存活,如果不满足健康条件,那么会自动从Service的 EndPoint 列表中去除该pod的 IP:Port;
startupProbe启动探针,k8s1.16新增,主要解决在慢启动程序或复杂程序中readinessProbe、livenessProbe探针无法较好的判断程序是否启动、是否存活,进而引入startupProbe探针为readinessProbe、livenessProbe探针服务。
如果三个探针同时存在,则先执行startupProbe探针,其他两个探针将会被暂时禁用,直到startupProbe一次探测成功,其他2个探针才启动,如果startupProbe探测失败,kubelet 将杀死容器,并根据restartPolicy重启策略来判断容器是否要进行重启操作。
二、探测方式
ExecAction:在容器中执行指定的命令,如果执行成功,退出码为 0 则探测成功。
HTTPGetAction:通过容器的IP地址、端口号及路径调用 HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器 健康。
TCPSocketAction:通过容器的 IP 地址和端口号执行 TCP 检 查,如果能够建立 TCP 连接,则表明容器健康。
探针探测结果有以下值:
Success:表示通过检测。
Failure:表示未通过检测。
Unknown:表示检测没有正常进行。
三、探针字段
探针(Probe)有许多可选字段,可以用来更加精确的控制Liveness和Readiness两种探针的行为(Probe):
initialDelaySeconds:容器启动后要等待多少秒后就探针开始工作,单位“秒”,默认是 0s,最小值是 0s;
periodSeconds:执行探测的时间间隔(单位是秒),默认为 10s,最小值是 1s,
timeoutSeconds:探针执行检测请求后,等待响应的超时时间,默认为 1s,最小值是 1s,
successThreshold:探针检测失败后认为成功的最小连接成功次数,默认为 1,在 Liveness和startup探针中必须为 1,最小值为 1。
failureThreshold:探测失败的重试次数,重试一定次数后将认为失败,默认为 3,最小值为 1
四、例子
ports:
- name: liveness-port
containerPort: 8080
hostPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
更多推荐
所有评论(0)