Ubuntu下搭建Kubernetes集群

title: Ubuntu下搭建Kubernetes集群
date: 2015-12-15 21:47:59
tags: [kubernetes,docker]

categories: Kubernetes

Kubernetes是Google开源的容器集群管理系统。它构建Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。

本文作为Kubernetes分类下的第一篇文章,首先介绍怎么在Ubuntu环境下搭建Kubernetes集群,作为开发和测试环境。

集群节点:

  • node1:10.203.2.239 master and minion 物理机
  • node2:10.203.2.233 minion Vbox中的虚拟机
  • node3:10.203.2.243 minion Vbox中的虚拟机

如上面的信息,此集群共有三个节点,其中我的笔记本本机(IP为10.203.2.239)既作为Master节点又作为Minion节点,运行Ubuntu14.04LTS版本系统。后面的两个是我在本机中使用Virtualbox创建的虚拟机,运行Ubuntu server:14.04.2版本系统。虚拟机使用桥接网络所以可以分配到与笔记本本机在同一网段的IP,且三个机器之间可以互相访问。

接下来配置Master到两个Minion的SSH无密码访问,这里我参考了Linux/UNIX下使用ssh-keygen设置SSH无密码登录,可以参考这个教程配置,很简单。其中执行ssh-keygen -t rsa命令时可以一直按回车键跳过输入的部分。注意,配置的登陆用户是root用户

配置完无密码登陆后,我们在三个机器上安装Docker,在这里我使用了Daocloud提供的安装方式,由于是国内的服务器,安装很块,链接为:在Linux上安装Docker。这里需要提示的是,如果你使用桥接模式后虚拟机无法上网(Ping不通www.baidu.com,我遇到了这个问题,目前还没解决,但依然可以建立集群,尚不知对Kubernetes集群的影响),但宿主机可以上网,你可以在设置中将网络模式改为NAT模式,安装完Docker后再改回桥接模式(NAT模式下,宿主机无法访问虚拟机,不能建立集群).

Note:从这里开始请使用root用于登陆本机,即执行su -(注意后面的横线不能少)

Docker也安装完成后,我们就可以搭建Kubernetes集群了,首先下载源码,在这里还有一个问题,之前一直使用github官方的Kubernetes源码,但一直搭建不好,出了各种问题,之后看到了国内的一个库,应该和官方是一样的,而且速度快多了,地址是Kubernetes,大家可以使用这个库。

源码下载好后,需要修改配置文件:

root# cd kubernetes/cluster/ubuntu
root# vim config-default.sh

要修改三个地方:
1. export nodes=${nodes:-"[email protected] [email protected] [email protected]"} 这里是三个节点,有几个就配几个
2. role=${role:-"ai i i"}这里的值与上面的对应,ai表示既是master又是minion,i表示minion节点。
3. export NUM_MINIONS=${NUM_MINIONS:-3}这里的数字对应节点的个数

然后默认下载的二进制执行文件的版本比较老,我们修改以下,使用比较新的版本:
还是在kubernetes/cluster/ubuntu文件夹下,打开build.sh文件,修改如下几行:

FLANNEL_VERSION=${FLANNEL_VERSION:-"0.5.3"}
ETCD_VERSION=${ETCD_VERSION:-"2.2.1"}
KUBE_VERSION=${KUBE_VERSION:-"1.1.2"}

保存上面两个文件。

下面就开始部署了,kubernetes的部署挺傻瓜的,首先进入kubernetes/cluster文件夹下,执行如下命令:

root# KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

其中KUBERNETES_PROVIDER指明了在Ubuntu上部署集群。

运行此命令后,kubernetes首先根据指定的版本下载flanneldetcdkubernetes的可执行文件,由于国内网速较慢,可能需要一些时间,此后的工作会自动完成。

执行成功后,另外打开一个控制台,使用kubectl get nodes测试是否搭建成功:

chy@chy-station:~$ kubectl get nodes
NAME           LABELS                                STATUS    AGE
10.203.2.233   kubernetes.io/hostname=10.203.2.233   Ready     1h
10.203.2.239   kubernetes.io/hostname=10.203.2.239   Ready     1h
10.203.2.243   kubernetes.io/hostname=10.203.2.243   Ready     1h

以上信息表示集群搭建成功。

关闭集群是在kubernetes/cluster文件夹下执行

root# KUBERNETES_PROVIDER=ubuntu ./kube-down.sh

你可能感兴趣的:(Ubuntu下搭建Kubernetes集群)