本文介绍如何在 Azure Kubernetes Service (AKS) 中部署群集运行状况监视器。
群集运行状况监视器可帮助你提前检测 AKS 托管组件问题,并通过在特定方案中为不正常的 CoreDNS Pod 启用自动修正来提高复原能力。 它定期检查 CoreDNS、指标服务器和 API 服务器等组件,并将结果公开为 Prometheus 指标来发出警报。
重要
Cluster Health Monitor 是用于系统组件的 AKS 托管检查器。 它不会替换 Azure Monitor、Managed Prometheus 或现有监控堆栈。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
概述
群集健康监视器是 AKS 托管加载项,部署在 kube-system 命名空间中。 它运行连续的群集内检查,以验证影响群集操作和升级可靠性的关键组件。
检查器评估以下信号:
- DNS 解析成功率 用于检测可能影响服务发现的不正常的 DNS Pod。
- API 服务器连接 ,用于检测从群集内到达控制平面的故障。
- 指标服务器可用性 ,用于检测指标集合中的故障。
群集运行状况监视器在端口 9800上将检查结果公开为 Prometheus 指标,因此可以在现有监视管道中抓取这些信号并发出警报。
针对 DNS 特定的检查,群集运行状况监视器可以通过删除检测为卡住或不正常的 CoreDNS pod 来自动修复这些问题。 然后,Kubernetes 重新创建 Pod。 群集运行状况监视器仅在特定的安全保护条件下应用此纠正措施,以减少中断。 有关详细信息,请参阅 CoreDNS 修正的工作原理。
在您开始之前
安装Azure CLI版本 2.73.0 或更高版本。 可以运行 az --version 来验证版本。 若要安装或升级,请参阅 Install Azure CLI。
安装
aks-previewAzure CLI 扩展版本 19.0.0b25 或更高版本:az extension add --name aks-preview如果已安装扩展,请将其更新为最新版本:
az extension update --name aks-preview对于此功能,请使用 AKS 预览版托管群集 API 版本 2026.01.02-preview。
启用群集运行状况监视器
群集运行状况监视器支持对控制平面和附加组件进行连续群集内监视。 对于 DNS 问题,如果 CoreDNS pods 持续 5 分钟不正常,AKS 会对这些不正常的 CoreDNS pods 进行修复。 有关更多详细信息,请参阅 CoreDNS 修正的工作原理 。
az aks create -g myResourceGroup -n myCluster --enable-continuous-control-plane-and-addon-monitor
验证集群健康监视器
启用该功能后,可以验证部署状态和指标端点暴露。
获取群集凭据:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER_NAME}验证群集健康监视器部署是否正在运行
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
了解群集健康监视器所公开的指标
群集运行状况监视器在端口 9800上公开指标。 可以使用 Prometheus 抓取这些指标,并用来检测插件运行状况的问题。
每个检查返回以下状态之一:
| 地位 | 含义 |
|---|---|
Healthy |
组件正常运行。 |
Unhealthy |
检查失败。 指标中的错误代码指示失败原因。 |
Unknown |
结果尚不确定,例如在 pod 启动期间或当依赖项不可用时。 |
选项 1:
错误代码参考
当检查报告Unhealthy时,群集健康监视器会在指标标签中附加错误代码。
| 检查器 | 错误代码 | 它指示的内容 |
|---|---|---|
| APIServer |
APIServerCreateError、APIServerGetError、APIServerDeleteError |
在为综合测试资源创建、获取或删除操作期间,API 服务器检查失败。 |
| APIServer |
APIServerCreateTimeout、APIServerGetTimeout、APIServerDeleteTimeout |
API 服务器检查在创建、获取或删除操作期间超出了超时阈值。 |
| CoreDNS / LocalDNS |
ServiceNotReady、PodsNotReady |
运行检查时,DNS 基础结构尚未准备就绪。 |
| CoreDNS / LocalDNS |
ServiceError、PodError、LocalDNSError |
DNS 查询失败,出现非超时错误。 |
| CoreDNS / LocalDNS |
ServiceTimeout、PodTimeout、LocalDNSTimeout |
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 容量,同时至少保留一个正常运行的副本来为流量提供服务,并避免在持续事件期间重复的修正周期。