Kubernetes健康检查

Health Probe


Kubernetes设计时已经具备了对容器的进程状态检查,如果检查到问题会触发重启容器,但是仅凭检查进程状态不足以决定应用程序的健康状况,比如应用程序已经挂起,但其进程仍在运行,例如Java应用程序抛出的OutOfMemoryError

livenessPorbe

Kubernetes的livenessPorbe是由kubelet执行定期检查,确认容器的健康状态

如果未通过健康检查,那么会触发容器自动重启,kubernetes只会以重启容器,而不会修复本质的问题

readinessProbe

当容器在初始化时, 需要一个缓存时间,即为应用程序的启动时间,在此启动阶段是不具备对外提供服务;或者是在容器在高负载波动时,容器在短时间hang住

在以上的情形下,kubernetes引入了就绪探针readinessProbe,readinessProbe与livenessProbe不同之处是,readinessProbe不会启动重启容器,而是在策略时间内从EndpointController移出,以避免在出现故障时,将请求继续转发到故障的容器中

参考配置


  1. 参考配置
              livenessProbe:
                httpGet:
                  path: /webservice/api/test
                  port: 50301
                  scheme: HTTP
                initialDelaySeconds: 180
                timeoutSeconds: 3
                periodSeconds: 5
                successThreshold: 1
                failureThreshold: 3
              readinessProbe:
                httpGet:
                  path: /webservice/api/test
                  port: 50301
                  scheme: HTTP
                initialDelaySeconds: 120
                timeoutSeconds: 3
                periodSeconds: 3
                successThreshold: 2
                failureThreshold: 3
  2. 参数解释
  • initialDelaySeconds: 300

    初始化启动后宽限时间,在此期间不做探针检查,默认值是0

  • timeoutSeconds: 5

    探针探测失败后的超时时间,默认值是1

  • periodSeconds: 10

    宽限期结束后,每隔10秒进行探测一次,默认值是10s

  • successThreshold: 1

    在执行探测时, 如果连续成功一次就视为成功,默认值是1

  • failureThreshold: 3

    探测失败后的,重试次数,默认值是3

注意事项

在设置livenessProbe & readinessProbe时,需要注意的是livenessProbe的策略宽限时间一定要大于readinessProbe的时间,比如在容器初始化时,没有等到容器就绪已经执行了livenessProbe的策略,就会徘徊在无限重启

posted @ 2022-01-24 15:11  MacoPlus  阅读(269)  评论(0编辑  收藏  举报