k8s 集群内无法通过 svc 域名访问的问题处理

一、问题

k8s集群内,无法通过svc 域名访问,以下为测试报错:

root@backend-auth-5565c87f8b-nmrbn:/data# ping mysql.dubhe-system.svc.cluster.local
ping: mysql.dubhe-system.svc.cluster.local: Temporary failure in name resolution
root@backend-auth-5565c87f8b-nmrbn:/data#

二、解决方法

问题排查

这个问题可能是由于DNS解析的配置问题导致的。在Kubernetes集群中,DNS服务负责将服务名称解析为对应的IP地址。

首先,你可以检查以下几点:

  1. CoreDNS是否正常运行:可以使用命令kubectl get pods -n kube-system来查看CoreDNS的状态。确保所有的CoreDNS Pod都处于Running状态。

  2. CoreDNS配置是否正确:可以通过查看CoreDNS的配置文件来确认是否正确配置了svc域名的解析。可以通过执行kubectl get configmap coredns -n kube-system -o yaml来获取CoreDNS的配置信息。

  3. 网络插件是否正常工作:如果你使用的是Calico等网络插件,确保网络插件正常工作并正确配置。

  4. DNS策略是否正确:检查Pod的DNS策略,确保它们正确配置为"ClusterFirst"或"Default"。可以通过执行kubectl get pod <pod-name> -o yaml来查看Pod的配置信息。

如果上述步骤都没有发现问题,可以尝试以下解决方法:

  1. 清除Pod的DNS缓存:在Pod所在的节点上执行以下命令清除DNS缓存:

    sudo systemctl restart kubelet
  2. 检查DNS配置是否正确:确保kubelet的--resolv-conf参数正确指向节点上的resolv.conf文件。可以通过查看kubelet的配置文件/etc/default/kubelet来确认。

  3. 检查集群的DNS策略:可以通过查看kubelet的配置文件/etc/default/kubelet来确认KUBELET_EXTRA_ARGS中是否正确配置了--cluster-dns--cluster-domain参数。

如果问题仍然存在,建议查看集群的网络和DNS配置,以及相关组件的日志,进一步排查问题。

实际解决

根据以上提示排查,发现 coreDNS 在集群内部挂了,所以,删掉重启就ok 了;

[root@192.168.1.101 ~]#kubectl get pods -n kube-system | grep coredns
coredns-5787695b7f-wbpj9                                          0/1     ImagePullBackOff   0          15h

# 处理方法,删掉重启
[root@192.168.1.101 ~]#kubectl delete pod coredns-5787695b7f-wbpj9 -n kube-system
pod "coredns-5787695b7f-wbpj9" deleted

# 重启之后就ok了

root@backend-auth-5565c87f8b-nmrbn:/data# ping mysql.dubhe-system.svc.cluster.local
PING mysql.dubhe-system.svc.cluster.local (10.68.1.26) 56(84) bytes of data.
64 bytes from mysql.dubhe-system.svc.cluster.local (10.68.1.26): icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from mysql.dubhe-system.svc.cluster.local (10.68.1.26): icmp_seq=2 ttl=64 time=0.097 ms
64 bytes from mysql.dubhe-system.svc.cluster.local (10.68.1.26): icmp_seq=3 ttl=64 time=0.100 ms
64 bytes from mysql.dubhe-system.svc.cluster.local (10.68.1.26): icmp_seq=4 ttl=64 time=0.102 ms

为者常成,行者常至