原创

容器抓包操作

  • 创建容器
~ kubectl run nginx --image nginx:alpine -n default
  • 获取容器id
~ kubectl describe pod -n default nginx | grep -A10 "^Containers:" |grep "Container ID"
Container ID:   docker://3653685272e451eaf1f824dde081abcb218506dc773f30b3f1ac91697ee0df70
  • 进入容器宿主机,获取pid
ssh xxx
$ sudo docker inspect -f {{.State.Pid}} 3653685272e451eaf1f824dde081abcb218506dc773f30b3f1ac
91697ee0df70
14842
  • 进入容器的网络命名空间

可以看到容器的ip地址

$ sudo nsenter -n -t 14842
# ip addr
3: eth0@if1293: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether f6:3c:7d:8c:22:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.21.2.73/25 brd 172.21.2.127 scope global eth0
       valid_lft forever preferred_lft forever
  • 抓包测试

tcpdump 抓包

tcpdump -i eth0 -nnnn -ttt port 80

其他节点向容器发包

nc 172.21.2.73 80

抓包结果

00:00:00.000000 IP 10.1.1.91.7860 > 172.21.2.73.80: Flags [S], seq 2688497194, win 29200, options [mss 1460,sackOK,TS val 2157609
545 ecr 0,nop,wscale 9], length 0
 00:00:00.000027 IP 172.21.2.73.80 > 10.1.1.91.7860: Flags [S.], seq 753018921, ack 2688497195, win 28960, options [mss 1460,sackO
K,TS val 2976168148 ecr 2157609545,nop,wscale 9], length 0
 00:00:00.000138 IP 10.1.1.91.7860 > 172.21.2.73.80: Flags [.], ack 1, win 58, options [nop,nop,TS val 2157609545 ecr 2976168148],
 length 0
 00:00:00.000027 IP 10.1.1.91.7860 > 172.21.2.73.80: Flags [F.], seq 1, ack 1, win 58, options [nop,nop,TS val 2157609545 ecr 2976
168148], length 0
 00:00:00.000046 IP 172.21.2.73.80 > 10.1.1.91.7860: Flags [F.], seq 1, ack 2, win 57, options [nop,nop,TS val 2976168148 ecr 2157
609545], length 0
 00:00:00.000091 IP 10.1.1.91.7860 > 172.21.2.73.80: Flags [.], ack 2, win 58, options [nop,nop,TS val 2157609545 ecr 2976168148],
 length 0

tcpdump可以选择条件host

# tcpdump -i eth0 -nnnn -ttt host 10.1.1.91

容器查看是否丢包

此处没有丢包,所以没有

# netstat -s | grep -E 'overflow|drop'

退出容器

 exit

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • k8s pause

    关键的地方 for(;;)pause(); # pause是系统函数,作用等待信号

    何飞良
  • TKE节点池

    何飞良
  • docker,k8s简介

    镜像是docker 把程序,与之相关的包和依赖库打包成一个文件系统,是一个静态文件资源。容器是镜像的实例,是镜像运行在docker上的程序

    何飞良
  • 使用Shell脚本来解析MySQL元数据变化

    今天写了一个简单的Shell脚本,可以通过这个脚本来得到一个MySQL元数据变化的列表。

    jeanron100
  • js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法

    用户7657330
  • NASA开展无人机交通管理测试

    美国航天局NASA在2015年11月进行了无人机空中交通管制系统的首次测试。 美国航天局NASA公布了无人机交通管制系统,包括系统的相关概念、运营商合作平台、无...

    人工智能快报
  • 无人机火了,这家公司却在开发无人机开源视觉平台

    ---- 做无人机硬件项目的企业已经很多了,但是从软件入手的的还相对较少,而实际上软件往往能够最大限度地释放无人机的潜力,应用在更多的领域,实现更多功能。 ...

    机器人网
  • KICKSTART无人值守安装

    1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [roo...

    惨绿少年
  • 「死磕」Core Data——非标准数据类型的保存

    其实这个名字,会引起一定的歧义,光看名字,以为是一个普通的视图控制器,其实它并不继承自UIViewController类。

    iOS Development
  • 数据库MySQL-执行引擎介绍

    不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表 支持3种不同的存储格...

    cwl_java

扫码关注云+社区

领取腾讯云代金券