配置 Endpoint Health Checker
目录
概述主要功能安装通过 Marketplace 安装工作原理健康检查机制核心功能健康检查流程性能提升如何启用Pod 级注解(推荐)对于 ALB对于 IngressNginx对于 EnvoyGateway对于自定义部署Pod 级 readinessGates(旧版)卸载概述
Endpoint Health Checker 是一个集群插件,用于监控和管理 k8s 集群中 service endpoint 的健康状态。它会自动从 service 中移除不健康的 endpoint,确保流量仅路由到健康的实例,从而提升整体服务的可靠性和可用性。
主要功能
- 自动健康监控:持续监控 k8s 集群中 service endpoint 的健康状态
- 负载均衡集成:自动从 service 中移除不健康的 endpoint
- 服务可用性:确保流量仅定向到健康、可用的 endpoint
- 快速故障切换:将节点断电期间的 endpoint 切换时间从 40 秒缩短到 10 秒
安装
通过 Marketplace 安装
-
导航到 管理员 > Marketplace > 集群插件。
-
在插件列表中搜索 "Alauda Container Platform Endpoint Health Checker"。
-
单击 安装,打开安装配置页面。
-
在部署配置对话框中,你可以选择性地配置以下参数:
-
单击 安装 部署插件。
-
等待插件状态变为 "Ready"。
工作原理
健康检查机制
Endpoint Health Checker 是一个专用的健康监控组件,可确保只有健康的 endpoint 才能接收流量。它通过监控 service endpoint,并自动管理其可用性状态来运行。
核心功能
Endpoint Health Checker 的工作方式如下:
- 服务发现:识别集群中配置了健康监控的服务和 pod。
- Pod 健康监控:监控为 service endpoint 提供后端支持的 pod 的 readiness 和 liveness 探针状态
- 主动健康检查:使用可配置的标准执行主动健康评估:
- TCP 连通性检查:建立 TCP 连接以验证端口可访问性
- Endpoint 管理:自动从 service endpoint 列表中移除不健康的 endpoint,以防止流量路由到失效实例
健康检查流程
健康检查流程包括:
- 探针集成:利用 Kubernetes readiness 和 liveness 探针结果作为初始健康指标
- 网络连通性:向目标 endpoint 端口发送 TCP 数据包以验证可访问性
- 响应校验:评估响应状态、时延和内容,以确定 endpoint 的健康状况
- 自动故障切换:从 service endpoint 列表中移除无响应或失败的 endpoint
性能提升
- 旧方式:依赖 kubelet 心跳检测,最多有 40 秒延迟
- 当前方式:主动 endpoint 健康检查,检测和切换时间为 10 秒
- 提升:显著提高了 ALB + MetalLB 环境中节点故障期间的服务可用性
如何启用
健康检查可通过两种方式启用:
Pod 级注解(推荐)
对于 ALB
为 ALB2 设置 alb.cpaas.io/pod-annotations 注解
对于 IngressNginx
- 安装 ingress-nginx
- 在
IngressNginx的.spec.controller.podAnnotations中设置podAnnotations。
对于 EnvoyGateway
按照 如何在 Envoy Gateway 中添加 Pod 注解 中的说明进行操作,将注解设置为 endpoint-health-checker.io/enabled: 'true'。
对于自定义部署
在 Deployment 的 .spec.template.metadata.annotations 中设置 annotations
Pod 级 readinessGates(旧版)
为旧版本在 pod spec 中配置 readinessGates:
注意:readinessGates 配置来自旧版本。对于新的部署,建议使用 pod 注解
endpoint-health-checker.io/enabled: 'true'。
卸载
要卸载 Endpoint Health Checker:
-
导航到 管理员 > Marketplace > 集群插件。
-
找到已安装的 "Endpoint Health Checker" 插件。
-
单击选项菜单并选择 卸载。
-
在提示时确认卸载。