kubernetes 1.5.2 部署kube-dns 踩过的坑

  看了kubernetes 权威指南 遇见了dns这一块。于是便按照书上的方式部署了一下。

  书上使用的方式是:kube2sky+etcd+skydns的方式。按照书上的yaml写了一遍,发现无论如何都无法将dns部署到kubernetes 的集群中,实在没办法只能着文档了。于是乎发现kubernetes 在1.2以后就已经不使用上面那套dns。1.2以后使用kube-dns+dnsmasq-metrics+kube-dnsmasq的方式部署。下面就是我部署遇见的坑:

1.dns中无法连接apiserver:8080端口(kube-dashborad也有这类问题)。

     kube-dns无法连接apiserver的8080端口,一般的问题出现在iptables没有关闭(centos7:systemctl stop firewalld;centos6:service iptables stop )。还有开启ip_forward=1(开启ip转发)。这两步非常关键。建议开机启动。

2. busybox cant reach DNS service(就是创建的pod无法访问dns的服务)

  我这里导致这种问题的是由于flanneld重启,导致flanneld网卡变化,但是docker使用以前的flanneld生成的配置文件。所以nodes之间的docker0网卡无法进行连接。所以,这里需要在flanneld的启动文件中添加这一步:ExecStartPost=/usr/bin/mk-docker-opts.sh -k DOCKER_OPTS -d /run/flannel/docker(centos6自行添加)。然后在docker启动文件中加入读取/run/flannel/docker变量这一步,并且将读取的变量加入到启动。$DOCKER_OPT_BIP $OCKER_OPT_IPMASQ $DOCKER_OPT_MTU(这三个变量对应上面的/run/flannel/docker)

3.将各台机器的主机名和在集群中的名字设置相同,最好加入到/etc/hosts中。

总结: 细节,细节,细节。

 

posted on 2017-12-25 00:27  机智的胖纸  阅读(1680)  评论(0编辑  收藏  举报

导航