完美解决K8s中的Pod无法解析外网域名问题

在Ubuntu 18.04.02系统和K8s 1.13.4版本下,Pod无法通过KubeDNS解析外网域名。问题源于KubeDNS使用宿主机的resolv.conf,而该文件在Ubuntu 18.04由systemd-resolved服务管理,手动修改无效。解决方法是删除resolv.conf软链接并手工创建,再重新部署KubeDNS和Pod,通过编辑/etc/hosts解决host解析问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统:Ubuntu 18.04.02
K8s版本:1.13.4

故障现象:安装KubeDNS后,Pod内无法ping通外网域名,访问外网IP、K8s内部域名或者IP均正常。
  
原因分析,查看Pod中的resolv.conf:

kubectl exec busybox -- cat /etc/resolv.conf   
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

10.96.0.10为KubeDNS的集群IP,对于内部域名,KubeDNS会直接解析,对于外部域名,KubeDNS会丢给上一级DNS服务器解析,这个上一级DNS服务器就依赖于resolv.conf。
查看KubeDNS Pod中的resolv.conf:

kubectl -n kube-system exec kube-dns-57f56f74cb-s86k7 -- cat /etc/resolv.conf
Defaulting container name to kubedns.
Use 'kubectl describe pod/kube-dns-57f56f74cb-s86k7 -n kube-system' to see all of the containers in this pod.
nameserver 127.0.0.53
options edns0

查看宿主机(Node或Master)该文件,cat /etc/resolv.conf:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting loca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值