Rancher 高可用 4层 LB 安装指南
重要提示
RKE add-on 安装仅支持 Rancher v2.0.8 之前的版本。 请使用 Rancher helm chart 将 Rancher 安装在 Kubernetes 集群上。有关详细信息,请参见Rancher 高可用安装。 如果您当前正在使用 RKE add-on 安装方法,参见将 RKE add-on 安装的 Rancher 迁移到 Helm 安装,获取有关如何使用 Helm chart 的详细信息。
此过程将引导您使用 Rancher Kubernetes Engine(RKE)设置 3 节点集群。该集群的唯一目的是为 Rancher 运行 Pod。设置基于:
- 四层负载均衡器(TCP)
- 具有 SSL termination(HTTPS)的 NGINX ingress 控制器
在使用四层负载均衡器的 HA 设置中,负载均衡器通过 TCP/UDP 协议接受 Rancher 客户端连接,然后,负载均衡器将这些连接转发到各个集群节点,而不读取请求本身。由于负载均衡器无法读取其转发的数据包,因此它所能做出的路由决策是有限的。
Rancher 安装在具有四层负载均衡器的 Kubernetes 集群上,描述了在 ingress 控制器上的 SSL termination。#
1. 提供 Linux 主机按照要求配置三台 Linux 主机。
#
2. 配置负载均衡器我们将使用 NGINX 作为我们的四层负载均衡器(TCP),NGINX 将所有连接转发到您的 Rancher 节点之一。如果要使用 Amazon NLB,则可以跳过此步骤并使用Amazon NLB 配置。
注意: 在此配置中,负载均衡器位于 Linux 主机的前面,负载均衡器可以是任何可用的能够运行 NGINX 的主机。
一个警告:不要将 Rancher 节点之一用作负载均衡器。
#
2.1 安装 NGINX首先在负载均衡器主机上安装 NGINX,NGINX 为所有已知的操作系统提供了可用的安装包。有关安装 NGINX 的帮助,请参阅安装文档。
在使用官方 NGINX 软件包时,stream
模块是必需的。请参考您的操作系统文档,了解如何在操作系统上安装和启用 NGINX stream
模块。
#
2.2 创建 NGINX 配置安装 NGINX 后,您需要使用节点的 IP 地址更新 NGINX 配置文件nginx.conf
。
将下面的代码示例复制并粘贴到您喜欢的文本编辑器中,另存为
nginx.conf
。将
nginx.conf
中的IP_NODE_1
,IP_NODE_2
和IP_NODE_3
替换为您的 Linux 主机 IP 地址。注意: 此 Nginx 配置仅是示例,可能不适合您的环境。有关完整的文档,请参阅NGINX 负载均衡-TCP 和 UDP 负载均衡器。
NGINX 配置示例:
保存
nginx.conf
到负载均衡器的以下路径:/etc/nginx/nginx.conf
。通过运行以下命令更新加载您的 NGINX 配置:
#
2.3 可选 - 将 NGINX 作为 Docker 容器运行与其将 NGINX 作为包安装在操作系统上,不如将其作为 Docker 容器运行。将已编辑的NGINX 配置示例保存为/etc/nginx.conf
,并运行以下命令以启动 NGINX 容器:
#
3. 配置 DNS选择要用于访问 Rancher 的完全限定域名(FQDN)(例如,rancher.yourdomain.com
)。
登录到 DNS 服务器,创建一个指向您的[负载均衡器]的 IP 地址的
DNS A
记录(#2-configure-load-balancer)。验证
DNS A
是否正常工作,在任何终端上运行以下命令,替换HOSTNAME.DOMAIN.COM
为您选择的 FQDN:nslookup HOSTNAME.DOMAIN.COM
步骤结果: 终端显示输出如下图所示:
#
4. 安装 RKERKE(Rancher Kubernetes 引擎)是一个快速、通用的 Kubernetes 安装程序,您可以使用它在您的 Linux 主机上安装 Kubernetes。我们将使用 RKE 来设置集群并运行 Rancher。
请遵循RKE 安装说明。
通过运行以下命令,确认 RKE 现在是可执行的:
#
5. 下载 RKE 配置文件模板RKE 使用.yml
配置文件来安装和配置 Kubernetes 集群。根据要使用的 SSL 证书,有两种模板可供选择。
根据您正在使用的 SSL 证书,下载以下模板之一。
高级配置选项:
- 想要 Rancher API 的所有事务记录?通过编辑 RKE 配置文件来启用API 审核功能。有关更多信息,请参见如何在RKE 配置文件中启用它。
- 想知道您的 RKE 模板可用的其他配置选项吗?请参阅RKE 文档:配置选项。
将文件重命名为
rancher-cluster.yml
。
#
6. 配置节点有了rancher-cluster.yml
配置文件模板后,编辑节点部分以指向您的 Linux 主机。
在您喜欢的文本编辑器中打开
rancher-cluster.yml
。使用 Linux 主机信息更新
nodes
部分对于集群中的每个节点,更新以下占位符:
IP_ADDRESS_X
和USER
。指定的用户应该能够访问 Docker 套接字,您可以使用指定的用户登录并运行docker ps
来测试这一点。注意: 使用 RHEL/CentOS 时,由于 https://bugzilla.redhat.com/show_bug.cgi?id=1527565 导致 SSH 用户无法成为 root 用户。有关 RHEL/CentOS 的特定需求,请参阅操作系统要求。
可选: 默认情况下,
rancher-cluster.yml
被配置为备份您的数据快照,要禁用这些快照,请将backup
指令设置更改为false
,如下所示。
#
7. 配置证书为了安全起见,使用 Rancher 时需要 SSL(Secure Sockets Layer)。SSL 保护所有 Rancher 网络通信的安全,例如在您登录集群或与集群交互时。
从以下选项中选择:
#
7.1 — 使用您已有的证书:自签名先决条件: 创建一个自签名证书
- 证书文件必须为
PEM 格式
。- 证书文件必须使用
base64
编码。- 在您的证书文件中,包括链接中的所有中间证书。
在
kind: Secret
中name: cattle-keys-ingress
:- 替换
<BASE64_CRT>
为证书文件的 base64 编码字符串(通常称为cert.pem
或domain.crt
) - 替换
<BASE64_KEY>
为证书密钥文件的 base64 编码字符串(通常称为key.pem
或domain.key
)
注意:
tls.crt
或tls.key
的 base64 编码的字符串应该在同一行,在开头、中间或结尾没有任何换行。步骤结果: 在替换了这些值之后,文件应该如下面的示例所示(base64 编码的字符串应该不同):
- 替换
在
kind: Secret
中name: cattle-keys-server
,替换<BASE64_CA>
为 CA 证书文件的 base64 编码的字符串(通常称为ca.pem
或ca.crt
)。注意:
cacerts.pem
的 base64 编码的字符串应该在同一行,在开头、中间或结尾没有任何换行。步骤结果: 文件应该如下面的示例所示(base64 编码的字符串应该不同):
#
7.2 — 使用您已有的证书:由公认的 CA 签发注意: 如果您使用的是自签名证书,单击此处继续。
如果您使用的是由公认的证书颁发机构签名的证书,您需要为证书文件和证书密钥文件生成 base64 编码的字符串。确保您的证书文件包括链接中的所有中间证书
,在这种情况下,证书的顺序首先是您已有的证书,然后是中间证书。请参阅您的 CSP(Certificate Service Provider)文档,了解需要包括哪些中间证书。
在kind: Secret
中name: cattle-keys-ingress
:
- 替换
<BASE64_CRT>
为证书文件的 base64 编码字符串(通常称为cert.pem
或domain.crt
) - 替换
<BASE64_KEY>
为证书密钥文件的 base64 编码字符串(通常称为key.pem
或domain.key
)
在替换了这些值之后,文件应该如下面的示例所示(base64 编码的字符串应该不同):
注意:
tls.crt
或tls.key
的 base64 编码的字符串应该在同一行,在开头、中间或结尾没有任何换行。
#
8. 配置 FQDN<FQDN>
在配置文件中有两处引用(一个在这个步骤中,一个在下一个步骤中)。两者都需要替换为配置 DNS 中选择的 FQDN。
在kind: Ingress
中name: cattle-ingress-http
:
- 替换
<FQDN>
为配置 DNS 中选择的 FQDN。
将<FQDN>
替换为配置 DNS 中选择的 FQDN 后,该文件应类似于以下示例(本例中使用的 FQDN 是rancher.yourdomain.com
):
保存.yml
文件并关闭它。
#
9. 配置 Rancher 版本最后一个需要替换的引用是<RANCHER_VERSION>
,这需要替换为标记为稳定的 Rancher 版本。最新的 Rancher 稳定版本可以在GitHub README中找到。确保版本是实际的版本号,而不是带有stable
或latest
这样的命名标签。下面的示例显示了配置为v2.0.6
的版本。
#
10. 备份 RKE 配置文件关闭.yml
文件后,将其备份到安全位置。升级 Rancher 时,可以再次使用此文件。
#
11. 运行 RKE完成所有配置后,使用 RKE 启动 Rancher。您可以通过运行rke up
命令并使用--config
参数指向您的配置文件来完成此操作。
在您的工作站中,确保
rancher-cluster.yml
和下载的rke
二进制文件位于同一目录中。打开一个终端实例,切换到包含您的配置文件和
rke
的目录。请输入下面的
rke up
命令。
步骤结果: 输出应与以下代码段相似:
#
12. 备份自动生成的配置文件在安装过程中,RKE 会自动生成一个与 RKE 二进制文件位于同一目录中的名为kube_config_rancher-cluster.yml
的配置文件。复制此文件并将其备份到安全位置,稍后在升级 Rancher Server 时将使用此文件。
#
后续操作您有两种选择:
- 在发生灾难的情况下,为您的 Rancher Server 创建备份:K3s Rancher 高可用备份。
- 创建 Kubernetes 集群:提供 Kubernetes 集群。
#
常见问题和故障排查#
如何知道我的证书是不是 PEM 格式?您可以通过以下特征识别 PEM 格式:
- 该文件以以下标头开头:
-----BEGIN CERTIFICATE-----
- 标头后跟一长串字符。
- 该文件以页脚结尾:
-----END CERTIFICATE-----
#
PEM 证书例子:#
如何通过 base64 编码我的 PEM 文件?运行以下命令之一。将FILENAME
替换为您的证书名称。
#
如何验证生成的证书的 base64 字符串?运行以下命令之一。用之前复制的 base64 字符串替换 YOUR_BASE64_STRING
。
#
如果我想添加中间证书,证书的顺序是什么?添加证书的顺序如下:
#
如何验证我的证书链?您可以使用 openssl
二进制文件来验证证书链。如果命令的输出(请参见下面的命令示例)以Verify return code: 0 (ok)
,则您的证书链有效。ca.pem
文件必须与您添加到rancher/rancher
容器中的文件相同。使用由公认的证书颁发机构签名的证书时,可以省略-CAfile
参数。
命令: