一般前提条件

正如您在舰队创建概览中所了解的那样,在创建集群时,GKE clusters on VMwareGKE clusters on Bare Metal多云集群(在 AWS 和 Azure 上)会自动注册到您的项目舰队中。但是,Google Cloud 上的 GKE 集群和第三方 Kubernetes 集群(关联集群)必须手动注册才能加入舰队。您可以在舰队创建概览中详细了解不同的注册选项。

本页介绍了将任何 Kubernetes 集群手动注册到 Google Cloud 舰队的前提条件和要求。Google Cloud 上的 GKE 集群和关联的集群也有特定的单独要求。阅读完本指南后,请按照您要注册的集群类型的说明操作。

安装命令行工具

确保您已安装以下命令行工具。如果您使用 Cloud Shell 作为与 Google Cloud 交互的 Shell 环境,则系统会为您安装这些工具。

安装 Google Cloud CLI

Google Cloud CLI 是 Google Cloud 的命令行界面 (CLI)。您可以使用 Google Cloud CLI 注册集群,也可以使用 Terraform 或 Google Cloud 控制台等其他工具(具体取决于您的集群类型)注册集群。不过,即使您不将其用于集群注册,在本指南的许多其他设置步骤中,gcloud 也是必需项或有用项。

  1. 如果您尚未安装 Google Cloud CLI,请按照安装说明进行安装。我们建议您使用最新版本的 Google Cloud CLI。如果要注册集群,您需要使用 361.0.0 版或更高版本;如果要在安装了 Alpha 版或 Beta 版组件的情况下为 GKE 使用非旧版注册命令,则需要 423.0.0 版或更高版本。

  2. 运行以下命令以登录 Google Cloud:

    gcloud auth login
  3. (可选)如果您打算试用 Alpha 版或 Beta 版功能,请确保已安装 gcloud beta 组件:

     gcloud components install beta 

安装 kubectl

虽然 kubectl 不需要注册集群,但您可能需要它向注册集群的用户(如果他们不是集群所有者)以及其他平台特定的设置授予必要的基于角色的访问控制 (RBAC) 权限。您需要一个不低于 Google Kubernetes Engine (GKE) 支持的最低 Kubernetes 版本kubectl 版本。

我们建议您使用 Google Cloud CLI 安装 kubectl

如需查看 kubectl 的版本,请运行以下命令:

kubectl version

客户端版本由输出的 gitVersion 指示。

要安装 kubectl,请运行以下命令:

gcloud components install kubectl

启用 API

您需要在舰队宿主项目中启用以下 API:

  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com(也称为 Fleet API)。这是处理集群注册和舰队成员资格的 Google Cloud 服务。
  • cloudresourcemanager.googleapis.com

您要注册的集群中的 Pod 必须能够直接或通过使用配置的代理服务器访问 googleapis.comgkeconnect.googleapis.com 地址。

如果要为注册启用舰队 Workload Identity,则还必须启用以下各项:

  • iam.googleapis.com

非项目所有者必须获得 serviceusage.services.enable 权限,然后才能启用 API。

gcloud

要启用这些 API,请运行以下命令:

gcloud services enable \
   --project=FLEET_HOST_PROJECT_ID \
   container.googleapis.com \
   gkeconnect.googleapis.com \
   gkehub.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com

其中:

如果您不想启用舰队 Workload Identity,则可以省略 iam.googleapis.com

如需列出已在项目中启用的 API,请按照 Service Usage 文档中列出服务中的说明操作。

授予访问权限

确保您拥有注册集群所需的适当访问权限。集群注册要求同时具备向舰队注册集群的权限以及集群本身的管理员权限。

授予集群注册权限

注册集群需要具备要注册集群的舰队宿主项目中的 IAM 权限。如果您在舰队宿主项目中拥有 roles/owner 角色,则会自动具备该权限以及完成所有注册任务所需的所有访问权限。

如果您在项目中没有 roles/owner 角色,则需要先获得特定的 IAM 角色,然后才能将集群连接到 Google,如下所示:

  • 如需使用向 Google 进行身份验证的舰队 Workload Identity 注册集群,您只需拥有以下 IAM 角色:

    • roles/gkehub.admin
  • Google Cloud 之外的某些注册选项要求您为集群设置服务账号,以便向 Google 而不是 Workload Identity 进行身份验证。如需注册集群并管理此服务账号,您需要以下一组角色:

    • roles/gkehub.admin
    • roles/iam.serviceAccountAdmin
    • roles/iam.serviceAccountKeyAdmin
    • roles/resourcemanager.projectIamAdmin

如需查看 gkehub 角色中包含的详细权限列表,请参阅 Connect IAM 角色

gcloud

如需将 IAM 角色授予用户,请运行以下命令:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
   --member user:GCP_EMAIL_ADDRESS \
   --role=ROLE

其中:

  • FLEET_HOST_PROJECT_ID 是您要在其中注册集群的 Google Cloud 项目 ID。了解如何查找此值
  • GCP_EMAIL_ADDRESS 是用户用于登录 Google Cloud 的账号。
  • ROLE 是您要授予的 IAM 角色,例如 roles/gkehub.admin

如需详细了解如何授予 IAM 角色,请参阅 IAM 文档中的授予、更改和撤消对资源的访问权限

授予集群管理员权限

除了注册集群所需的权限之外,您还需要集群本身的管理员权限。根据集群的位置,您可以使用 IAM 角色或 Kubernetes 基于角色的访问权限控制 (RBAC) 来分配此权限。

Google Cloud 上的 GKE 集群

仅针对 GKE clusters on Google Cloud,请添加以下 IAM 角色以获取集群的管理员权限(如果您还没有的话)(如果您创建了集群,则您的用户账号可能拥有该权限):

  • roles/container.admin

此 IAM 角色包含 Kubernetes RBAC cluster-admin 角色。对于其他集群环境,您需要使用 kubectl 授予此 RBAC 角色,如下一部分中所述。如需详细了解 GKE 中 IAM 与 RBAC 角色之间的关系,请参阅 GKE 文档

Google Cloud 外部的集群

如需关联 Google Cloud 外部的第三方集群,请确保注册集群的用户具有 Kubernetes RBAC cluster-admin 角色。

kubectl

如果集群是由您创建的,则您可能会被授予此角色。您可以通过运行以下命令来验证这一点:

kubectl auth can-i '*' '*' --all-namespaces

如果您或其他用户需要该角色,请在集群中创建 ClusterRoleBinding 资源:

kubectl create clusterrolebinding BINDING_NAME --clusterrole cluster-admin --user USER

其中:

  • BINDING_NAME 是您为 ClusterRoleBinding 资源选择的名称。
  • USER 是用于针对集群进行身份验证的身份。

后续步骤

按照要注册的集群类型的前提条件指南进行操作: