在ACKTerway叢集中部署CiliumHubble可以將容器網路流量、網路原則進行可視化展示,從而實現網路架構、業務拓撲關係的可觀測性。本文介紹如何使用CiliumHubble查看容器網路中網路流量的來源、目的地等資料,實現網路可觀測性。
前提條件
Cilium Hubble當前僅支援基於IPvlan的Terway ENI多IP網路模式。因此建立叢集時必須設定網路外掛程式為Terway,Terway模式為IPvlan,不然無法使用Cilium Hubble。
步驟一:設定Terway的設定檔eni-config
控制台方式
編輯Terway的設定檔eni-config。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在配置項頁面頂部設定命名空間為kube-system,單擊eni-config操作列下的YAML編輯。
在查看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效能產生一定影響。
重啟Terway容器組,使其設定檔生效。
在左側導覽列,選擇。
在容器組頁面頂部設定命名空間為kube-system,在搜尋方塊中搜尋terway-eniip,單擊terway-eniip-xxx操作列下的。
在彈出的對話方塊中單擊確定。
在容器組頁面terway-eniip-xxx狀態列顯示Running,說明重啟容器組成功。
重複執行以上步驟,刪除所有Terway容器組。
kubectl方式
編輯Terway的設定檔eni-config。
執行以下命令,編輯Terway的設定檔。
kubectl -n kube-system edit configmap eni-config將以下內容複寫到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效能產生一定影響。
重啟Terway容器組,使其設定檔生效。
kubectl rollout restart daemonset -n kube-system terway-eniip
步驟二:安裝Cilium Hubble
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在Helm頁面,單擊建立。參考如下資訊完成基本資料配置。
參數
樣本值
應用程式名稱
ack-terway-hubble
命名空間
kube-system
來源
預設為應用市場。
Chart
應用情境:選擇全部。
支援架構:選擇amd64。
搜尋方塊:搜尋ack-terway-hubble。
選中ack-terway-hubble,單擊下一步。
在參數配置頁面,選擇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報文 |