什麼是進階網路可檢視性?

進階網路可檢視性是進階容器網路服務套件的首次推出功能。 可讓您利用更高級的監視與診斷工具,大幅提升容器化工作負載的可見度。 這些工具可讓您輕鬆找出網路問題並進行疑難排解,以確保應用程式的最佳效能。

不論基礎資料平面為 Cilium 或非 Cilium (都支援),進階網路可檢視性與所有 Linux 工作負載相容並緊密整合,以確保容器網路需求的彈性。

進階網路可檢視性的圖表。

注意

針對 Cilium 資料平面案例,進階網路可檢視性從 Kubernetes 1.29 版開始可供使用。 針對非 Cilium 資料平面案例,所有 Linux 散發套件都支援進階網路可檢視性,包括從 2.0 版開始的 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 無關:支援所有 Azure CNI 變體,包括 kubenet。

  • Cilium 和非 Cilium:在 Cilium 和非 Cilium 資料平面上提供統一、順暢的體驗。

  • eBPF 型網路可檢視性:針對效能和可擴縮性利用 eBPF (擴充 Berkeley 封包篩選),在潛在瓶頸和壅塞問題影響應用程式效能之前找出這些問題。 深入了解重要的網路健康情況指標,包括流量、捨棄的封包和連線資訊。

  • 網路活動的深入可見度:透過詳細網路流量記錄了解您的應用程式如何彼此通訊。

  • 簡化計量儲存體和視覺效果選項:在以下選項之間選擇:

    • Azure 受控 Prometheus 和 Grafana:Azure 會管理基礎結構和維護,讓使用者專注於設定計量和視覺化計量。
    • 自備 (BYO) Prometheus 和 Grafana:使用者部署和設定自己的執行個體,以及管理基礎結構。

計量

節點層級計量

每個節點會彙總下列計量。 所有計量都包含標籤:

  • cluster
  • instance (節點名稱)

針對非 Cilium 資料平面案例,進階網路可檢視性可為 Linux 和 Windows 作業系統提供計量。 下表概述所產生的不同計量。

標準名稱 描述 額外的標籤 Linux Windows
networkobservability_forward_count 轉接封包計數總計 direction
networkobservability_forward_bytes 轉接位元組計數總計 direction
networkobservability_drop_count 捨棄的封包計數總計 direction, reason
networkobservability_drop_bytes 捨棄的位元組計數總計 direction, reason
networkobservability_tcp_state 依 TCP 狀態的 TCP 目前作用中通訊端計數。 state
networkobservability_tcp_connection_remote 依遠端 IP/連接埠的 TCP 目前作用中通訊端計數。 address (IP),port
networkobservability_tcp_connection_stats TCP 連線統計資料。 (例如:延遲的 ACK、TCPKeepAlive、TCPSackFailures) 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 監視器中大規模抓取 Prometheus 計量

下一步