Kubernetes 叢集中的每個 pod、服務和節點都在不斷產生網路活動:連線開啟、封包被轉發或丟棄、DNS 查詢解析或失敗。 了解活動對於除錯、容量規劃及維護服務健康至關重要。 但大多數監控設備在兩個方面都不足:
- 視野不夠。 節點層級的聚合會告訴你有問題,但不會告訴 你哪裡有問題。 若沒有包含來源與目的地上下文的 Pod 層級細分,要隔離失敗的工作負載就只能靠猜測。
- 大規模資料太多了。 一個運行數百個微服務的叢集,每個節點可產生數千個指標時間序列。 收集所有東西會增加儲存成本,並拖慢儀表板速度。
容器網路指標Advanced Container Networking Services for Azure Kubernetes Service (AKS) 同時處理兩者。 此功能在 Linux 與 Windows 支援的 Cilium 與非 Cilium 資料平面上,收集節點層級與 pod 層級的網路指標。
在 Cilium 叢集上,你可以更進一步使用來源層級篩選,讓你能精確選擇在資料離開節點 前 收集哪些命名空間、工作負載和指標類型。
容器指標過濾是觀察性數據的預先輸入控制。 你不必收集所有可用的指標,然後在儀表板或查詢中篩選,而是在來源端定義要收集什麼。 這會保留您關注的工作負載高價值計量,並避免擷取低價值或吵雜的時間序列。
結果是:在任何支援的資料平面上可操作的網路可觀測性,並可選擇性地在 Cilium 上進行具成本效益的過濾。
容器網路指標提供深入的工作負載層級可視性,方便故障排除與規劃,而 Cilium 的來源層級過濾則有助於將可觀察性成本與業務關鍵工作負載成正比。
收集與篩選概覽
請使用此表格快速了解哪些地方可廣泛收集,哪些地方可進行細緻過濾:
| 能力 | Cilium 叢集 | 非 Cilium 簇群 |
|---|---|---|
| 節點層級的度量收集 | ✅ | ✅ |
| Pod 層級計量收集 | ✅ (Linux) | ✅ (Linux) |
| 依命名空間、莢果標籤及指標類型進行來源層級篩選 | ✅ | ❌ |
| 透過預先攝取過濾控制成本 | ✅ | ❌ |
Important
自 2025 年 11 月 30 日起,Azure Kubernetes Service(AKS)不再支援或提供 Azure Linux 2.0 的安全更新。 Azure Linux 2.0 節點映像已凍結在202512.06.0發行版本。 自 2026 年 10 月 31 日起,節點映像將被移除,且你將無法擴展你的節點池。 透過 升級節點池 至支援的 Kubernetes 版本或遷移至 osSku AzureLinux3,遷移到支援的 Azure Linux 版本。 更多資訊請參閱 退休 GitHub 議題 及 Azure 更新退休公告。 想隨時掌握公告與更新,請參考 AKS 發布公告。
主要優點
節點和 Pod 層級細微性。 追蹤節點層級的流量量、掉率及連線狀態,以維護基礎設施健康狀況。 使用來源和目的地標籤向下切入至個別 Pod,以精確找出造成問題的工作負載。
更快的故障排除。 當服務開始丟棄封包或 DNS 查詢失敗時,Pod 層級的指標能讓你在幾秒內將問題隔離到特定 pod、命名空間或協定,而非數小時。
靈活的視覺化。 將指標儲存在 Azure Managed Prometheus,並在 Azure 受控 Grafana(完全管理)中視覺化,或是自備 Prometheus 和 Grafana 基礎設施。
設計上可擴展。 該管線可處理擁有數百個節點與數千個 Pod 的大型動態叢集,無需你在全面覆蓋與可管理的資料量間做選擇。
目標可觀察性(Cilium 集群)。 在 Cilium 叢集中,來源層級過濾允許你定義你關心的命名空間、莢果標籤或度量類型,並只收集這些。 收集後不需修剪。
降低指標匯聚成本(Cilium 叢集)。 由於過濾是在每個節點的來源進行,不需要的指標時間序列不會被抓取、傳輸或匯入你的 Prometheus 後端。 你只為真正需要的指標付費。 在大型叢集中,若集合未經過濾,則每個節點可能會生成數千個時間序列。採用資料來源層面的過濾能大幅降低 Azure Managed Prometheus 的資料擷取與儲存成本。
運作原理
每個節點的代理堆疊依資料平面而定,如圖所示。
Linux Cilium 節點 使用分層 eBPF 堆疊:eBPF 核心鉤子捕捉原始流量資料,並由 Cilium 處理,Hubble 則以 Prometheus 格式的度量形式公開。 由於哈伯位於節點與抓取端點之間,來源層級的過濾就在這個層執行——你可以選擇在資料離開節點前匯出哪些命名空間、莢艙標籤和度量類型。
Linux 非 Cilium 節點會使用 eBPF 核心掛鉤,將資料饋送至 Microsoft Retina,並在其上方使用 Hubble 層進行流量檢查。 Microsoft Retina 負責指標收集,並以 Prometheus 格式匯出節點層級及 pod 層級的指標。
所有路徑的指標都會以 Prometheus 格式擷取,並匯入 Azure Managed Prometheus 或你自己的 Prometheus 後端,然後在 Azure 受控 Grafana 或你自己的 Grafana 堆疊中視覺化。
要開始, 先設定容器網路指標,然後為 Cilium 叢集設定容器網路指標過濾 功能。
何時使用容器網路指標
容器網路指標是為需要聚焦且可操作網路資料而非原始遙測的團隊設計的。 常見情況包括:
- 偵錯特定工作負載。 利用 Pod 層級的指標來隔離特定服務的封包丟包、TCP 重置或 DNS 失敗。 在 Cilium 叢集上,過濾可以將集合範圍縮小到該命名空間或容器標籤,從而降低整個叢集的雜訊。
- 監控多租戶叢集。 依命名空間追蹤網路健康狀況,讓每個團隊都能看到自己的流量模式。 在 Cilium 叢集中,範圍過濾作用將收集限制于租戶特定的命名空間。
- 容量規劃。 追蹤每個節點的轉發與丟棄位元組數,以識別飽和連結或工作負載不平衡。
- DNS 健康監控。 揭露 DNS 查詢失敗和解析速度緩慢,以便在問題擴散成應用程式錯誤前及時發現。
- 大規模降低可觀察性成本。 在大型叢集中,未經過濾的集合可為每個節點產生數千個時間序列。 在 Cilium 叢集中,來源層級過濾會在擷取前移除不需要的序列,確保成本與你選擇的工作負載和指標類型保持一致。
如何選擇要收集的內容 (Cilium 叢集)
使用此推廣模型來平衡可見性與成本:
- 在非生產命名空間中,先廣泛地收集以建立基準。
- 保存封包丟包、DNS 和 TCP 狀態度量,用於監控關鍵命名空間。
- 高基數流量指標僅適用於業務關鍵工作負載。
- 每週檢視普羅米修斯的資料導入趨勢並調整過濾器。
此方法有助於你保留高價值指標,同時控制時間序列成長與數據擷取成本。
在你查看指標表之前
請記住以下幾點:
- 節點層級的指標可在支援的 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 資訊,因此你可以在個別工作負載層級精確找出網路問題。 這些指標涵蓋流量量、遺失封包、TCP 重設以及第 4 層/第 7 層的流量。
DNS 指標(查詢次數、回應碼與錯誤)預設在非 Cilium 資料平面上收集。 在 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 |
✅ | ❌ |
Limitations
平台與資料平面:
- Pod 層級計量僅適用於 Linux。
- 從 Kubernetes 1.29 版開始,支援 Cilium 資料平面。
- 來源層級的指標過濾僅在 Cilium 叢集上提供。
- 計量標籤在 Cilium 和非 Cilium 叢集之間有細微的差異。
DNS 指標:
- 在 Cilium 叢集上,DNS 指標需要 Cilium FQDN 網路政策,或者你可以使用 Hubble CLI 進行即時 DNS 故障排除。
已知問題:
- 如果哈伯節點代理程式當機,哈伯中繼可能會當機,這可能會中斷哈伯的CLI會話。
FIPS 支援 (僅限非 Cilium 資料平面):
- 由於核心限制,Ubuntu 20.04 節點無法使用 FIPS。 改用 Azure Linux 或 Ubuntu 22.04 節點池吧。 此限制不適用於席利姆資料位面。
| 作業系統 | FIPS 支援 |
|---|---|
| Azure Linux 3.0 | Yes |
| Azure Linux 2.0 | Yes |
| Ubuntu 20.04 | No |
| Ubuntu 22.04 版本 | Yes |
規模:
- Azure 監視器和 Azure 受控 Grafana 中 適用於 Prometheus 的受管理服務會施加服務特定的規模限制。 如需詳細資訊,請參閱在 Azure 監視器中大規模擷取 Prometheus 計量。
Pricing
Important
進階容器網路服務是一項付費供應項目。
如需定價的詳細資訊,請參閱 進階容器網路服務 - 定價。
相關內容
- 設定容器網路度量
- 配置容器網路指標過濾
- AKS 進階容器網路服務
- 先進容器網路服務中的容器網路可觀察性
- 先進容器網路服務中的容器網路安全