你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
什么是容器网络可观测性?
容器网络可观测性是高级容器网络服务套件的功能。 它为你配备了更高级别的监视和诊断工具,为容器化工作负载提供无与伦比的可见性。 借助这些工具,可以轻松地查明和解决网络问题,确保应用程序实现最佳性能。
容器网络可观测性与所有 Linux 工作负载兼容,并与 Hubble 无缝集成,无论底层数据平面是 Cilium 还是非 Cilium(均受支持),确保灵活满足容器网络需求。
注意
对于 Cilium 数据平面方案,从 Kubernetes 版本 1.29 开始支持容器网络可观测性功能。 从版本 2.0 开始,所有 Linux 发行版(包括 Azure Linux)都支持容器网络可观测性功能。
容器网络可观测性的功能
容器网络可观测性提供以下功能来监视群集中与网络相关的问题:
节点级指标:了解节点级容器网络的运行状况对于维持最佳应用程序性能至关重要。 这些指标提供按节点统计的流量、丢弃的数据包数、连接数等信息。 指标以 Prometheus 格式存储,因此可以在 Grafana 中查看它们。
Hubble 指标(DNS 和 Pod 级指标):这些 Prometheus 指标包括源和目标 Pod 信息,使你能够在精细级别查明与网络相关的问题。 指标包括流量、丢弃的数据包数、TCP 重置数、L4/L7 数据包流等。此外,还有 DNS 指标(目前仅适用于非 Cilium 数据平面),包括 DNS 错误数和 DNS 请求缺少响应数。
Hubble 流日志:通过流日志可深入了解群集的网络活动。 与 Pod 之间的所有通信都会记录,方便你随时调查连接问题。 流日志有助于回答以下问题:服务器是否收到了客户端的请求? 客户端请求与服务器响应之间的往返延迟是多少?
Hubble CLI:Hubble 命令行接口 (CLI) 可以使用可自定义的筛选和格式检索整个群集中的流日志。
Hubble UI:Hubble UI 是一个用户友好的基于浏览器的界面,用于浏览群集网络活动。 它基于流日志创建服务连接图,并显示所选命名空间的流日志。 用户负责预配和管理运行 Hubble UI 所需的基础结构。
容器网络可观测性的主要优势
CNI 不可知:支持包括 kubenet 在内的所有 Azure CNI 变体。
Cilium 和非 Cilium:在 Cilium 和非 Cilium 数据平面上提供统一、无缝的体验。
基于 eBPF 的网络可观测性:利用 eBPF(扩展后的 Berkeley 数据包筛选器)实现性能和可伸缩性,在影响应用程序性能之前识别潜在的瓶颈和拥塞问题。 深入了解关键网络运行状况指标,包括流量、丢弃的数据包数和连接信息。
深入了解网络活动:了解应用程序如何通过详细的网络流日志相互通信。
简化的指标存储和可视化选项:选择:
- Azure 托管的 Prometheus 和 Grafana:Azure 管理基础结构和维护,从而支持用户专注于配置指标和可视化指标。
- 自带 (BYO) Prometheus 和 Grafan:用户部署和配置自己的实例并管理底层基础结构。
指标
节点级指标
以下指标按节点汇总。 所有指标包括标签:
cluster
instance
(节点名称)
对于 Cilium 数据平面方案,容器网络可观测性提供仅适用于 Linux 的指标,目前不支持 Windows。 Cilium 公开多个指标,包括容器网络可观测性使用的以下指标。
标准名称 | 说明 | 额外标签 | 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 汇总(保留节点信息)。 所有指标包括标签:
cluster
instance
(节点名称)source
或destination
对于传出流量,将有一个具有源 Pod 命名空间/名称的 source
标签。
对于传入流量,将有一个具有目标 Pod 命名空间/名称的 destination
标签。
标准名称 | 说明 | 额外标签 | 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 | 处理的网络流总数(L4/L7 流量) | source 或 destination 、protocol 、verdict 、type 、subtype |
✅ | ❌ |
限制
- Pod 级指标仅在 Linux 上可用。
- 从 Kubernetes 版本 1.29 开始,支持 Cilium 数据平面。
- 指标标签在 Cilium 和非 Cilium 群集之间可能存在细微差异。
- 对于基于 Cilium 的群集,DNS 指标仅适用于在其群集上配置了 Cilium 网络策略 (CNP) 的 pod。
- 目前,流日志在气隙云中不可用。
- 如果其中一个 Hubble 节点代理发生故障,Hubble 中继可能会崩溃,并可能导致 Hubble CLI 中断。
缩放
Azure 托管的 Prometheus 和 Grafana 施加特定于服务的规模限制。 有关详细信息,请参阅在 Azure Monitor 中大规模抓取 Prometheus 指标。
定价
重要
高级容器网络服务将成为付费服务。 有关定价的详细信息,请参阅高级容器网络服务 - 定价。
后续步骤
- 若要创建具有容器网络可观测性的 AKS 群集,请参阅为 Azure Kubernetes 服务 (AKS) 设置容器网络可观测性。