eBPF Cilium实战(2) - 底层网络可观测性

网友投稿 262 2022-09-28

eBPF Cilium实战(2) - 底层网络可观测性

在之前的平台中,对于组件之间的网络流向不具备直接的可观测性,用户组件间通信出现问题,只能通过传统命令行工具进行手动排查,而 cilium 的 Hubble 服务可以提供 UI 界面向用户展示实时的流量状态,同时可以将这些指标暴露给 Prometheus 进行聚合整理,让用户可以更直观的对底层网络状态进行观测监控。

开启 Hubble UI 服务

cilium 的网络可观测性由 Hubble 服务提供,在安装 cilium 时,默认不会安装 Hubble ,可以通过以下命令开启 Hubble 服务

helm upgrade cilium cilium/cilium --version 1.11.2 \ --namespace kube-system \ --reuse-values \ --set hubble.relay.enabled=true \ --set hubble.ui.enabled=true

部署完成后,可以通过以下命令确定状态

$ kubectl get po -n kube-system |grep hubble hubble-relay-65ff5f9bf6-247pt 1/1 Running 0 5d19h hubble-ui-5f7cdc86c7-gq5hs 3/3 Running 0 5d19h $ kubectl get svc -n kube-system | grep hubble hubble-relay ClusterIP 10.43.73.95 80/TCP 5d19h hubble-ui ClusterIP 10.43.20.190 80/TCP 5d19h

Hubble 部署完成后,集群外部还无法直接访问,可以通过以下方式开启对外访问

Hubble UI 展示信息

访问主页面

进入需要查看的名称空间,页面中部展示当前的流量拓扑,下部展示流量记录

选择流量记录展示的信息列

选择展示的流量类型

选择展示时是否忽略特殊类型流量

对接 Prometheus 和 Grafana

cilium 提供了部署 Prometheus 和 Grafana 的 yaml 文件,其中包含了 Grafana 的模板文件,但 cilium 默认安装的情况下没有开放监控指标,所以需要先开启监控指标后再部署 Prometheus 和 Grafana

开启监控指标

helm upgrade cilium cilium/cilium --version 1.11.2 \ --namespace kube-system \ --reuse-values \ --set prometheus.enabled=true \ --set operator.prometheus.enabled=true \ --set hubble.enabled=true \ --set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,icmp, Prometheus 和 Grafana

$ kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/1.11.2/examples/kubernetes/addons/prometheus/monitoring-example.yaml namespace/cilium-monitoring created serviceaccount/prometheus-k8s created configmap/grafana-config created configmap/grafana-cilium-dashboard created configmap/grafana-cilium-operator-dashboard created configmap/grafana-hubble-dashboard created configmap/prometheus created clusterrole.rbac.authorization.k8s.io/prometheus unchanged clusterrolebinding.rbac.authorization.k8s.io/prometheus unchanged service/grafana created service/prometheus created deployment.apps/grafana created deployment.apps/prometheus created

确认运行状态

$ kubectl get po -n cilium-monitoring NAME READY STATUS RESTARTS AGE grafana-d69c97b9b-5ztrj 1/1 Running 0 5d20h prometheus-655fb888d7-456n4 1/1 Running 0 5d20h $ kubectl get svc -n cilium-monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE grafana ClusterIP 10.43.230.15 3000/TCP 5d20h prometheus ClusterIP 10.43.219.180 9090/TCP 5d20h

开启对外访问

Grafana 展示信息

Cilium Metrics

Cilium Operator

Hubble

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在Rainbond上部署高可用Apollo集群
下一篇:java 线程池存在的意义
相关文章

 发表评论

暂时没有评论,来抢沙发吧~