配置 Endpoint Health Checker
目录
OverviewKey FeaturesInstallation通过 Marketplace 安装How It Works健康检查机制核心功能健康检查流程性能提升How To ActivatePod 级注解(推荐)针对 ALB针对 IngressNginx针对 EnvoyGateway针对自定义 DeploymentPod 级 readinessGates(旧版)UninstallationOverview
Endpoint Health Checker 是一个集群插件,旨在监控和管理 k8s 集群中服务端点的健康状态。它会自动将不健康的端点从服务中移除,确保流量仅路由到健康实例,从而提升整体服务的可靠性和可用性。
Key Features
- 自动健康监控:持续监控 k8s 集群中服务端点的健康状态
- 负载均衡集成:自动将不健康端点从服务中移除
- 服务可用性:确保流量仅导向健康且可用的端点
- 快速故障切换:在节点断电时将端点切换时间从 40 秒缩短至 10 秒
Installation
通过 Marketplace 安装
-
进入 管理员 > Marketplace > 集群插件。
-
在插件列表中搜索“Alauda Container Platform Endpoint Health Checker”。
-
点击 安装 打开安装配置页面。
-
在部署配置对话框中,可选配置以下参数:
-
点击 安装 部署插件。
-
等待插件状态变为“Ready”。
How It Works
健康检查机制
Endpoint Health Checker 是专门的健康监控组件,确保只有健康的端点接收流量。它通过监控服务端点并自动管理其可用性状态来实现。
核心功能
Endpoint Health Checker 的工作流程:
- 服务发现:识别集群中配置了健康监控的服务和 Pod。
- Pod 健康监控:监控支撑服务端点的 Pod 的就绪和存活探针状态。
- 主动健康检查:使用可配置的标准执行主动健康评估:
- TCP 连接检查:建立 TCP 连接以验证端口可访问性。
- 端点管理:自动将不健康端点从服务端点列表中移除,防止流量路由到故障实例。
健康检查流程
健康检查流程包括:
- 探针集成:利用 Kubernetes 的就绪和存活探针结果作为初步健康指标。
- 网络连通性:向目标端点端口发送 TCP 包以验证可访问性。
- 响应验证:评估响应状态、时长和内容以确定端点健康状况。
- 自动故障切换:将无响应或失败的端点从服务端点列表中移除。
性能提升
- 之前方法:依赖 kubelet 心跳检测,延迟最长达 40 秒。
- 当前方法:主动端点健康检查,检测和切换时间为 10 秒。
- 提升效果:显著提升 ALB + MetalLB 环境中节点故障时的服务可用性。
How To Activate
健康检查可通过以下两种方式激活:
Pod 级注解(推荐)
针对 ALB
设置 ALB2 的 alb.cpaas.io/pod-annotations 注解
针对 IngressNginx
- 安装 ingress-nginx
- 在
IngressNginx的.spec.controller.podAnnotations中设置podAnnotations。
针对 EnvoyGateway
- 安装 envoy-gateway-operator
- 在
EnvoyProxy的.spec.provider.kubernetes.envoyDeployment.patch.value.spec.template.metadata.annotations中设置annotations。
针对自定义 Deployment
在 Deployment 的 .spec.template.metadata.annotations 中设置 annotations
Pod 级 readinessGates(旧版)
为旧版本配置 Pod 的 readinessGates:
注意:readinessGates 配置来自旧版本,建议新部署使用 Pod 注解
endpoint-health-checker.io/enabled: 'true'。
Uninstallation
卸载 Endpoint Health Checker:
-
进入 管理员 > Marketplace > 集群插件。
-
找到已安装的“Endpoint Health Checker”插件。
-
点击选项菜单,选择 卸载。
-
按提示确认卸载。