【kubernetes】ksniff网络抓包

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

这里写自定义目录标题

背景

在基于kubernetes的微服务网络中查找网络问题是一件十分麻烦的事情。因为容器专注于运行业务一般不会安装其他诸如网络排查的工具而容器的权限也可能限制对网卡的访问。但在排查问题的过程中在微服务间进行网络抓包都是非常有帮助的。

ksniff 是一个kubectl插件 它通过向pod中上传一个静态编译的tcpdump二进制文件运行并抓取pod中所有的网络流量并重定向到我们本地安装的wireshark中展示出来。 这让我们获得了微服务抓包的丝滑体验。

使用前提

wireshark

本地必须安装wireshark, 确保wireshark命令在系统路径下。

krew

安装krew, 这是一个kubectl插件管理工具, 安装说明

使用示例

运行命令抓取容器的网络流量

➜  kubectl sniff -n cattle-system  rancher-6c4b4f9c84-6xjn4
INFO[0000] using tcpdump path at: '/Users/xianyao.chen/.krew/store/sniff/v1.6.2/static-tcpdump'
INFO[0001] no container specified, taking first container we found in pod.
INFO[0001] selected container: 'rancher'
INFO[0001] sniffing method: upload static tcpdump
INFO[0001] sniffing on pod: 'rancher-6c4b4f9c84-6xjn4' [namespace: 'cattle-system', container: 'rancher', filter: '', interface: 'any']
INFO[0001] uploading static tcpdump binary from: '/Users/xianyao.chen/.krew/store/sniff/v1.6.2/static-tcpdump' to: '/tmp/static-tcpdump'
INFO[0001] uploading file: '/Users/xianyao.chen/.krew/store/sniff/v1.6.2/static-tcpdump' to '/tmp/static-tcpdump' on container: 'rancher'
INFO[0001] executing command: '[/bin/sh -c test -f /tmp/static-tcpdump]' on container: 'rancher', pod: 'rancher-6c4b4f9c84-6xjn4', namespace: 'cattle-system'
INFO[0003] command: '[/bin/sh -c test -f /tmp/static-tcpdump]' executing successfully exitCode: '0', stdErr :''
INFO[0003] file found: ''
INFO[0003] file was already found on remote pod
INFO[0003] tcpdump uploaded successfully
INFO[0003] spawning wireshark!
INFO[0003] start sniffing on remote container
INFO[0003] executing command: '[/tmp/static-tcpdump -i any -U -w - ]' on container: 'rancher', pod: 'rancher-6c4b4f9c84-6xjn4', namespace: 'cattle-system'

在wireshark中查看
在这里插入图片描述

其他使用方式

也可以使用命令行的tshark或其他方式来查看抓包结果 参见github文档

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s