readiness 与 liveness - k8s健康检查

问题背景

在部署k8s应用的时候,通常会考虑到健康检查,用来判断应用是否正常,主要是 readiness 和 liveness,那么两者的区别如何呢。

readiness - 就绪检查

判断该应用是否已经就绪,达到条件后, Pod 会加到 SVC(VIP) 后端,这时才能承受业务流量;如果未达到条件,则无法加到 SVC 后端,也就无法承受业务流量。

liveness - 存活检查

在 Pod 运行期间,K8s 只能看到 Pod 层面,无法获悉容器里的业务是否正常,因此 K8s 提供了存活检查,可以设置业务维度的探测手段。如果探测结果符合标准,则认为业务正常;否则会根据 restartpolicy 来判断是否需要将此 Pod 删除或者重启。

最佳建议

  • 合理设置就绪检查和存活检查。假如存活检查设置超时时间是 1s, 但是业务处理时间是 3s,则会导致这个正常的 pod 被杀死。
  • readiness 一般建议采用 tcp 方式,并且超时时间设置合理,而 liveness 则一般采用 http 方式
展开剩余53%