在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报文 |