之前写过一篇 k8s 集群自动化部署的文章:「Kubeadm 结合 Vagrant 自动化部署最新版 Kubernetes 集群」,发现集群启动后 DNS 无法解析,公网和集群内部都无法解析,具体问题表现是:进入 pod 执行 ping service 名称或者公网域名都是无法解析 Unknow host
。
经过网上搜索一番找到了问题并得以解决,主要原因是 Vagrant 在多主机模式下有多个网卡,eth0 网卡用于 nat 转发访问公网,而 eth1 网卡才是主机真正的 IP,在这种情况下直接部署 k8s flannel 插件会导致 CoreDNS 无法工作。解决方法很简单,调整下 flannel 的启动参数,加上 - --iface=eth1
网卡参数:
vim https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- --kube-subnet-mgr
后面加一行参数:- --iface=eth1