Kubernetes 我应该每秒钟做一次活跃度探测和准备度探测吗?

Kubernetes 我应该每秒钟做一次活跃度探测和准备度探测吗?,kubernetes,Kubernetes,在我的K8S工作负载中,我为pods健康检查实现了就绪探测和活动探测 我想知道我是否应该将间隔(periodSeconds)设置为1秒,因为它会消耗更多的资源,对吗 进行pod健康检查时是否有最佳做法?首先,了解活跃度和准备度之间的区别很重要。tl;dr is:Liveness是关于K8s是否应该终止并重新启动容器,Readiness是关于容器是否能够接受请求。您可能希望这两个参数都不同 K8s是否根据探测结果采取任何行动取决于failureThreshold。这是在K8s执行某些操作之前,探测

在我的K8S工作负载中,我为pods健康检查实现了就绪探测和活动探测

我想知道我是否应该将间隔(
periodSeconds
)设置为1秒,因为它会消耗更多的资源,对吗


进行pod健康检查时是否有最佳做法?

首先,了解活跃度和准备度之间的区别很重要。tl;dr is:Liveness是关于K8s是否应该终止并重新启动容器,Readiness是关于容器是否能够接受请求。您可能希望这两个参数都不同

K8s是否根据探测结果采取任何行动取决于
failureThreshold
。这是在K8s执行某些操作之前,探测器必须连续失败的次数。如果将其与
periodSeconds
相结合,则可以调整探头的灵敏度

一般来说,您希望平衡:

  • K8s采取行动所需的时间,以及基于探测的预期服务恢复速度
  • 探针的“成本”。例如,如果准备就绪探测器连接到数据库,那么您将为每个副本向数据库添加每秒1个查询(QPS)负载(对于100个副本,您将仅通过探测器生成100QPS!)
  • 探针的可靠性,也称为“片状”。误报率是多少?即探测器报告失败但服务实际运行时的预期性能率是多少
以下是一种思考方式:

  • 在K8s采取行动之前,计算出您的服务处于失败状态的时间。这应基于恢复所需的时间(例如,在活动情况下重新启动)
  • 如果探针“昂贵”,则具有更长的
    周期秒
    和更小的
    故障保持时间
  • 如果探针“不稳定”(即偶尔报告失败,然后报告很快就开始工作),则
    周期秒数
    较短,而
    失败次数较短
“是否有最佳实践”--当然:必要时尽可能频繁地这样做。