다음을 통해 공유

在 Azure Kubernetes 服务(AKS)中使用共享运行状况探测的服务 externalTrafficPolicy: Cluster(预览版)

本文介绍如何在 Azure Kubernetes 服务(AKS)中为服务启用externalTrafficPolicy: Cluster(预览)。 共享探测模式可提高负载均衡器效率,降低配置复杂性,并提供更准确的节点运行状况监视。

关于共享运行状况探测模式

在使用externalTrafficPolicy: Cluster的群集中,Azure 标准负载均衡器(SLB)当前会为每个服务创建单独的探测,同时针对每个服务的

此种设计标识 SLB 从任何回答探测的应用程序 Pod 推断节点健康状况。 随着群集的增长,此方法会导致几个问题,包括:

  • 配置偏移和盲点:如果 iptables 规则仍然存在,SLB 无法检测到失败或配置 kube‑proxy 错误。
  • 复制健康状况逻辑:必须两次定义就绪情况。 一次在每个 Pod 的 readinessProbe 中,另一次通过 SLB 注释。
  • 操作开销:每个节点上的每个服务每 五秒检查一次,消耗连接、SNAT 端口和 SLB 规则空间。
  • 功能摩擦:客户无法设置 allocateLoadBalancerNodePorts=false,Istio 或 ingress-nginx 等工作负载需要额外的注释才能使探测正常工作。
  • 排查混淆:运行不正常的应用、网络策略规则或缩放到零事件可能会使整个节点出现故障。

共享探测模式通过迁移到一个用于所有服务的单个 HTTP 探测来解决这些问题。 在共享探测模式下:

  • SLB 探测 http://<node‑ip>:10356/healthz,标准 kube‑proxy 健康状况终结点。
  • 轻量挎斗在 kube‑proxy 旁边运行,以在启用专用链接服务时中继探测并处理 PROXY 协议。

共享探测模式的优点

下表概述了使用共享探测模式 的主要优势

益处 重要性
准确的节点健康状况 SLB 现在直接测量 kube‑proxy,而不是任意的后端 pod。
更简单的配置 无每个服务探测注释;准备状态完全取决于 Pod 规格。
降低流量开销 每个节点一个探测,而不是服务×(节点-1)探测。

注释

使用共享探测模式时,请记住以下信息:

  • 使用 externalTrafficPolicy: Local 的服务 保持不变
  • 此功能 不会 解决容器原生负载均衡问题。

在您开始之前

安装或更新 aks-preview Azure CLI 扩展

重要

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

  • 使用 aks-preview 命令安装 az extension add 扩展。

    az extension add --name aks-preview
    
  • 使用aks-preview命令更新到最新版本的az extension update扩展。

    az extension update --name aks-preview
    

注册 EnableSLBSharedHealthProbePreview 功能标志

  1. 使用 EnableSLBSharedHealthProbePreview 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "EnableSLBSharedHealthProbePreview"
    

    几分钟后,状态将显示为“已注册”

  2. 使用 az feature show 命令验证注册状态:

    az feature show --namespace "Microsoft.ContainerService" --name "EnableSLBSharedHealthProbePreview"
    
  3. 当状态反映为已注册时,使用 命令刷新 az provider register 资源提供程序的注册。

    az provider register --namespace Microsoft.ContainerService
    

在 AKS 群集上启用共享探测模式

  • 使用命令az aks create并将--cluster-service-load-balancer-health-probe-mode参数设置为shared创建启用共享探测模式的新集群。

    az aks create \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --cluster-service-load-balancer-health-probe-mode shared