CoreDNS解析失败排查方式

Posted Wshile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CoreDNS解析失败排查方式相关的知识,希望对你有一定的参考价值。

1. 查看coreDNS是否正常启动

kubectl -n kube-system get po|grep core

 2. 如果不正常,并确定yaml配置无误,可将coreDNS pod通过修改deployment yaml 添加 nodeName尝试调度到其他节点,排查是否为node原因,或直接通过第4条排查问题node

       spec:
         nodeName: 1.1.1.1
         containers:
         - name: xxx
           image: xxx
           ports:
           - containerPort: 8080

3. 如果通过nodeName成功运行并启动coreDNS pod 可在任意node上通过sevice name解析coreDNS的可用性,示例:

   # coreDNS地址:10.96.0.10
   # 任意服务的service name:tiller-deploy
   nslookup tiller-deploy.kube-system.svc.cluster.local 10.96.0.10

 4. 如果某一节点出现解析失败,则测试node 到pod是否连通

   # pod ip: 10.96.0.10
   ping 10.53.5.165

 5. 连通性测试失败,查看问题node  flannel是否正常运行,如果正常运行,继续排查

   # 1、查看问题节点flannel容器
   docker ps | grep flannel
   # 2、查看flannle网卡状态
    ifconfig  flannel.1
   # 3、查看路由表与正常节点对比是否齐全,示例:
    route -n
   10.244.1.0      10.244.1.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.2.0      10.244.2.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.3.0      10.244.3.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.4.0      10.244.4.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.5.0      10.244.5.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.6.0      10.244.6.0      255.255.255.0   UG    0      0        0 flannel.1
   10.244.7.0      10.244.7.0      255.255.255.0   UG    0      0        0 flannel.1
   # 如果上面查看有问题,确定是否启动NetworkManager服务,该服务会导致flannel异常
   # 查看 
   systemctl status NetworkManager
   # 关闭 && 禁用
   systemctl stop NetworkManager && systemctl disable NetworkManager
   
   # 如果是该服务影响,日志中会出现此类问题:
   device (flannel.1): state change: unmanager -> unavailable (reason ‘connection-assumed‘)
   
   # 并检查问题解析地址
   cat /etc/resolv.conf
   
   # 删除flannel 重新拉起flannel
   docker rm -f flannel

 6. 如果flannel未启动情况

   # 1. 查看kubelet是否启动
   netstat -tnlp| grep kubelet
   
   # 2. 未启动,则查看swap分区是否开启,正常情况下为swap原因导致
   # 临时关闭swap分区, 重启失效;
   swapoff -a
   # 永久关闭swap分区
   sed -ri ‘s/.*swap.*/#&/‘ /etc/fstab
   
   # 通过free 查看swap状态为关闭状态
   free -m
                 total        used        free      shared  buff/cache   available
   Swap:             0           0           0
   # 启动kubelet,会拉起flannel 
   systemctl start kubelet
   # 如果kubelet启动和flannel正常启动可通过第5条排查问题,并测试服务的可用性

 

以上是关于CoreDNS解析失败排查方式的主要内容,如果未能解决你的问题,请参考以下文章

K8S集群中Coredns域名解析故障排查思路

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

K8S CoreDNS部署失败,问题分析

k8s 服务注册与发现DNS解析异常问题排查

k8s 服务注册与发现DNS解析异常问题排查