当越来越多的容器化应用被部署,一个可以管理编排这些容器的工具此时就显得尤为重要了。目前容器编排领域的佼佼者非kubernates莫属了, 但我一直没有来得及上手,可能是学习成本比较高吧,加上公司里面使用的rancher1.6,我就直接用rancher来作为容器编排管理的切入点了,只是我这里采用的是rancher2.15版本。 非常意外的是,以前rancher1.6版本还支持docker compose、swarm等集成,但是我从rancher2.15版本里却找不到入口了,直接是对kubernates的集成管理,这也反向突出了kubernates确有一统之势。 整体来说,rancher是相对简单的,至少从满足我的操作要求来说,依然是使用的kubernates,但是却没有那么大的复杂度,当然,这仅仅是我的猜测而已,因为我根本没有使用过原生kubernates,开始之前我们看一下配置推荐。
部署大小 | 集群(个) | 节点(个) | vCPU | 内存 |
---|---|---|---|---|
小 | 不超过5 | 最多50 | 4C | 16GB |
中 | 不超过100 | 最多500 | 8C | 32GB |
大 | 超过100 | 超过500 |
一、安装rancher(v2.x)
直接通过docker镜像来运行我们的rancher,首先,先从镜像中心下载rancher镜像,如果是1.x系列的,镜像名为rancher/server,而2.x是rancher/rancher,我们使用2.x版本的,所以,执行如下命令即可:
$ docker pull rancher/rancher
可通过docker image ls命令查看我们pull的镜像列表
查看rancher镜像详细信息
$ docker inspect rancher/rancher:latest
从中可以看出一些对我们有用的环境变量Env,以及数据卷Volumes等一般在Dockerfile构建中的参数。显而易见,rancher镜像主要有两个volume目录,默认方式是采用匿名卷的方式。接下来我们使用挂载到指定的主机目录方式来进行数据卷持久化同时启动rancher。
执行如下命令,在宿主机创建两个挂载目录
$ mkdir -p /docker_volume/rancher_home/rancher
$ mkdir -p /docker_volume/rancher_home/auditlog
接下来我们启动rancher容器
$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /docker_volume/rancher_home/rancher:/var/lib/rancher -v /docker_volume/rancher_home/auditlog:/var/log/auditlog --name rancher rancher/rancher
执行如下命令查看我们刚才启动的容器信息
$ docker container ls
到这里,我们的rancher已经在docker容器里运行起来了,接下来,我们将开始通过rancher的web界面来进行容器管理等操作。
二、Rancher可视化管理
2.1 初始配置
访问rancher的管理web页面:https://192.168.225.129
为admin账户设置默认密码并点击继续按钮后会跳转到如下页面,让你设置rancher server url,需要注意的是URL可以是IP地址或主机名,但是你要保证群集的每个节点都能够连接到它。
点击Save URL按钮后,即将跳转到rancher管理主页。
你可以通过右下角的语言选项来选择语言,这里我们选择简体中文。
2.2 创建集群
点击上面图中的添加集群按钮,进入添加集群页面
选择添加主机自建Kubernetes集群CUSTOM,输入你的集群名称,当然如果你需要配置更多,下面的成员角色、集群选项等几个tab都可展开进行详细的配置,这里我们不进行配置,直接点击下一步,进入到下一步的页面。
这里我们勾选上所有的主机角色,然后将页面中第二步里显示的命令复制到宿主机进行执行,点击右边的
图标即可复制,下面的命令是我复制出来的命令:
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.5 --server https://192.168.225.129 --token zj7gbhp4brncd7fzx664nm4dbh6rxqt5bz2xcdt6klmcwk9xsqtxqq --ca-checksum 34a2465107c418fb8f5e6851ed28f8b518d76abc84ab82b2554158aae978ec7c --etcd --controlplane –worker
执行成功后我们的浏览器中会提示如下图所示的信息[1台新主机注册成功],之后我们便可点击完成按钮。
完成按钮点击后,会跳转到集群首页,如下图所示:
这时候你可以稍作等待,这个时间可能有点长,因为这期间会在后台给我们pull多个镜像并会启动多个容器。直到集群处于Active状态(如下图)时,说明集群创建成功了。
我们可以通过docker image ls和docker container ls看看刚才集群创建过程中都为我们拉取了哪些镜像和启动了哪些容器:
2.3 部署服务
在上一步创建的集群中给我们分配了两个项目Default和System,接下来我们在Default项目中部署我们的服务,进入如下页面:
点击部署服务按钮,进入到部署页:
你可以在部署页中输入你的应用名称,可以指定部署多少个Pod(k8s中的概念),选择对应的镜像,然后配置各种参数策略,如果你想进行数据持久化可以到数据卷的tab中进行配置,如果你有参数的定义可以到环境变量的tab中进行指定,最后再启动它。这看起来似乎是更方便的让我们执行了docker run命令,前提是你得熟悉docker中各种命令的使用及含义。本篇实践记录中我们并没有实际的部署一个服务,更多的是演示了需要部署服务的时候它的入口在哪里,部署服务的页面中都有哪些参数可供我们配置。