kubernetes 1.5.2 部署kube-dns 踩過的坑

  看了kubernetes 權威指南 碰見了dns這一塊。因而便按照書上的方式部署了一下。node

  書上使用的方式是:kube2sky+etcd+skydns的方式。按照書上的yaml寫了一遍,發現不管如何都沒法將dns部署到kubernetes 的集羣中,實在沒辦法只能着文檔了。因而乎發現kubernetes 在1.2之後就已經不使用上面那套dns。1.2之後使用kube-dns+dnsmasq-metrics+kube-dnsmasq的方式部署。下面就是我部署碰見的坑:docker

1.dns中沒法鏈接apiserver:8080端口(kube-dashborad也有這類問題)。centos

     kube-dns沒法鏈接apiserver的8080端口,通常的問題出現在iptables沒有關閉(centos7:systemctl stop firewalld;centos6:service iptables stop )。還有開啓ip_forward=1(開啓ip轉發)。這兩步很是關鍵。建議開機啓動。api

2. busybox cant reach DNS service(就是建立的pod沒法訪問dns的服務)centos7

  我這裏致使這種問題的是因爲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)spa

3.將各臺機器的主機名和在集羣中的名字設置相同,最好加入到/etc/hosts中。server

總結: 細節,細節,細節。dns

相關文章
相關標籤/搜索