你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是高级网络可观测性?

高级网络可观测性是高级容器网络服务套件的首个功能。 它为你配备了更高级别的监视和诊断工具,为容器化工作负载提供无与伦比的可见性。 借助这些工具,可以轻松地查明和解决网络问题,确保应用程序实现最佳性能。

高级网络可观察性与所有 Linux 工作负载兼容,并与 Hubble 无缝集成,无论底层数据平面是 Cilium 还是非 Cilium(均受支持),确保灵活满足容器网络需求。

高级网络可观测性的示意图。

注意

对于 Cilium 数据平面方案,从 Kubernetes 版本 1.29 开始支持高级网络可观测性功能。 对于非 Cilium 数据平面方案,从版本 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 操作系统的指标。 下表概述了生成的不同指标。

标准名称 说明 额外标签 Linux Windows
networkobservability_forward_count 总转发数据包计数 direction
networkobservability_forward_bytes 总转发字节计数 direction
networkobservability_drop_count 总丢弃数据包计数 directionreason
networkobservability_drop_bytes 总删除字节计数 directionreason
networkobservability_tcp_state TCP 当前活动套接字计数(按 TCP 状态)。 state
networkobservability_tcp_connection_remote TCP 当前活动套接字计数(按远程 IP/端口)。 address (IP)、port
networkobservability_tcp_connection_stats TCP 连接统计信息。 (例如:Delayed ACK、TCPKeepAlive、TCPSackFailure) statistic
networkobservability_tcp_flag_counters TCP 数据包计数(按标志)。 flag
networkobservability_ip_connection_stats IP 连接统计信息。 statistic
networkobservability_udp_connection_stats UDP 连接统计信息。 statistic
networkobservability_udp_active_sockets UDP 当前活动套接字计数
networkobservability_interface_stats 接口统计信息。 InterfaceName、statistic

Pod 级指标(Hubble 指标)

以下指标按 Pod 汇总(保留节点信息)。 所有指标包括标签:

  • cluster
  • instance(节点名称)
  • sourcedestination

对于传出流量,将有一个具有源 Pod 命名空间/名称的 source 标签。 对于传入流量,将有一个具有目标 Pod 命名空间/名称的 destination 标签

标准名称 说明 额外标签 Linux Windows
hubble_dns_queries_total DNS 请求总数(按查询) sourcedestinationqueryqtypes(查询类型)
hubble_dns_responses_total DNS 响应总数(按查询/响应) sourcedestinationqueryqtypes(查询类型)、rcode(返回代码)、ips_returned(IP 数)
hubble_drop_total 总丢弃数据包计数 sourcedestinationprotocolreason
hubble_tcp_flags_total TCP 数据包总数(按标志)。 sourcedestinationflag
hubble_flows_processed_total 处理的网络流总数(L4/L7 流量) sourcedestinationprotocolverdicttypesubtype

限制

  • Pod 级指标仅在 Linux 上可用。
  • 从 Kubernetes 版本 1.29 开始,支持 Cilium 数据平面。
  • 指标标签在 Cilium 和非 Cilium 群集之间可能存在细微差异。
  • Cilium 数据平面目前不支持 DNS 指标。

缩放

Azure 托管的 Prometheus 和 Grafana 施加特定于服务的规模限制。 有关详细信息,请参阅在 Azure Monitor 中大规模抓取 Prometheus 指标

后续步骤