解决k8s可以ping通外网IP,无法解析外网域名

  • A+
所属分类:Kubernetes

故障现象:

开发上传阿里云OSS图片失败,进入POD查看无法ping通外网域名,ping外网ip、k8s内部域名和ip均正常;

首先查看pod dns配置

[root@k8s-M1 k8s]# kubectl -n kaifa exec -it fmisc-d95b5fdc8-78hfq  /bin/bash
[root@fmisc-d95b5fdc8-78hfq jdk1.8.0_91]# cat /etc/resolv.conf 
nameserver 10.10.10.2
search kaifa.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

10.10.10.2是kube-dns的集群ip

[root@k8s-M1 ~]# kubectl -n kube-system get svc kube-dns -o wide
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE       SELECTOR
kube-dns   ClusterIP   10.10.10.2   <none>        53/UDP,53/TCP   13m       k8s-app=kube-dns

内部域名访问,kube-dns接受请求后会直接解析,如果访问外网域名,kube-dns会请求上一级DNS服务器;

查看kube-dns 上一级DNS配置

[root@k8s-M1 ~]# kubectl -n kube-system exec  kube-dns-76bf7b766f-qltvd -- cat /etc/resolv.conf
Defaulting container name to kubedns.
Use 'kubectl describe pod/kube-dns-76bf7b766f-qltvd -n kube-system' to see all of the containers in this pod.
nameserver 192.168.3.1

kube-dns在创建的时候,会把宿主机/etc/resolv.conf配置加载到pod中,核查宿主机和kube-dns配置,重新创建kube-dns,测试ping域名

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: