跳到主要内容
版本:v2.9 (Preview)

在 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​

执行以下步骤以安装 gcloud 和 kubectl:

  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 的默认类型)之间的兼容性问题。