CoreDNS 只能在 kubernete 集群中的一个主机中工作



我有一个有 3 个节点的 kubernetes:

[root@ops001 ~]# kubectl get nodes
NAME            STATUS   ROLES    AGE    VERSION
azshara-k8s01   Ready    <none>   143d   v1.15.2
azshara-k8s02   Ready    <none>   143d   v1.15.2
azshara-k8s03   Ready    <none>   143d   v1.15.2

当我部署了一些 pod 后,我发现只有一个节点azshara-k8s03可以解析 DNS,另外两个节点无法解析 DNS.这是我的 azshara-k8s03 主机节点/etc/resolv.conf:

options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.136
nameserver 100.100.2.138

这是另外 2 个节点/etc/resolv.conf:

nameserver 114.114.114.114

我应该保持相同吗? 我应该怎么做才能使 DNS 在 3 个节点中正常工作?

您是否尝试过114.114.114.114是否真的可以从您的节点访问? 如果没有,请将其更改为实际的内容;-]

还要检查您的 kublet 实际使用的resolv.conf:它通常不是/etc/resolv.conf:请ps ax |grep kubelet并检查--resolv-conf标志的值,并查看该文件中的 DNS 是否正常工作。

更新:

在 2 个有问题的节点上无法解析哪些名称? 这些是公共名称还是仅内部名称? 如果它们只是内部的,那么 114.114.114 将不知道它们。 我无法访问100.100.2.136100.100.2.138:它们是您的内部 DNS 吗?如果是这样,请尝试仅将 2 个不起作用的节点上的/etc/resolv.conf更改为与正常工作的节点相同。

第一步,你的 CoreDNS 端口正在监听你指定的端口,你可以在其他 pod 中登录 pod,并尝试使用 telnet 命令来确保 DNS 暴露端口是可访问的(目前我正在使用 alpine,centos 使用 yum,ubuntu 或 debian 使用 apt-get(:

apk add busybox-extras
telnet <your coredns server ip> <your coredns listening port>

第二步:登录每台主机上的 pod,并确保每个 pod 中的端口是可访问的,如果 telnet 端口无法访问,则应先修复您的 cluser 网络。

相关内容

最新更新