UnitedStack有云课堂继续!Kubernetes课程上一讲《搭建单机Kubernetes开发环境(1)》介绍了单机版Kubernetes,受到大家的热烈欢迎,这个系列的第二篇文章将介绍如何在公有云平台上搭建Kubernetes集群。Kubernetes集群简介Kubernetes是Google开源的容器调度系统,在《搭建单机Kubernetes开发环境(1)》我们介绍了单机版Kubernetes的教程,这个系列的第二篇文章将介绍如何在UOS搭建Kubernetes集群。以Docker为容器基础,以Kubernetes为调度系统,我们可以轻易在公有云上搭建基于容器的“私有云”服务。项目开源地址https://github.com/googlecloudplatform/kubernetesKubernetes架构Kubernets架构属于Master/Slave架构,我们可以部署一台Master和多台Minion,而且Master和Minion可以部署在同一台服务器上。Master会启动kube-apiserver接受客户端的API请求,启动kube-controller-manager来管理这个集群的ReplicationController,还要启动kube-scheduler来实现容器的调度算法。而Minion只需要启动kubelet来管理实际运行的Docker容器,还有kube-proxy来管理容器内部与外部的网络请求。整个Kubernetes集群依赖Etcd来管理元数据,启动Kubernetes服务前必须先启动Etcd服务。初始化虚拟机集群为了有好的实验环境,我们将在UOS上搭建Kubernetes集群,任何人在UOS上也能轻易地搭建自己的私有云服务。我们规划部署一台Master与三台Minion,其中Master与Minion共享机器,因此一共需要创建三台云主机。这里选择Ubuntu 14.04镜像,注意请不要选最新的15.04版本因为官方的安装脚本还没有很好地支持Systemd,三台云主机都选择Ubuntu 14.04可以降低我们的部署成本。由于三台虚拟机需要网络互通,我们可以新建一个私有网络和路由器,然后路由器绑定一个公网IP,三台云主机加入这个私有网络即刻。这样三台云主机在内网中可以互通,也可以通过路由器连到公网,最后看到的网络拓扑应该是类似这样的,为了更方便控制Master节点我也为kubernetes1虚拟机绑定一个新的公网IP。我们通过UOS的VNC登录或者通过SSH远程登录就可以安装部署整个Kubernetes集群了。部署Kubernetes集群部署Kubernetes前需要安装Docker和bridge-utils工具,最好确保Docker版本在1.2或以上,而且机器之间可以通过SSH登录。除此以外服务器并不需要提前安装Etcd、Kubernetes或Flannel,通过Kubernetes的安装脚本可以一键安装。安装第一步是下载Kubernetes源代码,git clonehttps://github.com/GoogleCloudPlatform/kubernetes.git第二步是进入kubernetes/cluster/ubuntu目录,执行build.sh脚本,这会下载所有二进制文件第三步是修改cluster/ubuntu/config-default.sh配置文件,我们只需要将nodes的值修改为我们的三台服务器的地址,网络在UOS中子网是相互隔离的因此不需要修改。第四步是执行命令“KUBERNETES_PROVIDER=ubuntu ./kube-up.sh”,脚本会将所有必须的二进制文件拷贝到相应的机器并且启动服务。我们可以通过kubectl命令测试Kubernetes集群状态。OK,Kubernetes集群状态符合预期,这样我们向集群部署Docker应用,Kubernetes会根据机器资源使用情况调度容器,从而屏蔽了底层的硬件资源。部署Docker应用和单机版Kubernetes一样,我们可以使用kubectl客户端来部署Pod或ReplicationController,注意使用前先下载Pause镜像避免已知的GFW问题。docker pull docker.io/kubernetes/pausedocker tag docker.io/kubernetes/pause gcr.io/google_containers/pause:0.8.0我们以部署Nginx服务为例,Pod描述文件可以在这里找到https://raw.githubusercontent.com/tobegit3hub/kubernetes_docker/master/nginx_pod.json我们也可以通过Google官网提供的guestbook项目部署更复杂的ReplicationController和Service,项目地址https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/guestbook总结使用UOS搭建Kubernetes总体而言非常顺利,IaaS环境和Docker容器提供了Repeatable的运行环境,由于篇幅有限本文没有列举所有操作细节,但搭建过程已在UOS公有云测试过,如有问题欢迎留言交流。Docker、Kubernetes和CoreOS等技术的出现为基于容器的私有云提供了新的思路,UnitedStack作为国内的基础服务提供商,也密切关注容器的发展,为容器私有云提供基础支持。如果对容器服务感兴趣,可以加入我们的企业容器服务交流群:462294386关于作者:陈迪豪,UnitedStack有云的基础架构工程师,目前专注于Docker、OpenStack社区。Docker监控管理工具Seagull项目作者,开源电子书《理解Linux进程》作者。