对于一些故障排除,我想连接到我的coredns pod。这可能吗?
$ microk8s kubectl get pod --namespace kube-system
NAME READY STATUS RESTARTS AGE
hostpath-provisioner-5c65fbdb4f-w6fmn 1/1 Running 1 7d22h
coredns-7f9c69c78c-mcdl5 1/1 Running 1 7d23h
calico-kube-controllers-f7868dd95-hbmjt 1/1 Running 1 7d23h
calico-node-rtprh 1/1 Running 1 7d23h
当我尝试,我得到以下错误味精:
$ microk8s kubectl --namespace kube-system exec --stdin --tty coredns-7f9c69c78c-mcdl5 -- /bin/bash
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "f1d08ed8494894d1281cd5c43dee36119225ab1ba414def333659538e5edc561": OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
User AndD已经在评论中提到了:
Coredns Pod没有外壳,我想。看看下面这个:如何进入CoreDNS pod kuberrnetes?
是的。这个图像没有外壳。你可以在这个线程中阅读更多关于这种情况的信息:
镜像不包含shell。日志可以
kubectl
。
你已经问了:
我想连接到我的coredns pod,这是可能的吗?
理论上是可以的,但是你需要用docker来解决这个问题。答案如下:简而言之,这样做是为了找到一个正在运行coredns pod的节点:
kubectl -n kube-system get po -o wide | grep coredns
ssh到其中一个节点,然后:
docker ps -a | grep coredns
复制容器ID到剪贴板并运行:
ID=<paste ID here>
docker run -it --net=container:$ID --pid=container:$ID --volumes-from=$ID alpine sh
现在您将进入"sidecar"容器,可以到处戳。例如
cat /etc/coredns/Corefile
另外,您可以使用kubectl
检查日志。另请参阅有关DNS调试的官方文档。