跳到主要内容
版本:Latest

在 GKE 集群上安装 Rancher

在本节中,你将学习如何使用 GKE 安装 Rancher。

如果你已经有一个 GKE Kubernetes 集群,请直接跳转到安装 Ingress这个步骤。然后按照此处的步骤安装 Rancher Helm Chart。

先决条件

  • 你需要有一个 Google 账号。
  • 你需要有一个 Google Cloud Billing 账号。你可使用 Google Cloud Console 来管理你的 Cloud Billing 账号。有关 Cloud Console 的详情,请参见 Console 通用指南
  • 你需要至少一个在用的 IP 地址和至少 2 个 CPU 的云配额。有关 Rancher Server 的硬件要求,请参见本节

1. 启用 Kubernetes Engine API

按照以下步骤启用 Kubernetes Engine API:

  1. 访问 Google Cloud Console 中的 Kubernetes Engine 页面
  2. 创建或选择一个项目。
  3. 打开项目,并为项目启用 Kubernetes Engine API。等待 API 和相关服务的启用。这可能需要几分钟时间。
  4. 确保为你的云项目启用了计费。有关如何为你的项目启用计费,请参见 Google Cloud 文档中心

2. 打开 Cloud Shell

Cloud Shell 是一个 shell 环境,用于管理托管在 Google Cloud 上的资源。Cloud Shell 预装了 gcloud 命令行工具和 kubectl 命令行工具中。gcloud 工具为 Google Cloud 提供主要的命令行界面,而kubectl 则提供针对 Kubernetes 集群的主要命令行界面。

下文描述了如何从 Google Cloud Console 或从本地工作站启动 Cloud Shell。

Cloud Shell

如需从 Google Cloud Console 启动 shell,请在控制台的右上角点击终端按钮。鼠标悬停在按钮上时,它会标记为 Activate Cloud Shell

本地 Shell

执行以下步骤以安装 gcloudkubectl

  1. 按照这些步骤安装 Cloud SDK。The Cloud SDK 包括 gcloud 命令行工具。不同操作系统对应的步骤有所不同。

  2. 安装 Cloud SDK 后,运行以下命令以安装 kubectl 命令行工具:

    gcloud components install kubectl

    后面的步骤会配置 kubectl,使其用于使用新的 GKE 集群。

  3. 如果 Helm 3 未安装的话,安装 Helm 3

  4. 使用 HELM_EXPERIMENTAL_OCI 变量来启用 Helm 的实验功能 OCI 镜像支持。把以下行添加到 ~/.bashrc (或 macOS 中的 ~/.bash_profile,或者你的 shell 存储环境变量的地方):

    export HELM_EXPERIMENTAL_OCI=1
  5. 运行以下命令来加载你更新的 .bashrc 文件:

    source ~/.bashrc

    如果你运行的是 macOS,使用这个命令:

    source ~/.bash_profile

3. 配置 gcloud CLI

选择以下方法之一配置默认的 gcloud 设置:

  • 如果你想了解默认值,请使用 gcloud init。
  • 如需单独设置你的项目 ID、地区和区域,使用 gcloud config。
  1. 运行 gcloud init 并按照指示操作:

    gcloud init

    如果你在远程服务器上使用 SSH,使用 --console-only 标志,以防止该命令启动浏览器。

    gcloud init --console-only
  2. 按照指示,以授权 gcloud 使用你的 Google Cloud 账户,并选择你创建的新项目。

4. 确认 gcloud 的配置是否正确

运行:

gcloud config list

返回的结果应与以下内容类似:

[compute]
region = us-west1 # Your chosen region
zone = us-west1-b # Your chosen zone
[core]
account = <Your email>
disable_usage_reporting = True
project = <Your project ID>

Your active configuration is: [default]

5. 创建一个 GKE 集群

下面的命令创建了一个三节点的集群。

cluster-name 替换为你新集群的名称。

在选择 Kubernetes 版本时,请务必先查阅支持矩阵,以找出已针对你的 Rancher 版本验证的最新 Kubernetes 版本。

要使用 Rancher 成功创建 GKE 集群,GKE 必须处于 Standard 模式。GKE 在创建 Kubernetes 集群时有两种运行模式,分别是 Autopilot 和 Standard 模式。Autopilot 模式的集群配置对编辑 kube-system 命名空间有限制。但是,Rancher 在安装时需要在 kube-system 命名空间中创建资源。因此,你将无法在以 Autopilot 模式创建的 GKE 集群上安装 Rancher。如需详细了解 GKE Autopilot 模式和 Standard 模式之间的差异,请访问比较 GKE Autopilot 和 Standard

注意:如果你要从旧的 Kubernetes 版本更新到 Kubernetes v1.22 或更高版本,你还需要更新 ingress-nginx。

gcloud container clusters create cluster-name --num-nodes=3 --cluster-version=<VERSION>

6. 获取验证凭证

创建集群后,你需要获得认证凭证才能与集群交互:

gcloud container clusters get-credentials cluster-name

此命令将 kubectl 配置成使用你创建的集群。

7. 安装 Ingress

集群需要一个 Ingress,以从集群外部访问 Rancher。

以下命令安装带有 LoadBalancer 服务的 nginx-ingress-controller

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade --install \
ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--set controller.service.type=LoadBalancer \
--version 4.0.18 \
--create-namespace

8. 获取负载均衡器的 IP

运行以下命令获取负载均衡器的 IP 地址:

kubectl get service ingress-nginx-controller --namespace=ingress-nginx

返回的结果应与以下内容类似:

NAME                       TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
ingress-nginx-controller LoadBalancer 10.3.244.156 35.233.206.34 80:31876/TCP,443:32497/TCP 81s

保存 EXTERNAL-IP

9. 设置 DNS

到 Rancher Server 的外部流量需要重定向到你创建的负载均衡器。

创建指向你保存的外部 IP 地址的 DNS。这个 DNS 会用作 Rancher Server 的 URL。

设置 DNS 的有效方法有很多。如需获取帮助,请参见 Google Cloud 文档中的管理 DNS 记录部分。

10. 安装 Rancher Helm Chart

按照本页的说明安装 Rancher Helm Chart。任何 Kubernetes 发行版上安装的 Rancher 的 Helm 说明都是一样的。

安装 Rancher 时,使用上一步获取的 DNS 名称作为 Rancher Server 的 URL。它可以作为 Helm 选项传递进来。例如,如果 DNS 名称是 rancher.my.org,你需要使用 --set hostname=rancher.my.org 选项来运行 Helm 安装命令。

在此设置之上安装 Rancher 时,你还需要设置与 Rancher 的 Ingress 资源一起使用的 Ingress Controller 的名称:

--set ingress.ingressClassName=nginx

请参阅Helm 安装命令了解你的证书选项。

在 Rancher v2.7.5 中,如果你打算在集群上使用默认的 GKE Ingress 而不启用 VPC 原生的集群模式,则需要设置以下标志:

--set service.type=NodePort

此设置是必要的,这考虑了与 ClusterIP(cattle-system/rancher 的默认类型)之间的兼容性问题。