进入pod容器的netns

背景

同事需要对pod的进出流量进行限速,
因为容器和主机通信是通过veth pair的,所以思路就是对veth pair的两端进行限速

进入pod容器的netns

确保/var/run/netns存在

mkdir -p /var/run/netns

准备netns

podName=yourpodname
podNamespace=yournamespace
containerID=`kubectl get pod -n $podNamespace $podName  -ojsonpath='{.status.containerStatuses[0].containerID}'`
containerID="${containerID##*\/}"
containerPID=`docker inspect --format='{{.State.Pid}}' $containerID`
ln -s /proc/$containerPID/ns/net /var/run/netns/$containerPID

实验

ip netns exec $containerPID ip addr

获取veth pair两端

容器侧是eth0,所以只需要获取主机侧

vethIndex=`ip netns exec $containerPID cat /sys/class/net/eth0/iflink`
hostVeth=`ip addr|grep "${vethIndex}:" |awk '{print $2}'`
hostVeth="${host_veth%@*}"

你可能感兴趣的:(进入pod容器的netns)