coredns service 连接超时(connection timed out; no servers could be reached)

node 主机测试kube-dns 解析提示连接超时

dig @10.96.0.10 kube-dns.kube-system.svc.cluster.local

# 显示如下
; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @10.96.0.10 kube-dns.kube-system.svc.cluster.local
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

修改 coredns configmap 配置,查看coredns 日志

kubectl -n kube-system edit cm coredns

在 Corefile 增加log 配置

apiVersion: v1
data:
  Corefile: |
    .:53 {
        log
        errors
        health {
           lameduck 5s
        }
...

保存更改后,k8s 将这些更改传播到CoreDNS豆荚可能需要一到两分钟的时间。CoreDNS会自动加载配置。

查询coredns 所有pod日志

显示类似如下内容,没有异常信息

查看 svc 和 endpoints信息

使用dig 测试 pod ip ,查看解析

结果都是正常的, 说明coredns 服务本身没有问题

telnet 测试连通性

使用telnet 在master 主机和 node 测试 10.96.0.10 53 端口,结果都是正常的

根据网上搜索相关错误联系刚升级的flannel服务配置解决问题

根据 https://github.com/coredns/coredns/issues/3704 中信息提示,pod 网络和服务网络重叠会导致路由问题。

我猜测 可能跟我 刚更新的 cni flannel 版本到v0.20.1 有关系

flannel Network 配置如下

Kubeadm-config 中Networking配置如下

Kubeadm-config 中 serviceSubnet 不在 flannel Network 配置范围中,我修改了 flannel Network 配置如下

重启flannel ds

重新 使用dig 测试 kube-dns 域名

可以正常解析

参考:

https://medium.com/geekculture/k8s-troubleshooting-how-to-debug-coredns-issues-724e8b973cfc

https://github.com/coredns/coredns/issues/3704

https://coredns.io/manual/configuration/

https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/dns-custom-nameservers/

https://github.com/kubernetes-sigs/kubespray/issues/4674

https://github.com/coredns/deployment/blob/master/kubernetes/Upgrading_CoreDNS.md

https://github.com/flannel-io/flannel/blob/v0.20.1/Documentation/configuration.md

Last updated

Was this helpful?