Skip to main content

高可用安装指南

在本节中,你将学习如何使用 Helm CLI 在 Kubernetes 集群上部署 Rancher。

先决条件#

Kubernetes 集群#

设置 Rancher Server 的 Local Kubernetes 集群。

Rancher 可以安装在任何 Kubernetes 集群上。这个集群可以使用上游 Kubernetes,也可以使用 Rancher 的 Kubernetes 发行版之一,也可以是来自 Amazon EKS 等提供商的托管 Kubernetes 集群。

重要

Rancher 需要安装在受支持的 Kubernetes 版本上。要了解你的 Rancher 版本支持哪些版本的 Local Kubernetes,请参考支持矩阵Rancher Release

例如:Rancher v2.5.12 支持的 Kubernetes 版本包括 1.20、1.19、1.18 和 1.17。所以你的 Local Kubernetes 集群可以选择 1.20、1.19、1.18 或 1.17 版本。

对于设置 Kubernetes 集群的帮助,我们提供这些教程:

  • RKE:有关安装 RKE Kubernetes 集群的教程,请参考本页,有关为高可用 RKE 集群设置基础设施的帮助,请参考本页
  • K3s:安装 K3s Kubernetes 集群的教程,请参考本页。如需帮助设置高可用 K3s 集群的基础架构,请参考本页
  • RKE2:在 RKE2 安装 Kubernetes 集群的教程,请参考本页。如需帮助设置高可用 RKE2 集群的基础架构,请参考本页
  • Amazon EKS: 在 EKS 上安装 Kubernetes 集群的教程,请参考本页
  • AKS:关于如何用 Azure Kubernetes 服务安装 Rancher 的细节,包括如何安装一个入口以便可以访问 Rancher server,请参考本页
  • GKE:关于如何用谷歌 Kubernetes 引擎安装 Rancher 的细节,包括如何安装一个入口以便可以访问 Rancher server,请参考本页

CLI#

设置 Kubernetes 集群需要以下 CLI 工具。请确保这些工具已安装并在你的 $PATH

  • kubectl - Kubernetes 命令行工具。
  • helm - Kubernetes 的软件包管理工具。请参阅 Helm 版本要求以选择要安装 Rancher 的 Helm 版本。
提示

国内用户,可以导航到 https://mirror.rancher.cn 下载所需资源。

Ingress Controller#

适用于托管在云厂商上的集群

要在托管的 Kubernetes 集群(如 EKS、GKE 或 AKS)上部署 Rancher v2.5+,应先部署一个兼容的 Ingress 控制器,在 Rancher 上配置 SSL 终止

有关如何在 EKS 上部署 Ingress 的示例,请参阅此部分

Helm Chart 安装 Rancher#

Rancher 使用 Kubernetes 的 Helm 软件包管理器安装。Helm Charts 为 Kubernetes YAML 清单文档提供了模板语法。

有了 Helm,我们可以创建可配置的部署,而不只是使用静态文件。有关创建你自己的部署的更多信息,请查看 https://helm.sh/ 中的文档。

对于无法直接访问 Internet 的系统,请参阅 Rancher 离线安装

选择要安装的 Rancher 版本,请参阅选择 Rancher 版本

要选择用于安装 Rancher 的 Helm 版本,请参阅 Helm 版本要求

注意

本安装指南假定你使用的是 Helm3。有关从 Helm 2 迁移到 Helm 3 的方法,请参阅官方的Helm 2 到 3 迁移文档。这个指南提供了使用 Helm 2 在 RKE Kubernetes 集群上安装 Rancher 的较旧的安装指南,适用于无法升级到 Helm 3 的情况。

1. 添加 Helm Chart 仓库#

使用helm repo add命令添加含有 Rancher Chart 的 Helm Chart 仓库。

请将命令中的<CHART_REPO>,替换为lateststablealpha。更多信息,请查看选择 Rancher 版本来选择最适合你的仓库。

  • latest: 建议在尝试新功能时使用。
  • stable: 建议在生产环境中使用。(推荐)
  • alpha: 未来版本的实验性预览。

注意:不支持从 Alpha 到 Alpha 之间的升级。

helm repo add rancher-<CHART_REPO> https://releases.rancher.com/server-charts/<CHART_REPO>
提示

国内用户,可以使用放在国内的 Rancher Chart 加速安装:

helm repo add rancher-<CHART_REPO> https://rancher-mirror.rancher.cn/server-charts/<CHART_REPO>

2. 为 Rancher 创建 Namespace#

我们需要定义一个 Kubernetes Namespace,在 Namespace 中安装由 Chart 创建的资源。这个命名空间的名称为 cattle-system

kubectl create namespace cattle-system

3. 选择你的 SSL 选项#

Rancher Server 默认需要 SSL/TLS 配置来保证访问的安全性。

提示

如果你想在外部终止 SSL/TLS,请参考:使用外部 TLS 负载均衡器

你可以从以下三种证书来源中选择一种,证书将用来在 Rancher Server 中终止 TLS:

  • Rancher 生成的 TLS 证书: 在这种情况下,你需要在集群中安装 cert-manager。 Rancher 利用 cert-manager 签发并维护证书。Rancher 将生成自己的 CA 证书,并使用该 CA 签署证书。然后 cert-manager 负责管理该证书。
  • Let's Encrypt: Let's Encrypt 选项也需要使用 cert-manager。但是,在这种情况下,cert-manager 与 Let's Encrypt 的特殊颁发者相结合,该颁发者执行获取 Let's Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01),因此负载均衡器必须具有可以从公网访问的公共 DNS 记录。
  • 使用你已有的证书: 此选项使你可以使用自己的权威 CA 颁发的证书或自签名 CA 证书。 Rancher 将使用该证书来保护 WebSocket 和 HTTPS 流量。在这种情况下,你必须上传名称分别为tls.crttls.key的 PEM 格式的证书以及相关的密钥。如果使用私有 CA,则还必须上传该 CA 证书。这是由于你的节点可能不信任此私有 CA。 Rancher 将获取该 CA 证书,并从中生成一个校验和,各种 Rancher 组件将使用该校验和来验证其与 Rancher 的连接。
设置Chart 选项描述是否需要 cert-manager
Rancher 生成的证书(默认)ingress.tls.source=rancher使用 Rancher 生成的 CA 签发的自签名证书此项为默认选项
Let’s Encryptingress.tls.source=letsEncrypt使用Let's Encrypt颁发的证书
你已有的证书ingress.tls.source=secret使用你的自己的证书(Kubernetes 密文)
重要

Rancher 中国技术支持团队建议你使用“你已有的证书” ingress.tls.source=secret 这种方式,从而减少对 cert-manager 的运维成本。

4. 安装 cert-manager#

提示

如果你使用自己的证书文件 ingress.tls.source=secret或者使用外部 TLS 负载均衡器可以跳过此步骤。

仅在使用 Rancher 生成的证书 ingress.tls.source=rancher 或 Let's Encrypt 颁发的证书 ingress.tls.source=letsEncrypt时才需要 cert-manager。

这些说明来自官方的 cert-manager 文档

# 如果你手动安装了CRD,而不是在Helm安装命令中添加了`--set installCRDs=true`选项,你应该在升级Helm chart之前升级CRD资源。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml
# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 仓库缓存
helm repo update
# 安装 cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.1

安装完 cert-manager 后,你可以通过检查 cert-manager 命名空间中正在运行的 Pod 来验证它是否已正确部署:

kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-5c6866597-zw7kh 1/1 Running 0 2m
cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m
cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m

5. 根据你选择的 SSL 选项,通过 Helm 安装 Rancher#

默认为 Rancher 生成自签名 CA,用于 cert-manager 颁发访问 Rancher Server 接口的证书。

因为 rancheringress.tls.source 的默认选项,所以在运行 helm install 命令时我们没有指定 ingress.tls.source

  • hostname 设置为解析到你的负载均衡器的 DNS 记录。Rancher HA 安装成功后,你需要通过这个域名来访问 Rancher Server。
  • replicas 设置为 Rancher 部署所使用的副本数量。默认为 3;如果集群中的节点少于 3 个,你应该相应地减少副本数量。
  • 要安装一个特定的 Rancher 版本,使用 --version 标志,例如:--version 2.3.6
  • 如果你安装的是 alpha 版本,Helm 要求在命令中加入 --devel 选项。
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set replicas=3

等待 Rancher 运行:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

Rancher Chart 有许多自定义选项来自定义你的安装环境。以下是一些常见的高级方案:

有关选项的完整列表,请参见Chart 选项

6. 验证 Rancher Server 是否已成功部署#

添加 secret 后,检查 Rancher Server 是否运行成功:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

如果看到以下错误: error: deployment "rancher" exceeded its progress deadline, 你可以通过运行以下命令来检查 deployment 的状态:

kubectl -n cattle-system get deploy rancher
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rancher 3 3 3 3 3m

DESIREDAVAILABLE应该显示相同的个数。

7. 保存你的选项#

请保存你使用的全部 --set 选项。使用 Helm 升级 Rancher 到新版本时,你将需要使用相同的选项。

安装完成#

现在你应该具有一个功能正常的 Rancher Server 了。

打开浏览器,通过 Helm 指定的 hostname 设置的域名来访问你的 Rancher Server。如果你的环境没有设置公共 DNS 解析,你可以在 hosts 文件中手动映射域名和 IP 的解析记录。接下来,你应该会看到一个色彩丰富的登录页面。

如果你的环境中有负载均衡器将流量转发到 Rancher Server,则可以将域名解析为负载均衡器的 IP 地址。如果你的环境中没有负载均衡器,这可以将域名解析为某个 Rancher Server Pod 宿主机的 IP 地址。

如果在安装过程中碰到了问题,请查看故障排查页面。

Last updated on by kingsd041