
有时候我们遇到一些网络问题需要通过抓包来定位下什么问题,但是我们通常在容器内不是很好方便执行抓包,或者没有抓包命令,那应该需要怎么处理呢,其实我们可以在业务pod里面加一个容器,专门用来抓取服务的包,然后将抓包文件保存到节点上,最好从节点拷贝到本地进行分析即可。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: tcpdump-test
qcloud-app: tcpdump-test
name: tcpdump-test
namespace: test
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: tcpdump-test
qcloud-app: tcpdump-test
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
k8s-app: tcpdump-test
qcloud-app: tcpdump-test
spec:
containers:
- args:
- tcpdump -i eth0 -nn -vv -G 60 -w /tmp/%Y_%m%d_%H%M_%S.pcap
command:
- /bin/bash
- -c
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
image: nwx-test.tencentcloudcr.com/nwx/centos:nwx
imagePullPolicy: IfNotPresent
name: centos
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /tmp
name: vol
- image: nginx
imagePullPolicy: Always
name: nginx
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /tmp/pacp
type: DirectoryOrCreate
name: vol其实我们就是在nginx的pod中增加一个centos的容器来抓pod内的eth0的包,然后上传到节点的/tmp/pacp目录,然后我们从节点上拷贝所需要的包,通过Wireshark打开进行分析。
我们这里测试的抓包命令是下面这个,每60s保存下包的内容到/tmp下,这里可以根据实际需要抓包的内容进行修改和配置
tcpdump -i eth0 -nn -vv -G 60 -w /tmp/%Y_%m%d_%H%M_%S.pcap下面我们测试下通过service访问下nginx服务

然后拷贝节点上的抓包文件到本地

拷贝到本地后通过Wireshark打开进行分析

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。