全部產品
Search
文件中心

Container Service for Kubernetes:使用ACKTerway和CiliumHubble實現網路可觀測性

更新時間:Apr 09, 2025

在ACKTerway叢集中部署CiliumHubble可以將容器網路流量、網路原則進行可視化展示,從而實現網路架構、業務拓撲關係的可觀測性。本文介紹如何使用CiliumHubble查看容器網路中網路流量的來源、目的地等資料,實現網路可觀測性。

前提條件

建立ACK託管叢集

說明

Cilium Hubble當前僅支援基於IPvlan的Terway ENI多IP網路模式。因此建立叢集時必須設定網路外掛程式TerwayTerway模式IPvlan,不然無法使用Cilium Hubble。

步驟一:設定Terway的設定檔eni-config

控制台方式

  1. 編輯Terway的設定檔eni-config。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 配置項

    3. 配置項頁面頂部設定命名空間為kube-system,單擊eni-config操作列下的YAML編輯

    4. 查看YAML面板找到10-terway.conf,在10-terway.conf下添加以下參數,然後單擊確定

      "cilium_enable_hubble": "true",
      "cilium_hubble_listen_address": ":4244",
      "cilium_hubble_metrics_server": ":9091",
      "cilium_hubble_metrics": "drop,tcp,flow,port-distribution,icmp",

      參數

      描述

      備忘

      eniip_virtual_type

      是否開啟IPvlan模式。

      如果設定檔中此項不存在或不為IPVLAN,則您的叢集不支援Cilium Hubble。

      cilium_enable_hubble

      啟用Hubble網路流量分析。

      本文設定為"true"

      cilium_hubble_listen_address

      Hubble網路流量資訊暴露地址。

      本文設定為":4244"

      cilium_hubble_metrics_server

      Hubble Metrics暴露的地址。

      本文設定為":9091"

      cilium_hubble_metrics

      Hubble需要採集的Metrics,以半形逗號(,)分割。

      目前不支援DNS、HTTP這類L7的能力。Hubble支援採集的Metrics全量列表為"drop,tcp,flow,port-distribution,icmp"

      說明

      如果您啟用Metrics數量比較多,則會對Hubble效能產生一定影響。

  2. 重啟Terway容器組,使其設定檔生效。

    1. 在左側導覽列,選擇工作負載 > 容器組

    2. 容器組頁面頂部設定命名空間為kube-system,在搜尋方塊中搜尋terway-eniip,單擊terway-eniip-xxx操作列下的更多 > 刪除

    3. 在彈出的對話方塊中單擊確定

      容器組頁面terway-eniip-xxx狀態列顯示Running,說明重啟容器組成功。

    4. 重複執行以上步驟,刪除所有Terway容器組。

kubectl方式

  1. 編輯Terway的設定檔eni-config。

    1. 執行以下命令,編輯Terway的設定檔。

      kubectl -n kube-system edit configmap eni-config
    2. 將以下內容複寫到Terway的設定檔中,在10-terway.conf下添加以下參數,然後儲存並退出。

      "cilium_enable_hubble": "true",
      "cilium_hubble_listen_address": ":4244",
      "cilium_hubble_metrics_server": ":9091",
      "cilium_hubble_metrics": "drop,tcp,flow,port-distribution,icmp",

      參數

      描述

      備忘

      eniip_virtual_type

      是否開啟IPVLAN模式。

      如果設定檔中此項不存在或不為IPVLAN,則您的叢集不支援Cilium Hubble。

      cilium_enable_hubble

      啟用Hubble網路流量分析。

      本文設定為"true"

      cilium_hubble_listen_address

      Hubble網路流量資訊暴露地址。

      本文設定為":4244"

      cilium_hubble_metrics_server

      Hubble Metrics暴露的地址。

      本文設定為":9091"

      cilium_hubble_metrics

      Hubble需要採集的Metrics,以半形逗號(,)分割。

      目前不支援DNS、HTTP這類L7的能力。Hubble支援採集的Metrics全量列表為"drop,tcp,flow,port-distribution,icmp"

      說明

      如果您啟用Metrics數量比較多,則會對Hubble效能產生一定影響。

  2. 重啟Terway容器組,使其設定檔生效。

    kubectl rollout restart daemonset -n kube-system terway-eniip

步驟二:安裝Cilium Hubble

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  3. Helm頁面,單擊建立。參考如下資訊完成基本資料配置。

    參數

    樣本值

    應用程式名稱

    ack-terway-hubble

    命名空間

    kube-system

    來源

    預設為應用市場

    Chart

    • 應用情境:選擇全部

    • 支援架構:選擇amd64

    • 搜尋方塊:搜尋ack-terway-hubble

    選中ack-terway-hubble,單擊下一步

  4. 參數配置頁面,選擇Chart版本然後在參數地區的ingress參數下設定hosts,用於後續訪問Hubble UI的介面,其他參數請根據實際情況設定。然後單擊確定

    說明

    以下參數均需要在ingress參數下配置。

    參數

    描述

    enabled

    是否開啟Hubble-UI的Ingress訪問。

    annotations

    自訂Ingress Annotations。

    path

    自訂Ingress根路徑。

    hosts

    自訂Ingress Hosts。

    tls

    自訂Ingress TLS配置。

步驟三:使用Cilium Hubble

如果您在Cilium Hubble中配置了Ingress網域名稱hosts,您可以通過該網域名稱的80連接埠訪問Hubble UI的介面。訪問該網域名稱,您可以在介面上看到以下資訊:

說明

如果您使用了非權威解析的網域名稱,例如ingress.local,您需要執行kubectl -n kube-system get svc nginx-ingress-lb命令,查看Hubble UI的IP地址,然後在本地hosts進行綁定,將ingress.local指向Ingress Hubble UI的IP地址。

  • 在頁面上半部分,您可以查看容器叢集中各個命名空間中容器組與服務互訪的拓撲結構。

  • 在頁面下半部分,您可以查看當前容器網路中網路流量的來源、目的地、連接埠資訊以及轉寄狀態。

  • 如果您設定了網路原則,您可以查看哪些流量被網路原則丟棄。

可觀測

Cilium Hubble可以通過kube-system命名空間下hubble-metrics服務暴露一系列網路流量的指標,具體暴露的指標由eni-config中 cilium_hubble_metrics欄位進行控制。您可以使用Prometheus和阿里雲Prometheus採集Metrics資料。具體操作,請參見開源Prometheus監控使用阿里雲Prometheus監控

說明

更多Cilium Hubble暴露的指標,請參見hubble-exported-metrics

指標大類

指標名

指標欄位

說明

drop

hubble_drop_total

reason,protocol

丟棄報文

tcp

hubble_tcp_flags_total

flag,family

TCP標記

flow

hubble_flows_processed_total

type,subtype,verdict

網路流

port-distribution

hubble_port_distribution_total

protocol,port

目的連接埠報文分布

icmp

hubble_icmp_total

family,type

ICMP報文