K8S Pod 抓包快速定位网络问题

发布于:2024-10-24 编辑:匿名 来源:网络

前言 在使用 Kubernetes 时,您可能会遇到一些网络问题。当通过检查配置和日志无法查出错误时,就需要捕获网络数据包。

不过 Pod 中一般不会安装 tcpdump 命令。有没有办法直接通过主机捕获Pod网络数据包?当然,本文介绍了nsenter命令,该命令可以进入Pod容器的net命名空间。

并且本文提供了快速进入Pod容器net命名空间的脚本,方便大家使用。 nsenter 使用参数代码语言:javascript 复制 nsenter [options] [program [arguments]]options: -t, --target pid: 指定要进入命名空间的目标进程的pid -m, --mount[= file]:输入挂载命名空间。

如果指定了file,则输入文件的命名空间 -u、--uts[=file]:输入uts命名空间。如果指定了file,则输入文件的命名空间 -i、--ipc[=file]:输入ipc命名空间。

如果指定了file,则输入文件命名空间 -n, --net[=file]:输入net命名空间。如果指定了file,则输入文件的命名空间 -p、--pid[=file]:输入pid命名空间。

如果指定了file,则输入文件命名空间 -U, --user[=file]:输入用户命名空间。如果指定file,则输入文件的命名空间 -G,--setgid gid:设置运行程序的gid -S,--setuid uid:设置运行程序的uid -r,--root[=目录] :设置根目录 -w, --wd[=目录]:设置工作目录。

如果没有给出程序,则默认执行$SHELL。 nsenter除了可以输入net命名空间外,还可以输入mnt、uts、ipc、pid、user命名空间,并指定根目录和工作目录。

Pod容器抓包演示发现某服务网络不可用。建议将该服务的副本数量调整为1个Pod,并找到副本Pod所在的主机和Pod名称。

检查Pod所在主机以及Pod名称。代码语言:javascript 复制 $ kubectl get pods -n test -o Wide 登录Pod所在主机,创建e_net.sh Shell脚本。

代码语言: javascript copy $ vim e_net.sh 代码语言: javascript copy #!/usr/bin/env bashfunction e_net() { set -eu pod=`kubectl get pod ${pod_name} -n ${namespace} -o template --template='{{range .status.containerStatuses}}{{.containerID}}{{end}}' | sed 's/docker:\/\/\(.*\)$/\1/'` pid=`docker inform -f {{.State.Pid}} $pod` echo -e "\[32m 进入 pod netns for ${namespace}/${pod_name} \[0m\n" cmd="nsenter -n -t ${pid}" echo -e "\[32m 执行命令:${cmd} \[0m" $ {cmd}}# run function pod_name=$1namespace=${2-"default"}e_net 脚本依赖命令:需要在宿主机上安装 kubectl、docker、nsenter、sed、echo 命令。代码语言:javascript copy # 添加脚本执行权限 $ chmod +x e_net.sh 本示例捕获 test 命名空间下的 demo2-deployment-5f5f4fbd9b-92gd4 Pod 端口请求包。

代码语言:javascript copy# Entering Pod demo2-deployment-5f5f4fbd9b-92gd4 net namespace $ ./e_net.sh demo2-deployment-5f5f4fbd9b-92gd4 test# 以下是脚本执行后的输出结果 Entering pod netns for test/demo2 -deployment- 5f5f4fbd9b-92gd4 执行命令:nsenter -n -t 2 现在使用 ip addr 或 ifconfig 查看,发现唯一的网卡配置是 demo2-deployment-5f5f4fbd9b-92gd4Pod。代码语言: javascript copy $ ifconfig 使用 tcpdump 捕获 eth0 网卡的 80 端口数据包。

代码语言: javascript copy $ tcpdump -nnnvv -As 0 -i eth0 port 80 -w demo2.pcaptcpdump: 监听 eth0,链接类型 EN10MB(以太网),捕获大小 44 字节63 个数据包捕获 63 个由过滤器接收的数据包0 个数据包被内核下载丢弃demo2.pcap到本机,使用wireshark查看包。原理:namespace是Linux中一些进程属性的范围。

使用命名空间,您可以隔离不同的进程。Linux 不断添加命名空间。

目前有: mount:挂载命名空间允许进程拥有独立挂载的文件系统。从Linux 2.4.19 ipc开始:ipc命名空间允许进程拥有独立的ipc,包括消息。

队列、共享内存和信号量,从Linux 2.6.19开始uts:uts命名空间,可以让进程拥有独立的主机名和域名,从Linux 2.6.19开始net:网络命名空间,可以让进程拥有独立的网络堆栈,从 Linux 2.6.24 开始 pid:pid 命名空间,可以让进程拥有独立的 pid 空间,在 Linux 2.6.24 中开始 user:用户命名空间,可以让进程拥有独立的用户空间,在 Linux 2.6.23 中开始Linux 3.8 cgroup结束:cgroup命名空间允许进程拥有独立的cgroup控制组。从 Linux 4.6 开始,Linux 中的每个进程都有一个命名空间。

命名空间的文件描述符可以在/proc/PID/ns目录中看到。 nsenternsenter命令相当于对setns进行了一层封装,这样我们就不需要指定命名空间的文件描述符,而只需要指定进程号即可。

指定了进程号PID和要进入的命名空间后,nsenter会帮我们找到对应的命名空间文件描述符/proc/PID/ns/FD,然后使用这个命名空间来运行新程序。

K8S Pod 抓包快速定位网络问题

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 「AI投研邦」团体会员上线!75折解锁会员权益、PDF版研报、AI峰会....

    「AI投研邦」团体会员上线!75折解锁会员权益、PDF版研报、AI峰会....

    《AI投研邦》群会员上线! 25折解锁会员权益、PDF版研究报告、AI峰会……2019年12月,我们正式推出《AI投资研究状态》。 这几十天,我们听到不少AI+企业为员工购买统一会员的诉求。 经过与AI+企业的多次沟通和尝试,“AI投研邦”团体会员服务于1月22日正式上线。 我们重点整合

    06-18

  • AT&S半导体封装载板项目落户重庆

    AT&S半导体封装载板项目落户重庆

    美通社:近日,高端印刷电路板制造商AT&S宣布,为应对高性能计算日益增长的市场需求,公司将扩产其战略支柱 类型业务为半导体封装载板。 计划在重庆建设新工厂,并扩大奥地利莱奥本工厂的产能。 为此,该公司计划未来五年投资近10亿欧元,主要用于在重庆建设新工厂。 这项投资

    06-06

  • 特朗普隔空喊话他不要的无人水下航行器是什么?

    特朗普隔空喊话他不要的无人水下航行器是什么?

    12月16日,美国国防部官员表示,中国海军在南海捕获了一艘美国水下无人潜艇。 中国国防部回应称,为防止不明装置危及过往舰艇航行安全和人员安全,中国海军一艘救生艇对该装置进行了识别验证,并将通过适当的手段。 然而,一向推崇推特治国政策的特朗普却发文:我们不要这艘潜

    06-18

  • 58同城宣布任命首任CFO,或为境外上市做准备

    58同城宣布任命首任CFO,或为境外上市做准备

    据6月27日消息,国内分类信息网站58同城今日宣布任命周浩为公司首任CFO。 分析师人士指出,此举意在为公司海外上市做准备。 美国IPO准备工作。     58同城CFO周浩  据悉,这是58同城自2016年成立以来聘请的第一位CFO。 58同城公关部人士透露,58同城还没有聘请过CFO。

    06-17

  • 连云港新设20亿基金

    连云港新设20亿基金

    投资界(ID:pedaily)4月11日消息,江苏洋泾石化集团有限公司近日发起设立连云港徐圩新区产业投资基金(以下简称“连云港徐圩新区”) “徐威新区产业投资基金”),基金规模20.1亿元,盛世聚鑫担任基金管理人。 该基金主要投资于石化行业上下游,重点关注石化等战略新兴产业

    06-18

  • 请保留这份笔记本电脑陷阱指南

    请保留这份笔记本电脑陷阱指南

    购买电脑对于很多人来说一直是一件非常烦人的事情。 当你打开购物网站时,琳琅满目的商品总是让人眼花缭乱。 CPU、内存、显卡、硬盘,选择一台合适的电脑需要考虑的各种硬件参数并不比买车容易。 如果你对硬件参数一无所知,那么买电脑无异于去相亲。 你不仅害怕错过眼前的美

    06-21

  • 诞生125年后,圆形方向盘即将变成方形?

    诞生125年后,圆形方向盘即将变成方形?

    前段时间,丰田公布了bZ纯电动专属系列首款车型bZ4X的详细信息。 新车定位中型纯电动SUV,车身尺寸与RAV4类似。 新车的外观我大致了解了一下。 它与8个月前上海车展上展示的概念车没有什么不同。 虽然值得肯定,但也在情理之中。 真正让我惊讶的是方向盘——它采用了异形方向

    06-21

  • MVG紧凑型OTA测试系统订单量持续攀升

    MVG紧凑型OTA测试系统订单量持续攀升

    领先创新天线测试技术的系统制造商法国Microwave Vision集团(以下简称MVG)公布其专为实验室设计的高精度多探头天线测试和测量系统 StarLab 的订单猛增 44%。 *StarLab 是 MVG 紧凑型便携式测试设备“Little Big Lab”系列的一部分,是同类产品中设计最全面的产品之一。 经过

    06-06

  • 收入增加,利润减少!云众科技今年一季度利润下滑超20%

    收入增加,利润减少!云众科技今年一季度利润下滑超20%

    科创板上市公司云众科技(60.SH)一季度实现营业收入1.35亿元,同比增长21.37%;归属于母公司股东的净利润。 26万元,同比下降22.53%。

    06-17

  • ASML 柏林火灾最新消息:DUV 线路正常,部分 EUV 系统受到影响

    ASML 柏林火灾最新消息:DUV 线路正常,部分 EUV 系统受到影响

    继上周火灾之后,ASML 提供了有关其德国柏林工厂受损情况的最新消息。 Dutch Semiconductor Components是全球最大的光刻系统供应商;提供用于制造集成电路的机器。 该公司本周表示,其深紫外(DUV)和极紫外光刻(EUV)生产线均受到影响。 但在 DUV 系统可以恢复的地方,EUV

    06-08

  • 京东斥资3.71亿港元认购彩生活5%股份,双方达成深度战略合作

    京东斥资3.71亿港元认购彩生活5%股份,双方达成深度战略合作

    据投资界消息,京东集团、旗下京东物流集团、京东数码科技集团与彩生活服务集团股份有限公司达成深度战略合作,同时彩生活将向京东发行新股,京东将出资3.71亿港元认购5股彩生活持股比例。 彩生活成立于2007年,是一家集物业服务、建筑智能化、社区服务于一体的科技型、综合性

    06-18

  • 【融资24小时】2022年11月3日投融资事件汇总及明细

    【融资24小时】2022年11月3日投融资事件汇总及明细

    今日国内市场共发生13起投资披露事件,医疗健康领域4起(智新浩正、科艺药业、科医医疗)联创、集智医疗)、先进制造案例3个(上海超硅半导体、钛金科技、瑶芯微)、智能硬件案例2个(智翔光电、鄂企翔)、区块链案例1个(成都链安)、汽车交通案例1个(上海)车友汇)、企业

    06-17