• kubernetes中的pod不能访问域名问题排查


    一、进入pod可以访问IP,不能访问域名

    bash-5.0# ping www.baidu.com
    ping: bad address 'www.baidu.com

    二、进入目标pod容器,查看/etc/resolv.conf

    bash-5.0# cat /etc/resolv.conf 
    nameserver 10.96.0.10
    search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt
    options ndots:5

    可以看到dns服务器IP为0.96.0.10,我们查看下系统的coredns pod容器信息

    [root@redis-03 kubernetes]# kubectl get pods -n kube-system -o wide |grep coredns
    coredns-66bff467f8-6w5j5            1/1     Running   0          3d20h   10.244.3.9     redis-03.hlqxt   <none>           <none>
    coredns-66bff467f8-h2zgp            1/1     Running   0          3d20h   10.244.4.9     redis-02.hlqxt   <none>           <none>

    可以看到两个coredns pod位于两个node节点上,并且状态是running,正常

    我们再进一步查看dns service信息

    [root@redis-03 kubernetes]# kubectl get svc -n kube-system -o wide
    NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE    SELECTOR
    kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   5d2h   k8s-app=kube-dns

    kube-dns服务的IP正是10.96.0.10,这样我们知道了pod是通过kube-dns 服务来解析域名的,现在的问题是POD无法与kube-dns通信呢?还是coredns本身域名解析有问题呢,我们需要进一步来确认kube-dns 服务后端正确绑定了coredns容器,我们查看endpoint来确认

    [root@redis-03 kubernetes]# kubectl get endpoints -n kube-system -o wide|grep kube-dns
    kube-dns                  10.244.3.9:53,10.244.4.9:53,10.244.3.9:9153 + 3 more...   5d2h
    [root@redis-03 kubernetes]# 

    可以看到kube-dns后端正确的绑定了两个coredns pod的IP。

    我们再将目标pod中的nameserver 的ip地址改为coredns pod的IP地址,绕过kube-dns服务,直接与coredns pod通信

    bash-5.0# cat /etc/resolv.conf 
    nameserver 10.244.3.9
    #nameserver 10.96.0.10
    search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt
    options ndots:5

    10.244.3.9:为coredns pod其中一个的IP

    再执行ping 

    bash-5.0# ping www.baidu.com
    PING www.baidu.com (110.242.68.3): 56 data bytes
    64 bytes from 110.242.68.3: seq=0 ttl=50 time=9.281 ms
    64 bytes from 110.242.68.3: seq=1 ttl=50 time=9.296 ms
    64 bytes from 110.242.68.3: seq=2 ttl=50 time=9.203 ms
    64 bytes from 110.242.68.3: seq=3 ttl=50 time=9.233 ms
    64 bytes from 110.242.68.3: seq=4 ttl=50 time=9.241 ms
    64 bytes from 110.242.68.3: seq=5 ttl=50 time=9.259 ms
    64 bytes from 110.242.68.3: seq=6 ttl=50 time=9.270 ms
    64 bytes from 110.242.68.3: seq=7 ttl=50 time=9.342 ms

    可以看到域名解析成功

    说明coredns pod工作是正常的,应用目标pod也是工作正常的问题出在kube-dns服务与coredns节点通信上,服务与pod之间通信是通过kube-proxy实现

  • 相关阅读:
    JSP学习笔记(7)JSP的文件操作 璃月
    【XML】xStream浅录 璃月
    Centos 7 安装后设置 璃月
    Dom解析xml 璃月
    mysql5.7.13.zip安装(windows) 璃月
    Oracle定时任务小案例 璃月
    mysql 慢查询日志相关参数,及慢sql分析
    mysql调优的几个参数
    数据库中1是true 0 是false
    mysql sql语句选错索引可以尝试的解决方案
  • 原文地址:https://www.cnblogs.com/sky-cheng/p/14254871.html
Copyright © 2020-2023  润新知