如何在 Ubuntu 18.04 上使用 Rancher 2.1、Kubernetes 和 Docker Machine 设置多节点部署

作者选择了 Code Org以作为 Write for Donations计划的一部分获得捐赠。

介绍

Rancher是一个流行的开源集装箱管理平台。Rancher 2.X于2018年初发布,运行在 Kubernetes上,并包含了多集群管理和内置的CI管道等新工具。除了已经在Kubernetes中提供的增强的安全性、可扩展性和简单部署工具外,Rancher还提供了一个图形化用户界面,使管理集装箱更容易。通过Rancher的GUI,用户可以安全地管理秘密,处理角色和权限,扩展节点和子,并设置负载平衡器和体积,而无需命令行工具或复杂的YAML文件。

在本教程中,您将使用Docker Machine在Ubuntu 18.04上部署多节点的Rancher 2.1服务器,到最后,您将能够通过Rancher UI提供新的DigitalOcean滴滴和容器潜,以便快速扩展或降低您的托管环境。

<$>[注] 注: 截至 2022 年 12 月 15 日,DigitalOcean 将不再支持通过控制面板或 API 创建新的 RancherOS 滴滴,但是,在 2022 年 12 月 15 日之前创建的任何现有的 RancherOS 滴滴将仍然可用,尽管产品出现了变化。

前提条件

在你开始本教程之前,你需要一个DigitalOcean帐户(https://cloud.digitalocean.com/registrations/new),除了以下内容:

步骤 1 — 使用安装的 Docker 创建一个 Droplet

要启动和配置 Rancher,您需要创建一个新的Droplet,安装了Docker,您可以使用DigitalOcean的Docker图像。

首先,登录您的 DigitalOcean 帐户并选择 Create Droplet. 然后,在 Choose an Image 部分中,选择 Marketplace 选项卡。

Choose the Docker 18.06 image from the One-click Apps menu

接下来,选择不小于 2GB的Droplet,并为您的Droplet选择数据中心区域。

最后,添加您的 SSH 密钥,为您的 Droplet 提供主机名称,并按下 ** 创建** 按钮。

服务器提供和Docker下载需要几分钟,一旦Droplet成功部署,您就可以在新的Docker容器中启动Rancher。

步骤 2 – 启动和配置Rancher

您在步骤 1 中创建的 Droplet 将在 Docker 容器中运行 Rancher. 在此步骤中,您将启动 Rancher 容器并确保它具有 Let's Encrypt SSL 证书,以便您可以安全访问 Rancher 管理面板。

登入你的新片段:

1ssh root@your_server_ip

要确保 Docker 运行,请输入:

1docker -v

您可以使用 Let's Encrypt 证书已安装启动 Rancher,运行以下命令:

1docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /host/rancher:/var/lib/rancher rancher/rancher --acme-domain example.com

「--acme-domain」选项安装了Let's Encrypt的SSL证书,以确保您的Rancher管理员通过HTTPS服务。本脚本还指示Droplet获取Docker图像(https://hub.docker.com/r/rancher/rancher/),并在容器中启动Rancher实例,如果它偶然失效,它将自动重新启动。

要查看所有运行容器,请输入:

1docker ps

您将看到类似于以下的输出(具有独特的容器 ID 和名称):

1[secondary_label Output]
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37b2afed0a599 rancher/rancher     "entrypoint.sh"     12 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp wizardly_fermat

如果容器不运行,您可以再次执行docker run命令。

在您可以访问 Rancher 管理面板之前,您需要设置您的 admin 密码和 Rancher 服务器 URL。

在您的网页浏览器中,转到指向您的新Droplet的域名. 您第一次访问此地址时,Rancher将允许您设置密码:

Set your Rancher password using the prompt

当您被问及您的 Rancher 服务器 URL时,请使用指向您的 Droplet 的域名。

您现在已经完成了 Rancher 服务器的设置,您将看到 Rancher 管理员主屏幕:

The Rancher admin home screen

你已经准备好继续到Rancher集群设置。

步骤 3 – 配置一个单一节点的集群

要使用Rancher,你需要创建一个 cluster 至少有一个 node。一个集群是由一个或多个节点组成的组合。 本指南将为你提供有关Kubernetes架构的更多信息。 在本教程中,节点与Rancher将管理的Dropplets相匹配。 _Pods_代表Droplet内运行Docker容器的组合。每个节点可以运行多个Pod。 使用Rancher UI,你可以在底层的Kubernetes环境中设置集群和节点。

到此步骤结束时,您将建立一个集群,其中有一个单个节点准备运行您的第一个Pod。

在 Rancher 中,单击添加集群并选择DigitalOcean作为基础设施提供商

Select DigitalOcean from the listed infrastructure providers

输入一个 ** 群集名称**,然后向下滚动到 ** 节点池的部分。输入一个 ** 名称前缀,现在留下 ** Count1,然后检查 etcd, ** 控制飞机和 ** 工作者**。

  • **etcd**是Kubernetes的关键价值存储系统,以保持整个环境的状态。为了保持高可用性,您应该运行三个或五个 etcd节点,以便如果一个节点下降,您的环境仍然可以管理。
  • **Control Plane**检查您的环境中的所有Kubernetes对象 - 如 pods - 并将它们与您在Rancher管理界面中提供的配置保持最新。

Create a Node Pool with a single Node

在创建集群之前,请单击 ** 添加节点模板** 来配置新节点的特定选项。

Access Token输入框中输入您的DigitalOcean Personal Access Token,然后单击Next: Configure Droplet**

接下来,选择相同的 区域Droplet 尺寸作为步骤 1. 对于 图像,请确保选择 Ubuntu 16.04.5 x64,因为目前有 与Rancher 和 Ubuntu 18.04 的兼容性问题

最后,点击 CreateAdd Cluster 页面上启动提供过程. Rancher 将需要几分钟才能完成此步骤,但一旦完成,您将在 DigitalOcean Droplets 仪表板中看到一个新的 Droplet。

在此步骤中,您创建了一个新的集群和节点,您将在下一节部署工作负载。

步骤 4 – 部署 Web 应用程序工作负载

一旦新集群和节点准备好了,您可以将第一个 pod 部署到一个 workload 中。 A Kubernetes Pod是 Kubernetes 和通过扩展 Rancher 可用的最小的工作单位。 Workloads 描述了您一起部署的单一组 pods。例如,您可以在单个工作负载中运行 Web 服务器的多个 pods,以确保如果一个 pod 以特定请求减速,其他实例可以处理到来的请求。

在标题中跳过 Global,选择 Default. 这将带您到 Default项目仪表板. 在本教程中,您将专注于部署一个项目,但从这个仪表板中,您还可以创建多个项目以实现孤立的集装箱托管环境。

要开始配置你的第一个pod,点击 部署

输入一个 Name,然后将nginxdemos/hello放入 Docker Image字段。接下来,将容器中的端口 80地图到端口 30000在主机节点上。这将确保您部署的 pods 在每个节点上在端口 30000 上可用。

<$>[注] **注:**虽然在每个节点的端口上运行pod的这种方法更容易启动,但Rancher还包括 Ingress来提供负载平衡和SSL终止用于生产使用。

The input form for deploying a Workload

要启动pod,向下滚动,然后点击 Launch

Rancher 将带您回到默认项目主页,在几秒钟内您的 Pod 将准备好. 点击工作负载名称下面的链接 30000/tcp 然后 Rancher 将打开一个新的标签,包含有关正在运行的容器环境的信息。

Server address, Server name, and other output from the running NGINX container

您在本页面看到的 服务器地址和端口是内部 Docker 网络的地址,而不是您在浏览器中看到的公共 IP 地址。

在此时,您已成功地部署了您的第一个一个Pod的工作负载到单个Rancher节点,接下来,您将看到如何扩展您的Rancher环境。

步骤 5 – 扩展节点和支架

Rancher为您提供了两种方式来扩展您的托管资源:增加工作负载中的Pod数量或增加集群中的节点数量。

将 pods 添加到您的工作负荷将使您的应用程序运行更多流程,这将使其能够处理更多的流量,并允许零停机部署,但每个节点只能处理有限数量的 pods。

另一个考虑是,虽然增加pods通常是免费的,但您将不得不为您添加到您的环境的每个节点支付费用. 在此步骤中,您将扩展两个节点和pods,并将另一个节点添加到您的Rancher集群中。

<$>[注] **注: **本教程的本部分将通过API自动提供新的DigitalOcean Droplet,因此请注意,在第二个节点运行时,您将面临额外的费用。

通过从顶部导航栏中选择 Cluster: your-cluster-name,前往您的 Rancher 安装的集群主页。

Use the top navbar dropdown to select your Cluster

此页面显示您目前在集群中有一个运行节点。 若要添加更多节点,请单击 Edit Cluster,然后滚动到页面底部的 Node Pools部分。 单击 Add Node Pool,输入前缀,然后检查 Worker框。

Add a Node Pool as a Worker only

在 2 至 5 分钟内,Rancher 将提供第二个滴滴,并在集群仪表板中将节点标记为 Active。第二个节点只是一个工人,这意味着它不会运行 Rancher etcd 或 Control Plane 容器。

<$>[注] 注: 拥有不等式数量的 etcd 节点将确保它们总能达到定数(或共识)。如果您只有一个 etcd 节点,那么如果一个节点下降,则您的群集可能会无法到达。

当第二个节点准备好时,您将能够通过浏览器中导航到 http://second_node_ip:30000/ 来查看您在此节点上部署的工作负载。

将节点扩展为您提供更多的 Droplets 来分配工作负载,但您可能还希望在工作负载中运行每个 pod 的更多实例。

Running three Hello World Pods in a Workload

Rancher 会自动部署更多的 pods,并根据可用性的位置将运行容器分配给每个节点。

您现在可以扩展节点和 pods 以满足应用程序的要求。

结论

您现在已经设置了使用Rancher 2.1在Ubuntu 18.04上的多节点部署,并在工作负载中扩展到两个运行节点和多个节点,您可以使用此策略来托管和扩展您在应用程序中需要运行的任何类型的Docker容器,并使用Rancher的仪表板和警报,以帮助您最大限度地提高每个集群中的工作负载和节点的性能。

Published At
Categories with 技术
comments powered by Disqus