1、开始
k8s 在1.16以后加入了debug 功能,开启临时容器(EphemeralContainers
)特性后,就可以调式容器。因为是此功能处于alpha阶段,默认不会启用,下面说下开启方法:
在管理节点编辑如下两个文件:
/etc/kubernetes/manifests/kube-apiserver.yaml
/etc/kubernetes/manifests/kube-scheduler.yaml
在command
部分加入如下代码:--feature-gates=EphemeralContainers=true
这样在接下来创建的新pod 就可以使用临时容器功能。
2、使用
##进程共享模式
~ $ kubectl run some-app --image=nginx --restart=Never
~ $ kubectl debug -it some-app --image=busybox --share-processes --copy-to=some-app-debug
##注入pod 检查网络类问题
## 在1.21.2上测试,运行debug后一直不显示命令行,暂时不可用
~ $ kubectl run distroless-python --image=martinheinz/distroless-python --restart=Never
kubectl debug -it distroless-python --image=praqma/network-multitool --target=distroless-python -- sh
##node 节点调式
##如要调式的node节点名称为work2,这样会创建一个pod,node的/文件在/host目录下
kubectl debug node/work2 -it --image=centos