![15分钟!在Azure上部署Rancher管理Kubernetes](https://static001.infoq.cn/resource/image/95/a5/9535a5257fcf0758fd9ae9765b4e08a5.png)
![](https://static001.infoq.cn/resource/image/20/b8/2022fb8e5361791b05939de840197bb8.png)
Rancher 是一个开源的 Kubernetes 多集群操作和工作负载管理的解决方案。简而言之,您可以使用 Rancher 来统一部署和管理公有云(如 Azure、AWS、GCP 等)上的 Kubernetes 集群,它们可以是公有云托管的 Kubernetes 如 GCE、EKS、AKS,也可以是用户自己创建的集群。Rancher 还集成了许多第三方身份验证解决方案,诸如 Active Directory、Azure Active Directory、Github,还有 Splunk、Elasticsearch 或 Syslog 端点等日志解决方案。
关于通过 Terraform 在笔记本电脑或 AWS 上运行 Rancher,我找到了不少现成的的指令和设置脚本可以供用户直接使用,却发现关于 Azure + Rancher 的相关内容比较少。
我自己尝试后,成功地让我的 Rancher 环境在 Azure 上运行了。但我想,如果有一些准备好了的脚本或模板,可以让大家更快速地在 Azure 上启动 Rancher,那就更不错。我找到了一些其他人贡献的 ARM 模板来驱动 Rancher,但是他们部署的是旧版本的 Rancher,并且在模板中不清楚如何更新,以部署最新版本的 Rancher。于是我决定构建一些可用于在 Azure 上快速部署 Rancher、并将一个 Kubernetes 主机添加到 Rancher 的 ARM 模板。在我构建的这个 ARM 模板中,它将始终从 Docker Hub 中拉取 Rancher 容器,因此它能够保持始终部署了最新版本的 Rancher。在这篇文章中,我将详细说明如何让你的 Rancher 在 15 分钟内启动并运行。
首先,您可以在我的 Github 上找到 ARM 模板:
https://github.com/Buchatech/DeployRanchertoAzure。
这个镜像库中包含了用于部署 Rancher 的 ARM 模板和用于 Kubernetes 的主机 VM。注意:我提供的这些模板可以供大家学习使用,但我不建议将其用于生产。
在 repo 中,名为 RancherNode.JSON 的 ARM 模板#1 将部署一个带 Docker 的 Ubuntu VM 以及最新版的 Rancher(https://hub.docker.com/r/rancher/rancher)。名为 RancherHost.JSON 的 ARM 模板#2 将部署带有 Docker 的 Ubuntu VM,用作为 Rancher 中的 Kubernetes 主机。
节点部署
通过“模版部署”或其他部署方法,将 RancherNode.JSON 的 ARM 模板部署到 Azure 订阅中。系统将提示您输入下面这张屏幕截图中显示的信息:
![](https://static001.infoq.cn/resource/image/55/8f/55575ecb331d0b14495565e1e2328f8f.png)
主机部署
通过“模板部署”或其他部署方法,将 RancherHost.JSON ARM 模板部署到 Azure 订阅中。需要注意的是,这个操作应该将 Rancher Host ARM 模版部署到和 Rancher Node ARM 模板的同一个资源组中。系统将提示您输入下面这张屏幕截图中显示的信息:
![](https://static001.infoq.cn/resource/image/01/e2/0133ef58a3a1abae7f79dfd4713d68e2.png)
部署 Rancher Node 和 Rancher Host ARM 模板后,就可以在新资源组中看到以下资源了:
![](https://static001.infoq.cn/resource/image/1b/9e/1b6d9901828427047164dabf7ea29f9e.png)
接下来,在 Web 浏览器中,打开 Rancher 门户。URL 是 Rancher Node VM 的 DNS 名称。如果你不知道 DNS 名称是什么,可以单击概述页面上 Azure 门户中的 Rancher Node VM。以下是 URL 的示例:
https://ranchernode.centralus.cloudapp.azure.com
Rancher 门户将提示您设置密码,就如下图所示:
![](https://static001.infoq.cn/resource/image/f0/80/f0d7988d6a53acf4dc6c1498ab804180.png)
设置好密码后,Rancher 门户将提示您输入正确的 Rancher Server URL。这将自动成为 Rancher Node VM DNS 名称。然后单击“保存 URL”。
![](https://static001.infoq.cn/resource/image/70/1c/70524d06075416d741a2a1f5ad48591c.png)
保存之后,你就会登录到 Rancher 门户,然后看到集群页面。现在你可以向 Rancher 添加新的 Kubernetes 集群了。在这篇文章中,我将展示如何将集群添加到 Rancher Host VM。完成所有这一切后,Rancher 会成功地将 Kubernetes 部署到 Rancher Host VM。你也可以添加一个托管的 Kubernetes,例如 AKS,但这篇文章中我们暂时不演示这部分内容了。
单击“添加集群”
![](https://static001.infoq.cn/resource/image/60/dd/6097ebf6c03f76898b06f4585a251edd.png)
在“从我自己的现有节点”下,单击“自定义”,为集群命名,然后单击“下一步”。
![](https://static001.infoq.cn/resource/image/63/84/63281cee894fff6d1d609f620a053484.png)
接下来,检查节点选项的所有可选框,因为所有角色都将在单个 Kubernetes 集群上。复制页面底部显示的代码,单击“完成”,并在 Rancher 主机上运行代码。
![](https://static001.infoq.cn/resource/image/96/3c/96ef6f8e5ab52b1fe84f66ec2782213c.png)
要在 Rancher 主机上运行代码,您需要 SSH 并从那里运行它。请按照下列步骤操作:
在 Azure 门户中,在资源组中点击 Rancher Host VM。
在 Overview 页面上,单击 Connect。
稍后会弹出一个“连接到虚拟机”的屏幕,复制屏幕上的“ssh ranchuser@rancherhost.centralus.cloudapp.azure.com”。
通过 VS 代码,打开 Azure 云 shell 的终端或类似终端的终端,然后输入刚刚复制的“ssh ranchuser@rancherhost.centralus.cloudapp.azure.com”。
![](https://static001.infoq.cn/resource/image/9b/da/9b61f568cfee085fb8baf2284164c0da.png)
运行代码将如下所示:
![](https://static001.infoq.cn/resource/image/60/b8/607abae5b36ec3c40350d631c903adb8.png)
完成后,运行 Docker PS,以查看 Rancher agent 容器是否正在运行:
![](https://static001.infoq.cn/resource/image/0b/62/0bb9112060d74842af50deddf2a1b862.png)
在集群下的 Rancher 门户中,可以看到 Rancher 主机正在配置中:
![](https://static001.infoq.cn/resource/image/72/5f/72b9d2a4b4842caebc57f7c76d22c75f.png)
当 Kubernetes 部署完成后,状态将发生变化:
![](https://static001.infoq.cn/resource/image/31/a4/31e1baf932d52689ba076bda7d1871a4.png)
完成配置后,Kubernetes 集群将处于“活跃”状态了:
![](https://static001.infoq.cn/resource/image/da/38/da1521437416953629cb972cf7d97838.png)
现在我们可以看到这个新的 Kubernetes 集群的大量信息了。我们甚至可以从此处启动 Kubectl 并开始运行命令!你可以花点时间到处点击试试,看看有哪些是你使用 Kubernetes 时熟悉的东西。可以说 Rancher 是真正大幅简化了 Kubernetes 的管理体验,Cool!
![](https://static001.infoq.cn/resource/image/0f/65/0fc379679d96ad5ee8fe809ae254bb65.png)
如果要添加更多节点或再次需要配置代码,只需单击我下图框出的省略号按钮,然后进行编辑即可:
![](https://static001.infoq.cn/resource/image/95/8b/95354602e95cc84935529ced5936798b.png)
在“编辑集群”中,您可以更改集群名称、获取和更改设置、以及复制代码以将更多 VM 添加到集群中:
![](https://static001.infoq.cn/resource/image/14/5a/146defcbd90eff6a793f1cc53159275a.png)
本文到此结束,欢迎在作者博客中了解更多有关 Azure、Kubernetes、Rancher 的技术文章:
作者简介
Steve Buchanan,Avanade 云转型与 DevOps 团队主管。近 20 年的 IT 从业经验,出版过多本云和数据中心管理的技术书籍。从 2012 年起至今,Steve 连续 7 年成为微软 MVP,并在 2017 年获得过微软“25 ITSM Experts to Watch in 2017”和“IT Unity Community Champ”。
评论