2015-08-04

首先在各节点安装docker,可以参见
http://blog.onos.top/docker/2015/08/26/install-docker-1.8.1-on-ubuntu14.04/
笔者的实验环境如下:
10.0.0.27 docker3
10.0.0.26 docker2
10.0.0.25 docker1

三个节点是Openstack上的虚拟机,启动docker3配置了浮动IP和笔者的PC相连。
准备工作:三个节点的SSH无密码访问,因为三个节点是VM,docker2,docker1不能和PC直连,只能通过docker3 SSH跳转。

下载Kubernetes安装包,只需要下载tar.gz结尾即可,并上传至docker3
http://yun.baidu.com/share/link?shareid=1517923564&uk=1818218422#path=%252F01Software%252F01-Kubernetes
并下载build.sh备用。

root@docker3:~/k8s# ls
build.sh  etcd-v2.1.1-linux-amd64.tar.gz  flannel-0.5.2-linux-amd64.tar.gz kubernetes.tar.gz
root@docker3:~/k8s# tar -xvf kubernetes.tar.gz
root@docker3:~/k8s# ls
build.sh  etcd-v2.1.1-linux-amd64.tar.gz  flannel-0.5.2-linux-amd64.tar.gz  kubernetes  kubernetes.tar.gz
root@docker3:~/k8s# cd kubernetes/cluster/ubuntu/
root@docker3:~/k8s/kubernetes/cluster/ubuntu# vim build.sh

编辑build.sh,原先的代码主要是从网络下载三个tar.gz包并解压操作,笔者修改为直接使用上传的包操作。
可以用之前下载的build.sh直接覆盖解压后原先的脚本

root@docker3:~/k8s/kubernetes/cluster/ubuntu# ./build.sh
移动解压tar.gz并创建新的binaries目录
root@docker3:~/k8s/kubernetes/cluster/ubuntu/binaries# ls
kubectl  master  minion

上面的操作把需要部署的二进制文件集中到了cluster/ubuntu/binaries内,后面我们进入cluster/ubuntu目录进行节点的部署。

root@docker3:~/k8s/kubernetes/cluster/ubuntu# vim config-default.sh 
主要配置以下参数:
export nodes=${nodes:-"root@docker3 root@docker2 root@docker1"}  节点的用户名@IP,因为笔者在/etc/hosts配置了主机名和IP
所以此处用的是域名
roles=${roles:-"ai i i"}   节点的角色a:master i:minion  ai:master and minion 分别是单词的第二个字母  
export NUM_MINIONS=${NUM_MINIONS:-3}

笔者刚好是说那个节点所以,基本上只修改了nodes这个值,其它均保留。注意nodes和roles位置是一一对应的。

#cd ~/k8s/kubernetes/cluster
$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
上面的脚本会根据config-defualt的节点配置把cluster/ubuntu/binaries里面的文件拷贝到nodes配置的节点上。<br/>
如果之前配置了docker3到docker1,docker2以及自己的无密码访问就无需输入密码,负责需要输入节点密码。

以上脚本可能会执行失败,主要是docker安装配置的网桥和k8s启动docker的配置不一致。

root@docker3:~# ifconfig docker0
docker0   Link encap:Ethernet  HWaddr 02:42:e7:a0:83:09  
          inet addr:172.16.8.1  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::42:e7ff:fea0:8309/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1372  Metric:1
          RX packets:2481 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2293 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4196199 (4.1 MB)  TX bytes:1948029 (1.9 MB)
root@docker3:~# cat /etc/default/docker 
DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock --bip=172.16.8.1/24 --mtu=1372 --insecure-registry=docker3:5000"
其中Linux网桥docker0的IP需要和docker启动参数bip的地址一致。
  
  
三个节点都修改一致后,重启docker,然后在docker3查看集群情况
root@docker3:~# kubectl get nodes
NAME      LABELS                           STATUS
docker1   kubernetes.io/hostname=docker1   Ready
docker2   kubernetes.io/hostname=docker2   Ready
docker3   kubernetes.io/hostname=docker3   Ready

至此Kubernetes的基本安装部署就完成了,如果kubectl提示没有,可以从cluster/ubuntu/binaries里面拷贝至/usr/bin等某个系统目录即可,或者
配置PATH指向kubectl所在路径。下一步可以着手安装kube-ui,请参考笔者其它博文。