Kubernetes 日前终于发布了稳定版 1.0, 本文将要出一个系列的文章来说述如何搭建环境,部署服务,网络分析,升级服务,备份数据,最后到达如何对Kubernetes进行二次发。docker
相信点击进来的人都应该知道Kubernetes是什么吧,关于介绍,请看: http://www.infoq.com/cn/articles/Kubernetes-system-architecture-introduction?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global 讲解的很清楚。centos
本文直接切入正题。api
本文搭建的基本环境是 Kubernetes 1.0 + CentOS 7的两台虚拟机:一台做为Master,一台做为Minion。网络
搭建过程:tcp
在裸机上安装Kubernetes须要先备好一个网络:我选择的是简单的Flannel,够用就好。
Flannel网络搭建较为简单,部署一个etcd的集群,而后build flannel,运行便可。此不是文章重点。具体可参考: http://www.slideshare.net/lorispack/using-coreos-flannel-for-docker-networking 若是遇到了问题能够咨询我,
关于Flannel在docker网络中的做用能够看这篇博客: http://my.oschina.net/xue777hua/blog/488345ide
其中 centos-master = 192.168.56.110 centos-minion = 192.168.56.111
请设置好/etc/hosts文件,或者是DNS。
master运行以下组件:etcd, kube-apiserver, kube-controller-manager, kube-scheduler, kube-proxy
minion运行以下组件:docker, kubelet, kube-proxy
固然,前提是flannel网络在两边均可以work, 固然更加的前提是安装好了docker,检验的方式是:在master和minion都分别启动一个container,在container之间互相可以ping对方便可。ui
在 master+minion上, 使用virt7-testing的repo:url
[virt7-testing] name=virt7-testing baseurl=http://cbs.centos.org/repos/virt7-testing/x86_64/os/ gpgcheck=0
在全部的机器上执行 yum -y install --enablerepo=virt7-testing kubernetes
便可。
检查etcd的版本是否为 0.4.6-7
, 若是不是,则删除etcd而且从rpm安装:spa
yum erase etcd yum install http://cbs.centos.org/kojifiles/packages/etcd/0.4.6/7.el7.centos/x86_64/etcd-0.4.6-7.el7.centos.x86_64.rpm yum -y install --enablerepo=virt7-testing kubernetes
##3.3 配置Kubernetes集群 ## 1.设置 master+minion的 /etc/kubernetes/config 为:.net
KUBE_ETCD_SERVERS="--etcd_servers=http://centos-master:4001" KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow_privileged=false"
特别是 KUBE_ETCD_SERVERS 特别重要,表示要链接的etcd的服务,Kubernetes的各类信息:例如物理机,容器的基本信息都是存储在Kubernetes上面的。
2.设置 master+minion的 /etc/kubernetes/apiserver 为(只列出了重要的几个配置):
# 须要链接的master的地址,kubelet须要链接到kube-apiserver来工做 KUBE_API_ADDRESS="--address=centos-master" KUBE_API_PORT="--port=8080" # 服务所在的ip地址范围,服务是一组pod的组合产物 KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
3.设置 minion端的 /etc/kubernetes/kubelet 文件
# kubelet绑定的ip地址 KUBELET_ADDRESS="--address=0.0.0.0" # kubelet的通讯段耨 KUBELET_PORT="--port=10250" # kubelet的hostname,到时候用kubectl get po 能够拿到的结果 KUBELET_HOSTNAME="--hostname_override=centos-minion" # api-server的通讯端口 KUBELET_API_SERVER="--api_servers=http://centos-master:8080"
4.设置iptables 8080, 10250
的tcp端口都添加到防火墙列外,另外安装flannel也要记得设置好iptables,具体见个人博客:http://my.oschina.net/xue777hua/blog/488345
#4. 启动Kubernetes集群 # 我的经验是执行下面的命令以后使用 systemctl status -l $SERVICES
检验一遍,若是有问题执行systemctl restart $SERVICES
。 ##4.1 启动master ##
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler kube-proxy; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done
##4.2 启动minion##
for SERVICES in kube-proxy kubelet docker; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done
启动完毕后,master端执行kubectl get no
,若是能看到下面的结果即为成功:
[03:01 AM root@centos-master ~]$ kubectl get no NAME LABELS STATUS centos-minion kubernetes.io/hostname=centos-minion Ready
####[参考]####