在 Azure Kubernetes 服务 (AKS) 中使用群集运行状况监视器检查器(预览版)

本文介绍如何在 Azure Kubernetes 服务 (AKS) 中部署群集运行状况监视器。

群集运行状况监视器可帮助你提前检测 AKS 托管组件问题,并通过在特定方案中为运行不正常的 CoreDNS Pod 启用自动修正来提高复原能力。 它定期检查 CoreDNS、指标服务器和 API 服务器等组件,并将结果公开为 Prometheus 指标来发出警报。

重要

Cluster Health Monitor 是用于系统组件的 AKS 托管检查器。 它不会替换 Azure Monitor、Managed Prometheus 或现有监控堆栈。

重要

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

概述

群集健康监视器是 AKS 托管加载项,部署在 kube-system 命名空间中。 它包括两个监视器:

  • 控制平面和附加组件监控器 持续执行群集内检查,以验证影响集群运行和升级可靠性的控制平面和附加组件。 它会评估以下信号:

    • DNS 解析成功率 用于检测可能影响服务发现的不正常的 DNS Pod。
    • API 服务器连接 ,用于检测从群集内到达控制平面的故障。
    • 指标服务器可用性 ,用于检测指标集合中的故障。
  • 按需监视器 在预配或重新启动节点时自动运行节点运行状况检查。 还可以在任何现有节点上手动触发检查。 它评估:

    • Pod 调度,以确认标准 Pod 能否调度到该节点上。
    • Pod 网络,用于确认 Pod 可以访问其他 Pod。

在您开始之前

  • 安装Azure CLI版本 2.73.0 或更高版本。 请运行 az --version 以查看版本。 若要安装或升级,请参阅 Install Azure CLI

  • aks-preview 安装 Azure CLI 扩展版本 21.0.0b8 或更高版本:

      az extension add --name aks-preview
    

    如果已安装扩展,请将其更新到最新版本。

      az extension update --name aks-preview
    
  • 对于此功能,请使用 AKS 预览版托管群集 API 版本 2026.01.02-preview。

启用群集运行状况监视器

启用控制平面和附加监视器

此功能支持对控制平面和附加组件进行群集内监视。 如果 CoreDNS Pod 持续五分钟处于不健康状态,它还会对其进行修复。 有关详细信息,请参阅 CoreDNS 修正的工作原理

若要在新群集上启用控制平面和附加监视器,请执行以下操作:

az aks create -g myResourceGroup -n myCluster --enable-continuous-control-plane-and-addon-monitor

若要在现有群集上启用控制平面和附加监视器,请执行以下操作:

az aks update --resource-group myResourceGroup --name myCluster --enable-continuous-control-plane-and-addon-monitor

验证控制平面和附加监视器

启用该功能后,可以验证部署状态和指标端点暴露。

验证群集运行状况监视器部署是否正在 kube-system 中运行。

kubectl get deployment -n kube-system  cluster-health-monitor

禁用控制平面和附加监视器

az aks update -g myResourceGroup -n myCluster --disable-continuous-control-plane-and-addon-monitor

了解控制平面和附加组件监控器暴露的指标

每个检查返回以下状态之一:

地位 含义
Healthy 组件正常运行。
Unhealthy 检查失败。 指标中的错误代码指示失败原因。
Unknown 结果尚不确定,例如在 pod 启动期间或当依赖项不可用时。

错误代码参考

集群健康监视器在 9800 命名空间中的 cluster-health-monitor 部署上通过 kube-system 端口暴露指标。 您可以使用 Prometheus 抓取这些指标,并据此检测控制平面和附加组件的健康问题。 当检查报告Unhealthy时,群集健康监视器会在指标标签中附加错误代码。

检查器 错误代码 它指示的内容
APIServer APIServerCreateErrorAPIServerGetErrorAPIServerDeleteError 在为综合测试资源创建、获取或删除操作期间,API 服务器检查失败。
APIServer APIServerCreateTimeoutAPIServerGetTimeoutAPIServerDeleteTimeout API 服务器检查在创建、获取或删除操作期间超出了超时阈值。
CoreDNS / LocalDNS ServiceNotReadyPodsNotReady 运行检查时,DNS 基础结构尚未准备就绪。
CoreDNS / LocalDNS ServiceErrorPodErrorLocalDNSError DNS 查询失败,出现非超时错误。
CoreDNS / LocalDNS ServiceTimeoutPodTimeoutLocalDNSTimeout DNS 查询超时。
MetricsServer MetricsServerUnavailable 无法访问指标服务器 API 或返回错误。
MetricsServer MetricsServerTimeout 指标服务器 API 请求超时。

CoreDNS 修复的工作原理

群集运行状况监视器中的控制平面和加载项监视器包括 CoreDNS 修正功能,可还原 DNS 运行状况,同时最大程度地降低 DNS 可用性的风险。 在采取措施之前,它会评估每个 Pod DNS 运行状况检查结果、每个 Pod 运行不正常的时间、其他 CoreDNS Pod 的运行状况状态以及最近的修正历史记录。

仅当以下所有条件都为 true 时,它才会删除运行不正常的 CoreDNS Pod:

  • 恰好有一个 CoreDNS Pod 在至少 5 分钟内持续处于不健康状态。
  • 至少有一个其他 CoreDNS Pod 正常运行。
  • 在过去一小时内,未触发任何 CoreDNS 修复事件。

满足所有条件后,它会删除不正常的 Pod。 然后,Kubernetes 会重新创建它。 此方法可还原 DNS 容量,同时至少保留一个正常运行的副本,并在持续事件期间避免重复的修正周期。

启用按需监视器

若要在新群集上启用按需监视器,请执行以下操作:

az aks create --resource-group myResourceGroup --name myCluster --enable-on-demand-monitor

若要在现有群集上启用按需监视器,请执行以下操作:

az aks update --resource-group myResourceGroup --name myCluster --enable-on-demand-monitor

验证按需监视器

若要验证是否已启用按需监视器,请运行:

kubectl get crd checknodehealths.clusterhealthmonitor.azure.com -o yaml

禁用按需监视器

az aks update --resource-group myResourceGroup --name myCluster --disable-on-demand-monitor

使用按需监视器检查节点运行状况

预配或重新启动节点时,AKS 会自动触发节点运行状况检查。 与控制平面和附加监视器一样,按需监视器将节点运行状况报告为 HealthyUnhealthyUnknown

手动触发节点运行状况检查

要在现有节点上手动触发健康检查,请将一个 CheckNodeHealth 自定义资源部署到集群中。 有关资源架构,请在 GitHub 上参阅 CheckNodeHealth CRD 定义。 自定义资源会在六小时后自动清理。 请参阅以下示例,在特定节点上触发运行状况检查:

kubectl apply -f - <<'EOF'
apiVersion: clusterhealthmonitor.azure.com/v1alpha1
kind: CheckNodeHealth
metadata:
  name: my-node-check
spec:
  nodeRef:
    name: aks-nodepool1-12345678-vmss000000
EOF

若要检查健康检查状态,请运行:

kubectl get CheckNodeHealth my-node-check -o yaml 
kubectl describe node <node-name> 

在输出中,查找 kubernetes.azure.com/NodeHealthy 条件,并检查其 StatusMessage 字段。

注释

运行 CoreDNS Pod 的节点可能会显示此检查的状态 Unknown 。 运行状况检查使用 CoreDNS ping 验证跨节点连接,因此无法在托管 CoreDNS Pod 的节点上运行。

节点修正的工作原理

当按需监视器检测到不正常的节点时,AKS 会自动修正它。 修正行为取决于节点的预配方式:

  • 节点自动预配节点会根据节点自动预配的修复逻辑自动修复。
  • 其他节点 - AKS 会逐渐增加修正范围:在 5 分钟后重启节点,在 10 分钟后重新映像该节点,并在 15 分钟后重新部署 VM。 对于每次节点预配事件,每个操作都会被尝试一次。

后续步骤