参考这一篇 kubernetes 1.4 集群搭建 ,自己不断地在生产和测试环境鼓捣,有不少 “逗比” 的经历,准备写一下具体的 kubeadm 搭建集群的一些坑和踩坑的经验,如果没有使用过 kubeadm 的同学,最好先看下上面的文章,然后鼓捣一遍,也许并不会成功,但大部分坑再来看此文会有收获
一、环境准备首先环境还是三台虚拟机,虚拟机地址如下
IP 地址节点192.168.1.167 master
192.168.1.189 node1
192.168.1.176 node2
然后每台机器安装好 docker,至于 rpm 安装包版本下面介绍
二、说点正经事 2.1、安装包从哪来官方的文档页面更新并不及时,同时他的 yum 源更新也很慢,再者…那他妈可是 Google 的服务器,能特么连上吗?以前总是在国外服务器使用 yumdownloader 下载,然后 scp 到本地,虽然能解决问题,但是蛋碎一地…最后找到了源头,如下
Kubernetes 编译的各种发行版安装包来源于 Github 上的另一个叫 release 的项目,地址 点这里,把这个项目 clone 下来,由于本人是 CentOS 用户,所以进入 rpm 目录,在安装好 docker 的机器上执行那个 docker-build.sh 脚本即可编译 rpm 包,最后会生成到当前目录的 output 目录下,截图如下
2.2、镜像从哪来对的,没错,gcr.io 就是 Google 的域名,服务器更不用提,所以在进行 kubeadm init 操作时如果不先把这些镜像 load 进去绝对会卡死不动,以下列出了所需镜像,但是版本号根据 rpm 版本不同可能略有不同,具体怎么看下面介绍
镜像名称版本号gcr.io/google_containers/kube-discovery-amd64 1.0
gcr.io/google_containers/kubedns-amd64 1.7
gcr.io/google_containers/kube-proxy-amd64 v1.4.1
gcr.io/google_containers/kube-scheduler-amd64 v1.4.1
gcr.io/google_containers/kube-controller-manager-amd64 v1.4.1
gcr.io/google_containers/kube-apiserver-amd64 v1.4.1
gcr.io/google_containers/etcd-amd64 2.2.5
gcr.io/google_containers/kube-dnsmasq-amd64 1.3
gcr.io/google_containers/exechealthz-amd64 1.1
gcr.io/google_containers/pause-amd64 3.0
这些镜像有两种办法可以获取,第一种是利用一台国外的服务器,在上面 pull 下来,然后再 save 成 tar 文件,最后 scp 到本地 load 进去;相对于第一种方式比较坑的是取决于服务器速度,每次搞起来也很蛋疼,第二种方式就是利用 docker hub 做中转,简单的说就是利用 docker hub 的自动构建功能,在 Github 中创建一个 Dockerfile,里面只需要 FROM xxxx 这些 gcr.io 的镜像即可,最后 pull 到本地,然后再 tag 一下
首先创建一个 github 项目,可以直接 fork 我的即可
其中每个 Dockerfile 只需要 FROM 一下即可
最后在 Docker Hub 上创建自动构建项目
最后要手动触发一下,然后 Docker Hub 才会开始给你编译
等待完成即可直接 pull 了
2.3、镜像版本怎么整