Kubeshark 是 Kubernetes 的 API 流量分析器,提供对 Kubernetes 内部网络的实时协议级可见性,捕获、剖析和监控进出容器、Pod 和集群的所有流量和有效负载。
安装
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 部署在我们的集群中:
在我们的集群中启动 Kubeshark 部署
Kubeshark 将创建以下 Pod 和服务:
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
监控指定pod的网络
kubeshark tap "(whoami.*)" --proxy-host 0.0.0.0
暴露nodePort
kubectl expose deployment whoami --name=whoaminode --target-port=80 --type=NodePort
集群外访问
10.244.234.128 这个IP是tunl0
是一个虚拟网络接口,通常用于创建隧道连接以支持容器和虚拟机之间的跨节点通信。tunl0
接口被用作隧道的一端,通过它可以在不同节点之间传递封装后的数据包,从而实现网络通信和互连 可以看到这个10.244.234.128 直接转发到pod的网络了,也可以看见具体http包里面东西
Service Map 可以看具体包大小响应时间还有具体的流量走势图
删除 Kubeshark 部署
完成调试后,命令删除 Kubeshark 部署的资源
kubeshark clean
结语
KubeShark 是一个开源工具,它提供了方便的安装过程并且易于使用。其主要功能是分析和过滤在 Kubernetes 集群中传输的网络流量。通过 KubeShark,您可以专注于特定命名空间内的网络流量,从而便于调试和分析您的应用程序