在ACKTerway集群中部署CiliumHubble可以將容器網絡流量、網絡策略進行可視化展示,從而實現網絡架構、業務拓撲關系的可觀測性。本文介紹如何使用CiliumHubble查看容器網絡中網絡流量的來源、目的地等數據,實現網絡可觀測性。
前提條件
Cilium Hubble當前僅支持基于IPvlan的Terway ENI多IP網絡模式。因此創建集群時必須設置網絡插件為Terway,Terway模式為IPvlan,不然無法使用Cilium Hubble。
步驟一:設置Terway的配置文件eni-config
控制臺方式
登錄容器服務管理控制臺。
在控制臺左側導航欄,單擊集群。
在集群列表頁面,單擊目標集群名稱或者目標集群右側操作列下的詳情。
編輯Terway的配置文件eni-config。
在集群管理頁左側導航欄,選擇 。
在配置項頁面頂部設置命名空間為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
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在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報文 |