Skip to main content

如何安装高可用 Rancher?

在本节中,你将学习如何使用 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>,替换为latest,stable或alpha。更多信息,请查看选择 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.crt和tls.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 接口的证书。

因为 rancher 是 ingress.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

DESIRED和AVAILABLE应该显示相同的个数。

7. 保存你的选项​

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

安装完成​

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

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

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

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