Kubernetes 群集中的每个 Pod、服务和节点都会不断生成网络活动:连接的打开、数据包的转发或丢弃、DNS 查询的解析或失败。 了解活动对于调试、容量规划和保持服务正常至关重要。 但大多数监控设置的不足之处有两个方面:
- 可见度不够。 节点级聚合会告知你出现了问题,但不会告诉你 在哪里。 如果没有包含源和目标上下文的 Pod 级别细分,隔离失败的工作负荷意味着猜测。
- 大规模数据过多。 运行数百个微服务的群集可以为每个节点生成数千个指标时序。 收集所有内容会降低存储成本,并降低仪表板的速度。
容器网络指标在Azure Kubernetes 服务 (AKS)的Advanced Container Networking Services中应对这两者。 此功能在 Linux 和 Windows 上跨支持的 Cilium 和非 Cilium 数据平面收集节点级别和 Pod 级别的网络指标。
在 Cilium 群集上,可以进一步执行源级筛选,这样就可以在数据离开节点 之前 准确选择收集的命名空间、工作负载和指标类型。
容器指标筛选是可观测性数据的预引入控制。 与其在仪表板或查询中收集并筛选每一个可用的度量,不如直接在源头定义需要收集的内容。 这会保留你关注的工作负荷的高价值指标,并避免引入低值或干扰时序。
结果:在任何受支持的数据平面上实现可操作的网络可观测性,并在 Cilium 上进行具有成本效益的可选筛选。
容器网络指标可让你深入了解工作负荷级别的可见性,以便进行故障排除和规划,而 Cilium 上的源级筛选有助于保持与业务关键型工作负荷成正比的可观测性成本。
数据收集和过滤一目了然
使用此表快速了解广泛集合的可用位置以及精细筛选的可用位置:
| 能力 | Cilium 群集 | 非 Cilium 群集 |
|---|---|---|
| 节点级指标集合 | ✅ | ✅ |
| Pod 级指标集合 | ✅ (Linux) | ✅ (Linux) |
| 按命名空间、Pod 标签和指标类型进行源级筛选 | ✅ | ❌ |
| 通过预引入筛选进行成本控制 | ✅ | ❌ |
Important
从 2025 年 11 月 30 日开始,Azure Kubernetes 服务(AKS)不再支持或提供 Azure Linux 2.0 安全更新。 Azure Linux 2.0 节点镜像冻结在 202512.06.0 版本。 从 2026 年 3 月 31 日开始,将删除节点映像,并且无法缩放节点池。 迁移到受支持的 Azure Linux 版本,方法是将节点池升级到受支持的 Kubernetes 版本或迁移到 osSku AzureLinux3。 有关详细信息,请参阅 GitHub 退役问题和 Azure 更新退役公告。 若要随时了解公告和更新,请按照 AKS 发行说明进行操作。
主要优势
节点和 Pod 级粒度。 在基础设施运行状况中,在节点级别监控流量、丢包率和连接状态。 深入分析带有源标签和目标标签的单个 Pod,以查明导致问题的确切工作负荷。
更快的故障排除速度。 当服务开始删除数据包或 DNS 查询失败时,Pod 级指标允许你将问题隔离到特定的 Pod、命名空间或协议(以秒为单位),而不是数小时。
灵活的可视化效果。 将指标存储在 Azure 托管的 Prometheus 中,并通过 Azure 托管的 Grafana(全托管)进行可视化,或使用您自带的 Prometheus 和 Grafana 基础设施。
设计具有可扩展性。 管道处理包含数百个节点和数千个 Pod 的大型动态群集,而无需在全面覆盖和可管理的数据卷之间进行选择。
目标可观测性(Cilium 群集)。 在 Cilium 集群上,源级筛选允许您定义所关注的命名空间、Pod 标签或指标类型,并仅收集这些。 不需要收集后剪裁。
降低指标引入成本(Cilium 群集)。 由于过滤发生在每个节点的源,因此不需要的指标时序从未被抓取、传输或摄取到您的 Prometheus 后端。 只需为实际需要的指标付费。 在未经过滤的采集可以为每个节点生成数千个时间序列的大型群集中,源级过滤可以显著减少 Azure 托管 Prometheus 的引入和存储成本。
工作原理
每个节点上的代理堆栈取决于数据平面,如下图所示。
Linux Cilium 节点 使用基于分层的 eBPF 堆栈:eBPF 内核挂钩捕获原始流量数据,Cilium 处理数据,Hubble 将其公开为 Prometheus 格式指标。 由于 Hubble 位于节点和抓取终端之间,因此源级筛选在此层运行,您可以在数据离开节点之前选择要导出的命名空间、Pod 标签和指标类型。
非 Cilium 的 Linux 节点通过 eBPF 内核钩子将信息发送到微软 Retina,顶部还覆盖有 Hubble 层,用于流量检测。 Microsoft Retina 以 Prometheus 格式处理指标收集和导出节点级和 Pod 级指标。
何时使用容器网络指标
容器网络指标专为需要集中、可操作的网络数据而不是原始遥测的团队设计。 常见方案包括:
- 调试特定的工作负荷。 使用 Pod 级指标来隔离特定服务的数据包丢弃、TCP 重置或 DNS 故障。 在 Cilium 群集上,筛选可以将收集范围缩小到仅该命名空间或 Pod 标签,从而减少群集范围的干扰。
- 监视多租户群集。 跟踪每个命名空间的网络运行状况,以便每个团队都能了解自己的流量模式。 在 Cilium 群集上,范围筛选将集合限制为特定于租户的命名空间。
- 容量规划。 跟踪每个节点的转发和丢弃的字节计数,以识别拥塞的链路或不均衡的工作负荷分配。
- DNS 运行状况监测。 揭示 DNS 查询失败和解析时间缓慢的问题,以便在问题波及到应用程序错误之前进行捕获。
- 大规模降低可观测性成本。 在大型群集中,未筛选的集合可以为每个节点生成数千个时序。 在 Cilium 群集上,源级筛选在引入之前会删除不需要的系列,因此成本与所选的工作负载和指标类型保持一致。
如何选择要收集的内容(Cilium 群集)
使用此推出模型平衡可见性和成本:
- 从非生产命名空间中的广泛集合开始,以建立基线。
- 保留关键命名空间的丢包、DNS 和 TCP 状态指标。
- 仅将高基数流指标的范围限定为业务关键型工作负荷。
- 查看 Prometheus 引入趋势并每周优化筛选器。
此方法有助于保持高价值指标,同时控制时序增长和引入成本。
在您查看指标表之前
请记住以下几点:
- 节点级指标可用于受支持的 Cilium 和非 Cilium 数据平面。
- Linux 上提供了 Pod 级指标。
- 源级筛选仅适用于 Cilium 群集。
- 在 Cilium 群集上,DNS 指标需要 Cilium FQDN 网络策略。
指标参考
节点级指标
节点级指标提供每个节点的聚合流量统计信息- 转发和丢弃的数据包、字节计数和连接状态。 这些指标以 Prometheus 格式存储,可在 Grafana 中可视化。
以下指标按节点汇总。 所有指标都包含以下标签:
cluster-
instance(节点名称)
对于 Cilium 数据平面群集,节点级指标仅在 Linux 上可用。 Cilium 公开容器网络指标使用的以下指标:
| 指标名称 | Description | 额外的标签 | Linux | Windows操作系统 |
|---|---|---|---|---|
| cilium_forward_count_total | 转发的数据包总计 | direction |
✅ | ❌ |
| cilium_forward_bytes_total | 转发字节数总计 | direction |
✅ | ❌ |
| cilium_drop_count_total | 丢弃的数据包总计 |
direction、reason |
✅ | ❌ |
| cilium_drop_bytes_total | 删除的字节总计 |
direction、reason |
✅ | ❌ |
Pod级指标 (Hubble指标)
Pod 级指标包括源 Pod 和目标 Pod 信息,因此可以在单个工作负荷级别查明网络问题。 这些指标涵盖流量、丢弃的数据包、TCP 重置和第 4 层/第 7 层流。
默认情况下,非 Cilium 数据平面上收集 DNS 指标(查询计数、响应代码和错误)。 在 Cilium 数据平面上,DNS 指标需要 Cilium FQDN 网络策略。 还可以使用 Hubble CLI 实时对 DNS 进行故障排除。
下表描述了汇总到每个 Pod 的指标(节点信息已保留)。
所有指标包括标签:
clusterinstance(节点名称)source或destination对于 传出流量,
source标签用于指示源 Pod 的命名空间和名称。对于 传入流量,
destination标签指示了目标 Pod 的命名空间和名称。
| 指标名称 | Description | 额外的标签 | Linux | Windows操作系统 |
|---|---|---|---|---|
| hubble_dns_queries_total | DNS 请求总数(按查询) |
source 或 destination、query、qtypes(查询类型) |
✅ | ❌ |
| hubble_dns_responses_total | DNS 响应总数(按查询/响应) |
source 或 destination、query、qtypes(查询类型)、rcode(返回代码)、ips_returned(IP 数) |
✅ | ❌ |
| hubble_drop_total | 丢弃的数据包总计 |
source 或 destination、protocol、reason |
✅ | ❌ |
| hubble_tcp_flags_total | 按标志排序的 TCP 数据包计数总计 |
source 或 destination、flag |
✅ | ❌ |
| hubble_flows_processed_total | 处理的网络流总数(第 4 层/第 7 层流量) |
source 或 destination、protocol、verdict、type、subtype |
✅ | ❌ |
局限性
平台和数据平面:
- Pod 级指标仅在 Linux 上可用。
- 从 Kubernetes 版本 1.29 开始,支持 Cilium 数据平面。
- 源级指标筛选仅适用于 Cilium 群集。
- 指标标签在 Cilium 和非 Cilium 群集之间存在细微差异。
DNS 指标:
- 在 Cilium 群集上,DNS 指标需要 Cilium FQDN 网络策略,也可以使用 Hubble CLI 进行实时 DNS 故障排除。
已知问题:
- 如果 Hubble 节点代理出现故障,Hubble 中继可能会崩溃,这可能会中断 Hubble CLI 会话。
FIPS 支持(仅限不使用 Cilium 的数据平面):
- 由于内核限制,FIPS 在 Ubuntu 20.04 节点上不可用。 请改用 Azure Linux 节点池。 此限制不适用于 Cilium 数据平面。 有关更新,请参阅 AKS 问题跟踪器。
| 操作系统 | FIPS 支持 |
|---|---|
| Azure Linux 3.0 | 是的 |
| Azure Linux 2.0 | 是的 |
| Ubuntu 20.04 | No |
规模:
- Azure Monitor 和 Azure 托管 Grafana 中适用于 Prometheus 的托管服务施加特定于服务的缩放限制。
Pricing
Important
高级容器网络服务是一项付费服务。
相关内容
- 配置容器网络指标筛选
- AKS 的高级容器网络服务
- 高级容器网络服务中的容器网络可观测性
- 高级容器网络服务中的容器网络安全