2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018年7月3日 |
---|---|
0.1.0 | 2018年5月29日 |
#34 in #cloud-native
32KB
601 代码行
概述
cniguru
是一个可以用于故障排除容器网络的工具。它提供了关于 docker 和 kubernetes 容器使用的节点接口的信息
- 容器使用的接口名称、IP、MAC 地址和 MTU
- 关于 veth 对的信息(容器接口的主机/节点端)
- 接口连接到的主机/节点桥接器
许可证
根据您的要求,许可权受以下之一保护:
- Apache 许可证2.0版(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
示例
- 以可读格式列出 Kubernetes pod 的接口
[root@kh1 ~]# KUBECONFIG=/etc/kubernetes/admin.conf kubectl get pod
NAME READY STATUS RESTARTS AGE
netshoot-57c7994b66-zxdsl 1/1 Running 0 2m
serve-hostname-86bc9d96dc-n7n6h 1/1 Running 0 7d
[root@kh1 ~]#
[root@kh1 ~]# cniguru pod netshoot-57c7994b66-zxdsl
CONTAINER_ID PID NODE INTF(C) MAC_ADDRESS(C) IP_ADDRESS(C) INTF(N) BRIDGE(N)
3e08cafbb6eb 26393 kh1 eth0 0a:58:0a:f4:00:de 10.244.0.222/24 veth0c97cb60 cni0
3e08cafbb6eb 26393 kh1 net0 0a:58:0a:08:08:06 10.8.8.6/24 veth74689fd2 br_dc_test
- 以 JSON 格式显示输出
[root@kh1 ~]# cniguru pod netshoot-57c7994b66-zxdsl -o json
[
{
"container": {
"id": "3e08cafbb6eb01558e86ba53f170b62855f0bf5a328a77dc2da278061ff7fdc8",
"pid": 26393,
"node_name": "kh1",
"runtime": "Docker"
},
"interfaces": [
{
"container": {
"name": "eth0",
"ifindex": 3,
"peer_ifindex": 558,
"mtu": 1460,
"mac_address": "0a:58:0a:f4:00:de",
"bridge": null,
"ip_address": "10.244.0.222/24"
},
"node": {
"name": "veth0c97cb60",
"ifindex": 558,
"peer_ifindex": 3,
"mtu": 1460,
"mac_address": "0a:20:94:a0:35:64",
"bridge": "cni0",
"ip_address": null
}
},
{
"container": {
"name": "net0",
"ifindex": 5,
"peer_ifindex": 559,
"mtu": 1500,
"mac_address": "0a:58:0a:08:08:06",
"bridge": null,
"ip_address": "10.8.8.6/24"
},
"node": {
"name": "veth74689fd2",
"ifindex": 559,
"peer_ifindex": 5,
"mtu": 1500,
"mac_address": "d2:ae:0b:9f:62:72",
"bridge": "br_dc_test",
"ip_address": null
}
}
]
}
]
安装
Cargo
如果您已设置 Rust 工具链,则可以通过 cargo 安装 cniguru
cargo install cniguru
从源代码构建
- 请确保您已安装较新的 Rust 编译器。运行
rustup override set stable
rustup update stable
- 克隆源代码
git clone https://github.com/maximih/cniguru
cd cniguru
- 构建
cniguru
cargo build --release
下载 x86_64
二进制文件
提供了静态链接的 Linux x86_64
二进制文件,您可以从这里下载:此处
配置
可以通过 $KUBECONFIG
环境变量设置 Kubernetes 配置的路径。如果未设置 $KUBECONFIG
,则 cniguru
将尝试使用 $HOME/.kube/config
或 /etc/kubernetes/admin.conf
。
使用 docker
命令行工具获取与 Docker 相关的信息,因此必须以具有执行 docker 命令权限的用户身份运行 cniguru
。
未来计划
可能在未来添加的一些功能
- 作为 Kubernetes
daemonset
(服务器端)运行cniguru
并通过 REST API(客户端)访问它 - 添加在多个接口和多个节点上跟踪数据包的可能性
- 添加启用数据包记录的可能性
依赖项
~24–36MB
~643K SLoC