Skip to content

kubectl-debug简单介绍与使用

kubectl-debug 是 K8S 中 Pod 的诊断工具,它通过启动一个排错工具容器,并将其加入到目标业务容器的 pid, network, user 以及 ipc namespace 中,这时我们就可以在新容器中直接用 netstat, tcpdump 这些熟悉的工具来解决问题了, 而业务容器可以保持最小化, 不需要预装任何额外的排障工具。

其主要有两部分组成:

  • kubectl-debug 工具,是一个二进制文件
  • debug-agent,部署在 node 节点,用于启动关联的排错容器

部署

1、部署 kubectl-debug 工具

由于其仅仅是一个二进制文件,所以部署很简单,不过由于集群是通过 kubeconfig 进行授权访问的,所以我们将 kubectl-debug 工具部署在 master 上。

项目地址:https://github.com/aylei/kubectl-debug

bash
# install kubectl-debug
export PLUGIN_VERSION=0.1.1
#linux x86_64
curl -Lo kubectl-debug.tar.gz https://github.com/aylei/kubectl-debug/releases/download/v${PLUGIN_VERSION}/kubectl-debug_${PLUGIN_VERSION}_linux_amd64.tar.gz
tar -zxvf kubectl-debug.tar.gz kubectl-debug
sudo mv kubectl-debug /usr/local/bin/

2、部署 debug-agent

debug-agent 以 daemonSet 的形式部署。直接执行下面命令即可

bash
kubectl apply -f https://raw.githubusercontent.com/aylei/kubectl-debug/master/scripts/agent_daemonset.yml

然后查看 pod 的状态,直到其变为 running

bash
kubectl get pod
NAME                                     READY   STATUS    RESTARTS   AGE
debug-agent-5prws                        1/1     Running   0          27d
debug-agent-5qm2w                        1/1     Running   1          23d
debug-agent-dd7bt                        1/1     Running   1          27d
debug-agent-nfzqp                        1/1     Running   0          27d
debug-agent-wx4qp                        1/1     Running   0          27d

使用

1、pod 里只有一个 contaienr

bash
kubectl-debug POD_NAME

2、pod 里有多个 container

bash
kubectl-debug POD_NAME -c CONTAINER_NAME

3、指定 namespace

bash
kubectl-debug POD_NAME -n test

4、自定义排除的容器镜像

bash
kubectl-debug POD_NAME --image aylei/debug-jvm

更多可以通过kubectl-debug -h来查看帮助文档。

上面的 debug-agent 是部署在集群中的,这种方式对于调试频率不高的环境容易造成资源浪费,所以 debug-agent 还提供一种 agentless 的模式,kubectl-debug 执行命令后,才创建 agent pod 和排错工具容器,并在退出后删除工具容器和 agent pod。由于每次执行都要重新拉起 agent,启动会比 daemon-set 模式稍慢。使用-a, --agentless 开启 agentless 模式。

比如:

bash
kubectl-debug POD_NAME -n NAMESPACE -a --image aylei/debug-jvm --agent-image nicolaka/netshoot:latest
最近更新