English | 简体中文
KubeSkoop是一个Kubernetes网络诊断工具。针对不同的网络插件和IaaS提供商自动构建Kubernetes集群中Pod的网络访问图,结合eBPF对内核关键路径的深度监控和分析,来分析常见的Kubernetes集群网络问题。显著地简化了Kubernetes网络问题的诊断难度。
-
诊断kubernetes集群中各种网络访问方式和链路:Pod,Service,Node以及Ingress/Egress Traffic.
-
覆盖完整的Linux协议栈的配置错误场景: Socket,Bridge,Veth,Netfilter,sysctls…
-
支持诊断多种云供应商的IaaS层网络错误配置
-
通过eBPF实现无侵入的Kernel Monitor
-
通过BTF在各种版本的Kernel上直接运行
-
通过标准的Prometheus接口暴露深度监控Metrics
- 数十种网络异常场景的自动分析识别
- 通过Web Console或Grafana Loki展示网络异常事件
- 集成KubeSkoop所有能力,提供网络诊断、异常事件监控、抓包、延迟探测等功能。
完整的文档可以直接访问KubeSkoop.io 。
你可以通过skoopbundle.yaml文件快速部署KubeSkoop、Prometheus、Grafana和Loki至你的集群。
kubectl apply -f https://raw.githubusercontent.com/alibaba/kubeskoop/main/deploy/skoopbundle.yaml
备注: skoopbundle.yaml以最小副本和默认配置启动,不适用于生产环境
在安装完成并启动后,你可以通过webconsole
服务来访问KubeSkoop Web控制台。
kubectl get svc -n kubeskoop webconsole
你可能需要使用NodePort
或LoadBalancer
类型的服务从集群外访问。
控制台的默认用户为admin
,密码为kubeskoop
。
可以通过Web控制台对集群内网络发起连通性诊断。
在Diagnosis - Connectivity Diagnosis下输入诊断的源地址、目的地址、端口和协议,点击Diagnose
发起诊断。诊断完成后,可以在列表中看到诊断结果。
你可以在Diagnosis - Packet Capturing中进行集群内Node/Pod的抓包操作。
在Diagnosis - Latency Detection中,对集群内多个Node/Pod之间的网络延迟进行探测。
在Monitoring - Dashboard中,可以查看当前集群内网络大盘,从大盘中可查询对应性能问题时间点的各深度指标的水位情况。
在Monitoring - Event下,可以看到当前时间点集群内产生的异常事件。你也可以手动选择需要的时间范围,或者根据事件类型、节点、事件产生的Pod命名空间/名称等信息进行筛选。
点击右上角的Live
,可以实时根据当前筛选条件,实时监控集群内事件。
在主页或Monitoring - Network Graph中,可以看到当前集群内的网络实际链路图,并通过时间、命名空间进行筛选。你也可以将模式改为Table
按条查看连接信息。
欢迎提交issue和PR来共建此项目。
- 钉钉群号 (26720020148)
KubeSkoop的多数用户态代码使用Apache License, Version 2.0。 /bpf
目录下的BPF代码使用GPL v2.0。
如果您发现了代码中的安全漏洞,请联系[email protected]。详见 SECURITY.md