Kubernetes是互联网巨头Google推出的一款开源的容器集群管理工具。下面分别对这里面提到的概念做点解释:
关于Kubernetes,这里及下文提到的容器都是Docker容器。Docker容器集群管理工具除了Kubernetes以外还有Swarm等。
上图给出了Kubernetes的结构简化示意图。从中可以看到:
首先,Kubernetes集群是一个主从(Master-Slave)结构,每个集群拥有一个Master节点和多个Minion节点。管理员通过将控制命令发给Master来对集群进行操作。而用户通过Internet访问到的是多个Minion提供的服务。
其次,每个Minion部署在一个物理机上。换句话说,Minion是一个抽象概念,并不是说要在物理机上安装一个叫做Minion的软件等等。每 一个Minion上可以运行多个Pod,至于到底是多少个取决于Minion的性能。Minion上面除了运行Pod之外,还有两个关键组件,一个叫 Kubelet,一个叫Proxy。
最后再通过下图对Kubernetes的构成及功能有一个一目了然的认识:
几经折腾,总算配置好了一个简单的kubernetes集群。在实验的时候,我总共实验了两种环境,一种是etcd与master 安装到同一台机器,一种是分开安装。这两种本质和方法都一样。主要参考资料是kubernetes的官方文档。下面简单介绍一下环境的搭建过程。
实验环境是一台ubuntu 14.04 64位的laptop。kubernetes搭建在虚拟机上,虚拟机使用的是cetnos7,virtualbox,使用vagrant来配置虚拟机。 Vagrantfile的书写就暂时不提了。后面会上传相关文件到github。
正题开始:
1 | yum -y install kubernetes |
---|
安装成功后,进行命令:
1 | kubectl version |
---|
会得到如下图的提示:
遇到这个呢,说明还没配置完全,接下来对master节点的关键组件进行配置。
master节点执行的服务是apiserver、scheduler 和 controller manager。当然,首先要对config进行配置。
在
1 | ```c # Comma separated list of nodes in the etcd cluser KUBE_ETCD_SERVICES="--etcd_servers=http://etcdSer:4001" |
---|
接着是apiserver
12345678 | # The address on the local server to listen toKUBE_API_ADDRESS="--address=0.0.0.0"# How the replication controller and the scheduler find the kube-apiserverKUBE_MASTER="--master=http://master:8080"# Comma separated list of nodes in the etcd clusterKUBE_ETCD_SERVERS="--etcd_servers=http://etcdSer:4001" |
---|
然后是controller-manager
12 | # Comma separated list of minionsKUBELET_ADDRESSES="--machines=minion1" |
---|
最后是scheduler, 就目前这个是不需要配置的。
在开启服务之前,最好先将所有的防火墙都关闭,如下:
12 | systemctl disable iptables-services firewalldsystemctl stop iptables-servcies firewalld |
---|
然后开启服务:
1234 | for SERVICES in kube-apiserver kube-controller-manager kube-scheduler;do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICSE |
---|
1234 | for SERVICES in kubelet kube-proxy docker;do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICSE |
---|
1 | yum -y 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 |
---|
然后同样关闭防火墙。
至此,三台机器基本配置完毕,接下来在master主机上进行测试,如下
1 | kubectl version |
---|
提示下图:
然后:
1 | kubectl get minions |
---|
提示下图:
表示环境配置成功。