什麼是容器網路可觀察性?
容器網路可觀察性是進階容器網路服務套件的功能。 可讓您利用更高級的監視與診斷工具,大幅提升容器化工作負載的可見度。 這些工具可讓您輕鬆找出網路問題並進行疑難排解,以確保應用程式的最佳效能。
不論基礎數據平面為 Cilium 或非 Cilium,都支援容器網路可觀察性與所有 Linux 工作負載緊密整合,以確保容器網路需求的彈性。
注意
針對 Cilium 數據平面案例,容器網路可觀察性可從 Kubernetes 1.29 版開始取得。 所有 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。 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 CLI 中斷,Hubble 轉播可能會當機。
調整
Azure 受控 Prometheus 和 Grafana 會強制加上服務特定規模限制。 如需詳細資訊,請參閱 在 Azure 監視器中大規模擷取 Prometheus 計量。
定價
重要
進階容器網路服務是付費供應專案。 如需定價的詳細資訊,請參閱 進階容器網路服務 - 定價。
下一步
- 若要建立具有容器網路可檢視性的 AKS 叢集,請參閱設定 Azure Kubernetes Service 的容器網路可檢視性(AKS)。