Endpoint Health Checker

目录

Overview

Endpoint Health Checker 是一个集群插件,旨在监控和管理服务端点的健康状态。它会自动将不健康的端点从负载均衡器中移除,确保流量仅路由到健康的实例,从而提升整体服务的可靠性和可用性。

Key Features

  • 自动健康监控:持续监控服务端点的健康状态
  • 负载均衡器集成:自动将不健康的端点从负载均衡轮换中移除
  • 服务可用性:确保流量仅导向健康且可用的端点

Installation

Install via Marketplace

  1. 进入 管理员 > Marketplace > 集群插件

  2. 在插件列表中搜索“Alauda Container Platform Endpoint Health Checker”。

  3. 点击 安装,打开安装配置页面。

  4. 等待插件状态变为“Ready”。

How It Works

Health Check Mechanism

Endpoint Health Checker 是一个专用的健康监控组件,确保只有健康的端点接收流量。它通过监控服务端点并自动管理其可用状态来实现。

Core Functionality

Endpoint Health Checker 的工作原理:

  1. 服务发现:识别配置了健康监控的服务和 Pod
  2. Pod 健康监控:监控支撑服务端点的 Pod 的就绪和存活探针状态
  3. 主动健康检查:使用可配置的标准执行主动健康评估:
    • TCP 连接检查:建立 TCP 连接以验证端口可访问性
    • HTTP/HTTPS 响应验证:发送 HTTP 请求并验证响应码和内容
  4. 端点管理:自动将不健康的端点从服务端点列表中移除,防止流量路由到故障实例

Health Check Process

健康检查流程包括:

  • 探针集成:利用 Kubernetes 的就绪和存活探针结果作为初步健康指标
  • 网络连通性:向目标端点端口发送 TCP 或 HTTP 数据包以验证可访问性
  • 响应验证:评估响应状态、时长和内容以判断端点健康状况
  • 自动故障转移:将无响应或失败的端点从负载均衡轮换中移除

Activation Methods

健康检查可通过两种方式激活:

  1. Pod 级注解(推荐)

    在 Deployment 的 Pod 模板中添加注解:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
          annotations:
            endpoint-health-checker.io/enabled: "true"
        spec:
          containers:
            - name: nginx
              image: nginx:alpine
              ports:
                - containerPort: 80
              livenessProbe:
                tcpSocket:
                  port: 80
                initialDelaySeconds: 15
                periodSeconds: 10
              readinessProbe:
                tcpSocket:
                  port: 80
                initialDelaySeconds: 5
                periodSeconds: 5
  2. Pod 级 readinessGates(旧版)

    为旧版本配置 Pod 的 readinessGates:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo-legacy
    spec:
      replicas: 5
      selector:
        matchLabels:
          app: nginx-demo-legacy
      template:
        metadata:
          labels:
            app: nginx-demo-legacy
        spec:
          readinessGates:
            - conditionType: "endpointHealthCheckSuccess"
          containers:
            - name: nginx
              image: nginx:alpine
              ports:
                - containerPort: 80
              livenessProbe:
                tcpSocket:
                  port: 80
                initialDelaySeconds: 15
                periodSeconds: 10
              readinessProbe:
                tcpSocket:
                  port: 80
                initialDelaySeconds: 5
                periodSeconds: 5

    注意:readinessGates 配置来自旧版本。建议新部署使用 Pod 注解 endpoint-health-checker.io/enabled: "true"

Uninstallation

卸载 Endpoint Health Checker:

  1. 进入 管理员 > Marketplace > 集群插件

  2. 找到已安装的“Endpoint Health Checker”插件。

  3. 点击选项菜单,选择 卸载

  4. 按提示确认卸载。