获取kubernetes中coredns pod的/etc/resolv.conf的内容

Get contents of /etc/resolv.conf of coredns pod in kubernetes

我是 k8 的新手,我正在学习 DNS 如何在 k8 集群中工作。我能够获取默认命名空间中随机 pod /etc/resolv.conf 的内容,但我无法获取 kube-system 命名空间中 coredns pod 的内容 /etc/resolv.conf

$>kubectl exec kubia-manual-v2 -- cat /etc/resolv.conf

输出: nameserver 10.96.0.10

$>kubectl exec coredns-74ff55c5b-c8dk6 --namespace kube-system -- cat /etc/resolv.conf

输出:

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "cat": executable file not found in $PATH: unknown

command terminated with exit code 126

cat 系统二进制文件似乎不存在于 $PATH 中。所以,我想知道如何获取 coredns pod 的 /etc/resol.conf 的内容。

Coredns 正在使用 scratch as the base layer running it's coredns binary. You can see the Dockerfile here for reference

您可以按照 this SO post 中的说明将 busybox 复制到您的 coredns 容器中,这样您就可以使用它了。请记住,您可能必须通过 ssh 进入 k8s 节点 运行 这个容器才能完成这项工作。