K8s拉起容器无法域名访问外网
2019-12-29 本文已影响0人
cxj_hit
问题详述
最近新拉了一个K8s 1.17版本的集群,由于服务器资源有限,只有一个Master和一个Minion,就把Master设置为可分配业务Pod。
由于Master和Minion为同性质工作,后来重启K8s集群的时候,有一个CoreDNS被分配到了Minion主机上。
当时也没太留意,只是在启动一个服务的时候,发现只能访问外网的IP,不能通过域名方面,感觉好奇怪。
查看了下/etc/resolv.conf里面的配置啥的也都正确,按理来说不应该出现问题。
由于用的是Centos7操作系统,就把Firewalld给关闭了尝试下,就可以正常通过域名访问,由此可见还是Firewalld给拦截了。
考虑到Firewalld的拦截,很奇怪,因为我们的pod是访问外网,不是外面访问它,应该不是开放端口的问题,最后查看了下宿主机上的NAT路由转发,结果发现,Master上的处于开启状态,Minion上的处于关闭状态,怪不得无法访问外网的域名服务器进行域名的正常解析,开启后,一切正常。
[root@master ~]# firewall-cmd --query-masquerade
no
[root@master ~]# firewall-cmd --permanent --zone=public --add-masquerade
success
[root@master ~]# firewall-cmd --reload
success
[root@master ~]# firewall-cmd --query-masquerade
yes
[root@master ~]#