> 文档中心 > 【云原生 • DevOps】一文掌握容器管理工具 Rancher

【云原生 • DevOps】一文掌握容器管理工具 Rancher


a495ba886213440a9c1c1503c5fe87ae.jpeg

本章学习目标:

  • 掌握容器管理工具 Rancher 的安装与使用;
  • 掌握基于 Rancher 的应用部署、扩容缩容操作。

目录

一、容器管理工具 Rancher 介绍

二、Rancher 的安装

三、Rancher 的初始化

1. 添加环境

2. 添加主机

3. 添加应用

四、应用部署

1. Mysql 部署

2. RabbitMQ 部署

3. Redis 部署

四、扩容与缩容

1. 扩容

2. 缩容

五、负载均衡器


一、容器管理工具 Rancher 介绍

Rancher 是一个开源的企业级全栈化容器部署及管理平台,其实就是一个 Docker 的图形化管理界面。它为容器提供基础架构服务,可以让 CNI 兼容的网络服务、存储服务、主机管理、负载均衡、防火墙等服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。除此之外它还提供了诸如负载均衡、弹性扩容等高级功能,也是一个比较常用的运维工具。

提示:由于 Rancher 是 Docker 的界面化操作,比如应用部署等操作其实都是重复的,为避免端口互相冲突,所以建议在一个新的系统镜像中进行操作。

二、Rancher 的安装

第一步:下载 Rancher 镜像;

docker pull rancher/server

第二步:创建 Rancher 容器;

docker run -di --name=rancher -p 9090:8080 rancher/server

第三步:本地浏览器输入 虚拟机/服务器 IP:端口号 进行访问,看到如下界面即 Rancher 安装成功;

如果访问不了看看自己创建的容器是否已启动。

82dda71afcbf4c928fe389308807fe9b.png

初始界面为英文界面,可在右下角切换中文;

c907367ec7fb4ff99b72e70eb5d5dc93.png

三、Rancher 的初始化

1. 添加环境

Rancher 支持将资源分组归属到多个环境,每个环境都有着自己独立的基础架构资源及服务,并由一个或者多个用户、团队/组织管理。比如说:你可以创建独立的开发、测试及生产环境并确保这些环境之间的安全隔离,将开发环境的访问权限授予全部人员,而测试环境仅允许某个小的团队访问。

点击 “Default” --> “环境管理”,进入环境界面;

d9e6722d53b745088384fa5e79dbd7aa.png

点击“添加环境”,输入环境名称和描述即可创建;

fc570a87d6564350ae32771ad3c4270e.png

如下是我创建的开发、生产、测试环境,每个环境完全分离,在环境上的配置也不会互相影响;

00aa1a69fb6749a0a463057d06dc4e4c.png

此时选择 “Default” 可以进行环境间的切换;

c67d543a59b74e08b4b7fb7b25586b1b.png

2. 添加主机

选择 “基础架构” --> “主机”,点击添加主机;

4ea5040158d44cac81cb19434978f07f.png

默认选择的是我们的虚拟机/服务器的站点地址,点击保存;

0f04a612fb774818b08d876dca4a09d8.png

之后会进入如下界面;

注意第五步中的代码,该代码表示创建一个 Rancher 代理容器,在需要添加 Rancher 服务的虚拟机/服务器上运行此命令,则虚拟机/服务器便会和 Rancher 服务建立联系。

7ab3a5b6189e42b9962f12ffbd4a017d.png

复制该代码,在需要连接 Rancher 服务的虚拟机/服务器上运行,运行成功如下;

aeff652f1de34b71afddee0b01f6690d.png

此时在 Rancher 的主机界面会增加一个主机;

576e834018334187830d185a1c9838d8.png

3. 添加应用

此处的应用其实就是指我们的某个项目,而某个项目下面又包含着多个服务,换句话说应用其实就是服务的分组;

点击 “应用” --> “全部/用户”,然后点击 “添加应用” 按钮;

563a8edf8a0f459cb42123683772d20c.png

输入名称和描述后点击 “创建”;

fe6251c034fc4823aeae11bb08b4dc4d.png

成功后如下;

94216f67a0c845409786fce55eac81b1.png

应用创建成功之后,就可以在应用上部署服务了,也就是应用部署。

四、应用部署

其实在 Rancher 中部署应用与传统方式(命令行操作)最大的区别就在于在这里所有操作都是在图形界面中进行的,更为直观,请看以下部署演示。

1. Mysql 部署

首先下载镜像 centos/mysql-57-centos7 增加数据库服务;

[root@192 ~]# docker pull centos/mysql-57-centos7Using default tag: latestlatest: Pulling from centos/mysql-57-centos7d8d02d457314: Pull complete a11069b6e245: Pull complete 596303fb1aa3: Pull complete a29499e779a7: Pull complete 17d1a52c2e00: Pull complete ed24591227fe: Pull complete de0ad46e3ed9: Pull complete c62e4a984a9c: Pull complete 01d54c6bda68: Pull complete Digest: sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764Status: Downloaded newer image for centos/mysql-57-centos7:latestdocker.io/centos/mysql-57-centos7:latest[root@192 ~]# 

然后在我们创建好的应用中,点击 “添加服务”;

b5d11e3c835a468c945c99d4bd2b6cc7.png

此时就可以以图形化界面的方式来部署 MySQL 服务了,进行相关的设置;

6975203b84c74ef99095ae9d690cb588.png

c969622c0e6941d3ab36a42e57c25d03.png

点击 “创建”,显示 “Active” 则说明部署成功;

19d79e26abbd46b2930659f5e12e3596.png

2. RabbitMQ 部署

下载镜像 rabbitmq:management;

[root@192 ~]# docker pull rabbitmq:managementmanagement: Pulling from library/rabbitmq7b1a6ab2e44d: Pull complete 37f453d83d8f: Pull complete e64e769bc4fd: Pull complete c288a913222f: Pull complete 12addf9c8bf9: Pull complete eaeb088e057d: Pull complete b63d48599313: Pull complete 05c99d3d2a57: Pull complete 43665bfbc3f9: Pull complete f14c7d7911b1: Pull complete Digest: sha256:4c4b66ad5ec40b2c27943b9804d307bf31c17c8537cd0cd107236200a9cd2814Status: Downloaded newer image for rabbitmq:managementdocker.io/library/rabbitmq:management[root@192 ~]# 

添加服务,设置相关属性及端口映射(包含端口 5671 5672 4369 15671 15672 25672);

9f82a98fe47a4df19967410c21f3c363.png

部署成功如下;

c112155d677b45819a57b373e0a50f0a.png

在浏览器访问 虚拟机/服务器 IP:15672;

8002f42eca624fe3b7f253b5b70dacba.png

RabbitMQ 安装成功。

3. Redis 部署

下载镜像 redis;

[root@192 ~]# docker pull redisUsing default tag: latestlatest: Pulling from library/redisa2abf6c4d29d: Pull complete c7a4e4382001: Pull complete 4044b9ba67c9: Pull complete c8388a79482f: Pull complete 413c8bb60be2: Pull complete 1abfd3011519: Pull complete Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339Status: Downloaded newer image for redis:latestdocker.io/library/redis:latest[root@192 ~]# 

添加服务,设置相关属性及端口映射(端口 6379);

17f08e830b6842a7b8c7a385b0da6c14.png

创建成功如下;

d2cdcead6d3a408bb0e3527259f0247c.png

打开本地的 Redis 终端,输入 redis-cli -h 虚拟机/服务器 IP 进行连接,如下可正常运行,redis 部署成功;

2faad25ce27a4d8d9244c5b908e06839.png

四、扩容与缩容

扩容就是扩充容器的数量,缩容反之。在实际的运维过程中,容器需要为网站提供一个后端的支撑,当网站访问比较高的时候就需要用到更多的容器来形成容器的微服务集群,以减轻承载压力。若访问量不是那么高,则可以缩容释放出更多的空间出来。

1. 扩容

选择应用,添加新的服务 base-service,但不设置端口映射,创建完成后默认为一个容器;

6f1bf2929dac4cb8b51e28267d5fb89f.png

此时点击 “API” --> “WebHooks”;

44bc67e84a344fe2aab4e4efd2a96f65.png

进入添加接收器界面,选择添加接收器,如下;

02114fec076c4fe4ba9dd436c619942e.png

选择参数之后,点击创建,此时就为服务创建了接收器(扩缩容服务);

1e7edef9cb874b0fa3b806a6b50caa85.png

其实接收器就是配置了一个 URL,这个 URL 主要用 post 方式触发,也就是一个接口,使得某一个软件能够通过这个地址来调用 Rancher,Rancher 接收之后触发,然后进行相应的扩缩容操作。

此时回到服务页面,可以看到服务的容器数量为 1;

4331ec5248f843a590f99f8d3fa0845f.png

复制接收器触发地址(接口),使用本地接口测试工具调用该地址(我使用的是 ApiPost)点击发送;

d7d6a0a913d848bf9daaa978452fa6d1.png

此时服务的容器数量便会自动增加。

2. 缩容

缩容操作与扩容相同,此处不再赘述。

五、负载均衡器

当使用扩容和缩容服务时,我们是不设置端口映射的,那么就没办法直接访问服务,为了解决此问题,Rancher 提供了负载均衡器。当想要访问没有端口映射的服务时,就需要为该服务添加负载均衡。

点击 “添加服务” --> “添加负载均衡”;

1e85985c0fd4457f8ba1b3d100292b3c.png

输入端口以及目标等信息,进行创建;此时就可以通过负载均衡器的特殊服务来访问我们的服务了。