Kubeshark 监控 Kubernetes 集群内流量

Kubeshark 是 Kubernetes 的 API 流量分析器,提供对 Kubernetes 内部网络的实时协议级可见性,捕获、剖析和监控进出容器、Pod 和集群的所有流量和有效负载。

image.png
安装

sh  .kubeshark/config.yaml

如果您没有足够的权限,并且想要监视 ns 生产中的特定 Pod:

kubeshark tap nom-du-pod --set selfnamespace=production

监控指定命名空间中的所有 Pod 并且暴露地址

kubeshark tap -n default --proxy-host 0.0.0.0

Kubeshark 部署在我们的集群中:

image.png

在我们的集群中启动 Kubeshark 部署

Kubeshark 将创建以下 Pod 和服务:

image.png
Kubeshark 的仪表板

Kubeshark 部署完成后,查看kubeshark-front登录地址

2023-08-21T10:37:09+08:00 INF tapRunner.go:263 > Added: pod=kubeshark-front
2023-08-21T10:37:41+08:00 INF proxy.go:30 > Starting proxy... namespace=default service=kubeshark-hub src-port=8898
2023-08-21T10:37:41+08:00 INF tapRunner.go:445 > Hub is available at: url=http://0.0.0.0:8898
2023-08-21T10:37:41+08:00 INF proxy.go:30 > Starting proxy... namespace=default service=kubeshark-fron

image.png

监控指定pod的网络

kubeshark tap "(whoami.*)" --proxy-host 0.0.0.0

image.png

暴露nodePort

kubectl expose deployment whoami  --name=whoaminode --target-port=80 --type=NodePort

集群外访问

image.png

image.png

10.244.234.128 这个IP是tunl0 是一个虚拟网络接口,通常用于创建隧道连接以支持容器和虚拟机之间的跨节点通信。tunl0 接口被用作隧道的一端,通过它可以在不同节点之间传递封装后的数据包,从而实现网络通信和互连 可以看到这个10.244.234.128 直接转发到pod的网络了,也可以看见具体http包里面东西

Service Map 可以看具体包大小响应时间还有具体的流量走势图

image.png

删除 Kubeshark 部署

完成调试后,命令删除 Kubeshark 部署的资源

kubeshark clean 

结语

KubeShark 是一个开源工具,它提供了方便的安装过程并且易于使用。其主要功能是分析和过滤在 Kubernetes 集群中传输的网络流量。通过 KubeShark,您可以专注于特定命名空间内的网络流量,从而便于调试和分析您的应用程序

上一篇 【Java设计模式005代理模式
下一篇 利用TrieTree实现功能灰度的新思路