如何在Ubuntu18.04上使用Rancher2.1、Kubernetes和Docker机器设置多节点部署

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Code Org 来接受捐赠。

介绍

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

在本教程中,您将在 Ubuntu 18.04 上使用 Docker Machine 部署多节点 Rancher 2.1 服务器。 最后,您将能够通过 Rancher UI 配置新的 DigitalOcean Droplets 和容器 pod,以快速扩展或缩减您的托管环境。

先决条件

在开始本教程之前,您需要一个 DigitalOcean 帐户,此外还有以下内容:

  • 一个 DigitalOcean 个人访问令牌,您可以按照 本教程 中的说明创建它。 此令牌将允许 Rancher 对您的 DigitalOcean 帐户进行 API 访问。
  • 一个完全注册的域名,其 A 记录指向您在步骤 1 中创建的 Droplet 的 IP 地址。 您可以通过阅读 DigitalOcean 的 域和 DNS 文档 来了解如何将域指向 DigitalOcean Droplets。 在本教程中,将您的域替换为 example.com

第 1 步 — 创建一个安装了 Docker 的 Droplet

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

首先,登录您的 DigitalOcean 帐户并选择 Create Droplet。 然后,在 Choose an Image 部分下,选择 Marketplace 选项卡。 在 18.04 上选择 Docker 18.06.1~ce~3。

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

最后,添加您的 SSH 密钥,为您的 Droplet 提供主机名,然后按 Create 按钮。

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

第 2 步 - 启动和配置 Rancher

您在第 1 步中创建的 Droplet 将在 Docker 容器中运行 Rancher。 在这一步中,您将启动 Rancher 容器并确保它具有 Let's Encrypt SSL 证书,以便您可以安全地访问 Rancher 管理面板。 Let's Encrypt 是一个自动化的开源证书颁发机构,允许开发人员免费提供 90 天的 SSL 证书。

登录到您的新 Droplet:

ssh root@your_server_ip

要确保 Docker 正在运行,请输入:

docker -v

检查列出的 Docker 版本是否符合您的预期。 您可以通过运行以下命令,使用已安装的 Let's Encrypt 证书 启动 Rancher:

docker 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 获取 rancher/rancher Docker 映像 并在容器中启动 Rancher 实例,如果它意外关闭,它将自动重新启动。 为了在数据丢失的情况下轻松恢复,脚本会在主机(在 /host/rancher)上挂载一个包含 Rancher 数据的卷。

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

docker ps

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

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
7b2afed0a599        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 管理面板之前,您需要设置您的管理员密码和 Rancher 服务器 URL。 Rancher 管理界面将允许您访问所有正在运行的节点、Pod 和机密,因此使用强密码非常重要。

在 Web 浏览器中转到指向新 Droplet 的域名。 第一次访问这个地址时,Rancher 会让你设置密码:

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

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

您已准备好继续进行 Rancher 集群设置。

第 3 步 — 使用单个节点配置集群

要使用 Rancher,您需要创建一个具有至少一个 节点集群 。 集群是一组一个或多个节点。 本指南将为您提供有关Kubernetes架构的更多信息。 在本教程中,节点对应于 Rancher 将管理的 Droplets。 Pods 表示 Droplet 中一组正在运行的 Docker 容器。 每个节点可以运行多个 Pod。 使用 Rancher UI,您可以在底层 Kubernetes 环境中设置集群和节点。

到此步骤结束时,您将设置一个具有单个节点的集群,准备好运行您的第一个 pod。

在 Rancher 中,单击 Add Cluster,然后选择 DigitalOcean 作为 infrastructure provider

输入 Cluster Name 并向下滚动到 Node Pools 部分。 输入一个 Name Prefix,暂时将 Count 留在 1,然后检查 etcd, Control Plane,和工人

  • etcd 是 Kubernetes 的键值存储系统,用于保存整个环境的状态。 为了保持高可用性,您应该运行三个或五个 etcd 节点,这样如果一个节点出现故障,您的环境仍然可以管理。
  • Control Plane 检查您环境中的所有 Kubernetes 对象(例如 pod),并使用您在 Rancher 管理界面中提供的配置使它们保持最新。
  • Workers 运行实际的工作负载和监控代理,以确保您的容器保持运行和联网。 工作节点是您的 pod 将运行您部署的软件的地方。

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

Access Token输入框中输入你的DigitalOcean Personal Access Token,然后点击下一步:配置Droplet

接下来,选择与步骤 1 相同的 RegionDroplet Size。 对于 Image,请务必选择 Ubuntu 16.04.5 x64,因为当前存在 与 Rancher 和 Ubuntu 18.04 的兼容性问题。 点击 Create 保存模板。

最后,在 Add Cluster 页面单击 Create 以启动配置过程。 Rancher 需要几分钟才能完成此步骤,但完成后您将在 DigitalOcean Droplets 仪表板 中看到一个新的 Droplet。

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

第 4 步 — 部署 Web 应用程序工作负载

新集群和节点准备就绪后,您可以在 工作负载 中部署您的第一个 podKubernetes Pod 是 Kubernetes 和 Rancher 可用的最小工作单元。 工作负载描述了您一起部署的一组 Pod。 例如,您可以在单个工作负载中运行 Web 服务器的多个 pod,以确保如果一个 pod 因特定请求而变慢,其他实例可以处理传入请求。 在本节中,您将部署一个 Nginx Hello World 映像 到单个 pod。

将鼠标悬停在标题中的 Global 上,然后选择 Default。 这将带您进入 Default 项目仪表板。 在本教程中,您将专注于部署单个项目,但您还可以通过此仪表板创建多个项目以实现隔离的容器托管环境。

要开始配置您的第一个 pod,请单击 Deploy

输入 Name,然后将 nginxdemos/hello 放入 Docker Image 字段。 接下来,将容器中的端口 80 映射到主机节点上的端口 30000。 这将确保您部署的 pod 在端口 30000 的每个节点上可用。 您可以将 Protocol 设置为 TCP,并将下一个下拉列表设置为 NodePort

注意: 虽然这种在每个节点的端口上运行 pod 的方法更容易上手,但 Rancher 还包括 Ingress 以提供负载平衡和 SSL 终止以供生产使用。


要启动 pod,请滚动到底部并单击 Launch

Rancher 会带你回到默认的项目主页,几秒钟后你的 pod 就准备好了。 单击工作负载名称下方的链接 30000/tcp,Rancher 将打开一个新选项卡,其中包含有关正在运行的容器环境的信息。

您在此页面上看到的 服务器地址 和端口是内部 Docker 网络的地址,而不是您在浏览器中看到的公共 IP 地址。 这意味着 Rancher 正在按预期工作并将流量从 http://first_node_ip:30000/ 路由到工作负载。

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

第 5 步 — 扩展节点和 Pod

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

将 pod 添加到您的工作负载中将为您的应用程序提供更多运行进程。 这将使其能够处理更多流量并实现零停机部署,但每个节点只能处理有限数量的 Pod。 一旦你的所有节点都达到了它们的 pod 限制,如果你想继续扩大规模,你将不得不增加节点的数量。

另一个考虑因素是,虽然增加 pod 通常是免费的,但您必须为添加到环境中的每个节点付费。 在这一步中,您将扩展节点和 Pod,并将另一个节点添加到您的 Rancher 集群。

注意: 这部分教程将通过 API 自动配置一个新的 DigitalOcean Droplet,因此请注意,在第二个节点运行时您将产生额外费用。


通过从顶部导航栏中选择 Cluster: your-cluster-name 导航到 Rancher 安装的集群主页。 接下来单击顶部导航栏中的 Nodes

此页面显示您当前在集群中有一个正在运行的节点。 要添加更多节点,请单击 Edit Cluster,然后滚动到页面底部的 Node Pools 部分。 点击添加节点池,输入前缀,勾选Worker复选框。 点击保存更新集群。

在 2-5 分钟内,Rancher 将提供第二个 droplet,并在集群的仪表板中将节点指示为 Active。 第二个节点只是一个工作节点,这意味着它不会运行 Rancher etcd 或控制平面容器。 这允许 Worker 有更多容量来运行工作负载。

注意: etcd 节点数量不均匀将确保它们始终能够达到法定人数(或共识)。 如果您只有一个 etcd 节点,那么如果该节点出现故障,您将面临集群无法访问的风险。 在生产环境中,最好运行三个或五个 etcd 节点。


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

扩展节点可为您提供更多 Droplet 来分配工作负载,但您可能还希望在工作负载中运行每个 pod 的更多实例。 要添加更多 pod,请返回 Default 项目页面,按 hello-world 工作负载左侧的箭头,然后单击 + 两次以添加更多 pod。

Rancher 会根据可用的位置自动部署更多的 Pod 并将正在运行的容器分发到每个节点。

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

结论

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