本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

1.设置基础设施和私有注册表

在本节中,您将在隔离的环境中为 Rancher 管理服务器部署基础设施。您还将设置必须可供 Rancher 节点使用的私有容器镜像注册表。

隔离的环境是指 Rancher 服务器离线安装或位于防火墙后面的环境。

基础设施取决于您是在 K3s Kubernetes 集群、RKE Kubernetes 集群还是单个 Docker 容器上安装 Rancher。有关每个安装选项的更多信息,请参阅 此页面。

Rancher 可以安装在任何 Kubernetes 集群上。下面的 RKE 和 K3s Kubernetes 基础设施教程依然提供,以方便您使用。

  • K3s

  • RKE

我们建议为高可用性安装设置以下基础设施:

  • *两个 Linux 节点,*通常是您选择的基础设施提供商中的虚拟机。

  • 一个外部数据库 用于存储集群数据。支持 PostgreSQL、MySQL 和 etcd。

  • 一个负载均衡器 用于将流量引导到两个节点。

  • 一个 DNS 记录 用于将 URL 映射到负载均衡器。这将成为 Rancher 服务器的 URL,下游的 Kubernetes 集群需要访问它。

  • 一个私有容器镜像注册表 用于将容器镜像分发到您的机器。

1.设置 Linux 节点

这些主机将与互联网断开连接,但需要能够连接到您的私有容器镜像注册表。

确保您的节点满足 操作系统、容器运行时、硬件和网络 的一般安装要求。

有关设置 Linux 节点的一种示例,请参考此 教程,以将节点设置为 Amazon EC2 中的实例。

2.设置外部数据存储

使用除etcd以外的数据存储来运行Kubernetes的能力使K3s与其他Kubernetes发行版不同。此功能为Kubernetes操作员提供了灵活性。可用选项允许您选择最适合您用例的数据存储。

对于高可用性 K3s 安装,您需要设置以下外部数据库之一:

  • PostgreSQL(针对版本 10.7 和 11.5 进行认证)

  • MySQL(针对版本 5.7 进行认证)

  • etcd(针对版本 3.3.15 进行认证)

当您安装 Kubernetes 时,您需要提供 K3s 连接数据库的详细信息。

有关设置数据库的一种示例,请参考此 教程,以在 Amazon 的 RDS 服务上设置 MySQL 数据库。

有关配置 K3s 集群数据存储所有可用选项的完整列表,请参阅 K3s 文档

3.设置负载平衡器

您还需要设置一个负载平衡器,以将流量引导到两个节点上的 Rancher 副本。这将防止任何单个节点的故障导致与 Rancher 管理服务器的通信中断。

当 Kubernetes 在后面的步骤中设置时,K3s 工具将部署一个 Traefik Ingress 控制器。该控制器将在工作节点的 80 和 443 端口上侦听,响应发送到特定主机名的流量。

当 Rancher 安装完成(也在后面的步骤中)时,Rancher 系统会创建一个 Ingress 资源。该 Ingress 告诉 Traefik Ingress 控制器侦听发送到 Rancher 主机名的流量。当 Traefik Ingress 控制器接收到发送到 Rancher 主机名的流量时,将把该流量转发到集群中正在运行的 Rancher pod。

对于您的实现,请考虑您是否希望或需要使用 Layer-4 或 Layer-7 负载平衡器:

  • Layer-4 负载平衡器 是两者中更简单的选择,您将 TCP 流量转发到您的节点。我们建议将您的负载平衡器配置为 Layer-4 负载平衡器,将流量转发到 Rancher 管理集群节点的 TCP/80 和 TCP/443 端口。集群上的 Ingress 控制器将把 HTTP 流量重定向到 HTTPS,并在 TCP/443 端口终止 SSL/TLS。Ingress 控制器将把流量转发到 Rancher 部署中的 Ingress pod 的 TCP/80 端口。

  • Layer-7 负载平衡器 稍微复杂一些,但可以提供您可能需要的功能。例如,Layer-7 负载平衡器能够在负载平衡器处处理 TLS 终止,而不是让 Rancher 自行处理 TLS 终止。如果您希望在基础设施中集中管理 TLS 终止,这可能是有益的。Layer-7 负载平衡器还提供了让负载平衡器基于 HTTP 属性(如 cookies 等)做出决策的能力,而 Layer-4 负载平衡器无法处理这些。如果您决定在 Layer-7 负载平衡器上终止 SSL/TLS 流量,则在后面的步骤中安装 Rancher 时需要使用 --set tls=external 选项。有关更多信息,请参考 Rancher Helm chart 选项。

有关如何设置 NGINX 负载平衡的示例,请参阅 此页面。

有关设置 Amazon ELB 网络负载平衡器的操作指南,请参阅 此页面。

重要说明:

安装后,请勿使用此负载平衡器(即 local 集群 Ingress)来负载均衡除 Rancher 以外的应用程序。与其他应用程序共享此 Ingress 可能会导致 Rancher 在其他应用程序的 Ingress 配置重新加载后出现 websocket 错误。我们建议将 local 集群专用于 Rancher,而不用于其他应用程序。

4.设置 DNS 记录

设置负载平衡器后,您需要创建一个 DNS 记录以将流量发送到此负载平衡器。

根据您的环境,这可能是指向负载均衡器 IP 的 A 记录,或者是指向负载均衡器主机名的 CNAME。无论哪种情况,请确保此记录是您希望 Rancher 响应的主机名。

在稍后的步骤中安装 Rancher 时,您需要指定此主机名,并且之后无法更改。确保您的决定是最终的。

有关设置 DNS 记录以将域流量路由到 Amazon ELB 负载平衡器的操作指南,请参阅 官方 AWS 文档。

5.设置私有容器镜像注册表

Rancher 支持使用私有容器镜像注册表进行隔离环境下的安装。您必须拥有自己的私有容器镜像注册表或其他方式将容器镜像分发到您的机器上。

在后面的步骤中,当您设置 K3s Kubernetes 集群时,您将创建一个 私有容器镜像注册表配置文件,其中包含该注册表的详细信息。

如果您需要创建一个私有注册表,请参考您各自运行时的文档页面:

要在高可用性 RKE 集群上安装 Rancher 管理服务器,我们建议设置以下基础设施:

  • 三个 Linux 节点,通常是虚拟机,位于 Amazon EC2、Google Compute Engine 或 vSphere 等基础设施提供商中。

  • 一个负载均衡器 用于将前端流量引导到这三个节点。

  • 一个 DNS 记录 用于将 URL 映射到负载均衡器。这将成为 Rancher 服务器的 URL,下游的 Kubernetes 集群需要访问它。

  • 一个私有容器镜像注册表 用于将容器镜像分发到您的机器。

这些节点必须位于同一区域/数据中心。您可以将这些服务器放置在不同的可用区。

为什么选择三个节点?

在 RKE 集群中,Rancher 服务器数据存储在 etcd 中。这个 etcd 数据库在所有三个节点上运行。

etcd 数据库需要奇数个节点,以便它始终能够在 etcd 集群中选举出多数的领导者。如果 etcd 数据库无法选举出领导者,etcd 可能会遭遇 脑裂,需要从备份中恢复集群。如果三个 etcd 节点中的一个失败,剩下的两个节点可以选举出领导者,因为它们拥有大多数的 etcd 节点。

1.设置 Linux 节点

这些主机将与互联网断开连接,但需要能够连接到您的私有容器镜像注册表。

确保您的节点满足 操作系统、容器运行时、硬件和网络 的一般安装要求。

有关设置 Linux 节点的一种示例,请参考此 教程,以将节点设置为 Amazon EC2 中的实例。

2.设置负载平衡器

您还需要设置一个负载平衡器,以将流量引导到两个节点上的 Rancher 副本。这将防止任何单个节点的故障导致与 Rancher 管理服务器的通信中断。

当 Kubernetes 在后面的步骤中设置时,RKE 工具将部署一个 NGINX Ingress 控制器。该控制器将在工作节点的 80 和 443 端口上侦听,响应发送到特定主机名的流量。

当 Rancher 安装完成(也在后面的步骤中)时,Rancher 系统会创建一个 Ingress 资源。该 Ingress 告诉 NGINX Ingress 控制器侦听发送到 Rancher 主机名的流量。当 NGINX Ingress 控制器接收到发送到 Rancher 主机名的流量时,将把该流量转发到集群中正在运行的 Rancher pod。

对于您的实现,请考虑您是否希望或需要使用 Layer-4 或 Layer-7 负载平衡器:

  • Layer-4 负载均衡器 是两者中更简单的选择,您将 TCP 流量转发到您的节点。我们建议将您的负载平衡器配置为 Layer-4 负载平衡器,将流量转发到 Rancher 管理集群节点的 TCP/80 和 TCP/443 端口。集群上的 Ingress 控制器将把 HTTP 流量重定向到 HTTPS,并在 TCP/443 端口终止 SSL/TLS。Ingress 控制器将把流量转发到 Rancher 部署中的 Ingress pod 的 TCP/80 端口。

  • Layer-7 负载均衡器 稍微复杂一些,但可以提供您可能需要的功能。例如,Layer-7 负载平衡器能够在负载平衡器处处理 TLS 终止,而不是让 Rancher 自行处理 TLS 终止。如果您希望在基础设施中集中管理 TLS 终止,这可能是有益的。Layer-7 负载平衡器还提供了让负载平衡器基于 HTTP 属性(如 cookies 等)做出决策的能力,而 Layer-4 负载平衡器无法处理这些。如果您决定在 Layer-7 负载平衡器上终止 SSL/TLS 流量,则在后面的步骤中安装 Rancher 时需要使用 --set tls=external 选项。有关更多信息,请参考 Rancher Helm chart 选项

有关如何设置 NGINX 负载均衡器的示例,请参阅 此页面

有关设置 Amazon ELB 网络负载均衡器的操作指南,请参阅 此页面

安装后,请勿使用此负载平衡器(即 local 集群 Ingress)来负载均衡除 Rancher 以外的应用程序。与其他应用程序共享此 Ingress 可能会导致 Rancher 在其他应用程序的 Ingress 配置重新加载后出现 websocket 错误。我们建议将 local 集群专用于 Rancher,而不用于其他应用程序。

3.设置 DNS 记录

设置负载平衡器后,您需要创建一个 DNS 记录以将流量发送到此负载平衡器。

根据您的环境,这可能是指向 LB IP 的 A 记录,或者是指向负载平衡主机名的 CNAME。无论哪种情况,请确保此记录是您希望 Rancher 响应的主机名。

在稍后的步骤中安装 Rancher 时,您需要指定此主机名,并且之后无法更改。确保您的决定是最终的。

有关设置 DNS 记录以将域流量路由到 Amazon ELB 网络负载均衡器的操作指南,请参阅 官方 AWS 文档

4.设置私有容器镜像注册表

Rancher 支持使用安全的私有容器镜像注册表进行隔离环境下的安装。您必须拥有自己的私有容器镜像注册表或其他方式将容器镜像分发到您的机器上。

在后续步骤中,当您设置 RKE Kubernetes 集群时,您将创建一个 私有容器镜像注册表配置文件,其中包含该注册表的详细信息。

如果您需要创建一个私有注册表,请参考您各自运行时的文档页面: