Kubernetes 抓包

如何对 Kubernetes 中的应用进行抓包调试,直接进入容器安装 tcpdump 过于粗暴,更好的方式是进入 Pod 所在命名空间。

  1. 找到容器所在节点:

    1
    $ kubectl get po nginx -o wide
  2. 登录节点,找到容器对应id (注意会出现两个相关容器,包括 pause 和本体,对这二者抓包都是可行的,这里选择 pause 容器):

    1
    $ docker ps | grep nginx | grep -v pause
  3. 找到容器pid,并进入其网络namespace:

    1
    2
    $ docker inspect CONTAINER_ID | grep Pid
    $ nsenter -t PID -n
  4. 抓包

    1
    $ tcpdump -i eth0 port 8080