k8s 网络工具 nsenter

k8s 工具

借助nsenter命令进入容器命名空间进行抓包和网络诊断

#!/bin/bash

ns=$1     #传参1:命名空间
pod_name=$2  #传参2:pod名称

Container_id=$(kubectl describe pod -n $ns $pod_name  | grep "Container ID:" | cut -d '/' -f 3 | cut -c 1-12)
node=$(kubectl get pods -n $ns $pod_name -o wide | awk '{print $7}' | grep -v NODE)
docker_id='docker_id1=$(docker inspect -f {
      
      {
      
      .State.Pid}}'
read -t 30 -p "是否建立远程连接确认y/n:" num1

if [ $num1 == y ];then
   echo "-----------------节点输入-----------------"
   echo "$docker_id $Container_id)"
         docker_id1="$docker_id $Container_id"
   echo 'nsenter -n --target $docker_id1'
   echo "------------------------------------------"
   read -t 30 -p "ssh连接用户名:" name
   ssh $name@$node
  else
   echo "-----------------节点输入-----------------"
   echo "$docker_id $Container_id)"
         docker_id1="$docker_id $Container_id"
   echo 'nsenter -n --target $docker_id1'
   echo "------------------------------------------"
fi

bash k8s_ns.sh kube-system coredns-7cccdb8747-qztnd
#执行脚本并传参

脚本命令解析

查看指定 pod 运行的容器 ID

  • kubectl describe pod -n mservice

获得容器进程的 pid(进入Pod节点)

  • docker inspect -f { {.State.Pid}}

进入该容器的 network namespace(进入Pod节点)

  • nsenter -n --target

猜你喜欢

转载自blog.csdn.net/yangshihuz/article/details/112577768