在Pod running阶段的时候,Pod 就迎来对其健康的检查,当前kubelet 提供三种方式判定:
• readiness:检查Pod 是否为健康。
• liveness:件看Pod 是否正常,若检查失败,则重启容器。
• readinessGate:提供给第三方组件健康验证,第三方组件验证不过,则Pod 不为健康。
readiness 与liveness 检查参数都是一致的。
• httpGet/tcpSocket:都是检查方式,一种是http 请求验证,一种是tcpSocket,其中也有exec执行命令,以及grpc形式验证。
• initialDelaySeconds:延迟多久开始检查,原因在于容器启动的时候,通常需要过段时间进行验证。
• periodSeconds:检验时间周期。
• failureThreshold:连续几次失败,则代表这轮检验失败。
• successThreshold:连续几次成功,则代表这轮检验成功。
• timeoutSeconds:代表检验超时时间,若检验在该配置时间内没有返回,则认为检验失败。
readiness、liveness 虽然参数不一样,但对检验的结果行为不一致。
• readiness 默认状态下为false,也就是Pod 为不健康,直到检查通过,才将Pod变为健康。
• liveness 默认状态下为true,不会在刚开始就将Pod 重启,只有等检查不通过后,才会进行容器重启操作。
readinessGate 是Pod 健康的扩展, kubelet 会基于此, 默认在pod.status.conditions 上配置对应的condition,比如当前例子readinessGate 为conditionType:TestPodReady,则相应就会有conditions。
当该condition.status 为false 时,则Pod 就会一直是不健康,哪怕readiness 检查通过,直到第三方系统去操作更新Pod 该condition.status 为true,才可以将Pod 变为健康,这样就可以接入更多的Pod 健康指标。
以上内容摘自《SREWorks 云原生数智运维工程实践》电子书,点击https://developer.aliyun.com/ebook/download/7784可下载完整版。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。