配置由 GKE On-Prem API 管理的集群

GKE On-Prem API 是一种由 Google Cloud 托管的 API,可让您使用标准工具(Google Cloud 控制台、Google Cloud CLI 或 Terraform)管理本地集群的生命周期。使用这些工具创建集群时,API 会将集群状态的元数据存储在创建集群时指定的 Google Cloud 区域中。此元数据可让您使用标准工具管理集群的生命周期。如果您想使用这些工具查看集群详情或管理使用 bmctl 创建的集群的生命周期,则必须在 GKE On-Prem API 中注册集群。

术语

通过注册集群,您可以使用控制台、gcloud CLI 或 Terraform 管理集群生命周期。

注册集群是将集群注册到舰队的单独过程。舰队是可以一起管理的 Kubernetes 集群的逻辑分组。所有 GKE on Bare Metal 集群都会在创建集群时注册到舰队。使用 bmctl 创建集群时,集群会注册到您在集群配置文件的 gkeConnect.projectID 字段中指定的 Google Cloud 项目。此项目即为舰队宿主项目。如需详细了解舰队,包括应用场景、最佳实践和示例,请参阅舰队管理文档。

查看已注册的集群

所有舰队集群都会显示在控制台中的 GKE Enterprise 集群GKE 集群页面上。这两种工具都能让您大致了解整个舰队,而且对于 GKE on Bare Metal,还可让您查看由 GKE On-Prem API 管理的集群。

如需查看您的舰队集群,请执行以下操作:

  1. 在控制台中,进入 GKE Enterprise 集群页面。
    转到 GKE Enterprise 集群页面
  2. 选择 Google Cloud 项目。
    • 如果类型列中显示裸金属,则该集群由 GKE On-Prem API 管理。
    • 如果类型列中显示外部,则该集群不由 GKE On-Prem API 管理。
GKE Enterprise 集群列表

使用要求

  • 只有用户和管理员集群可以使用 GKE On-Prem API 注册。不支持注册混合集群和独立集群。
  • 1.13 版或更高版本。

  • 如果您不是项目所有者,则必须至少具有项目的 Identity and Access Management 角色 roles/gkeonprem.admin。如需详细了解此角色具备的权限,请参阅 IAM 文档中的 GKE On-Prem 角色

准备工作

  1. 根据需要设置 gcloud CLI。

    1. 如果您需要安装 gcloud CLI,请参阅 gcloud CLI 文档。根据需要更新 gcloud CLI 组件:

      gcloud components update
      
  2. 请按照以下步骤激活并使用 GKE On-Prem API:

    1. 在项目中启用 API:

      gcloud services enable \
          --project PROJECT_ID \
          gkeonprem.googleapis.com
      

      PROJECT_ID 替换为您的舰队宿主项目的项目 ID。这是在集群配置文件gkeconnect 部分中配置的项目 ID。

      如果您收到 PERMISSION_DENIED 错误,请仔细检查您输入的项目 ID。如果项目 ID 正确无误,请运行 gcloud auth login 以使用有权访问项目的账号登录 Google Cloud CLI。

    2. 如果这是您首次在项目中启用 GKE On-Prem API,则需要初始化该 API。为此,您可以调用 gcloud CLI 命令,该命令可用于显示可用于创建集群的版本:

      gcloud container bare-metal clusters query-version-config \
          --project=PROJECT_ID \
          --location=REGION
      

      REGION 替换为 us-west1 或其他受支持的区域

  3. 如果您的组织设置了许可名单,以允许来自 Google API 和其他地址的流量通过代理服务器,请将以下条目添加到许可名单:

    • gkeonprem.googleapis.com
    • gkeonprem.mtls.googleapis.com

    这些是 GKE On-Prem API 的服务名称。

注册用户集群

gcloud CLI

如果需要填写 --admin-cluster-membership 标志的 ADMIN_CLUSTER_NAME 占位符,请务必滚动。

gcloud container bare-metal clusters enroll USER_CLUSTER_NAME  \
    --project=PROJECT_ID \
    --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
    --location=REGION

替换以下内容:

  • USER_CLUSTER_NAME:您要注册的用户集群的名称。

  • PROJECT_ID:舰队宿主项目的 ID。

  • ADMIN_CLUSTER_NAME:管理用户集群的管理员集群。管理员集群名称是用于唯一标识 Google Cloud 中的集群的完全指定集群名称中的最后一个部分。

  • REGION:GKE On-Prem API 运行并存储集群元数据的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域。 注册集群后,此区域便无法更改。

bmctl

在管理员工作站上执行以下步骤。

  1. 将以下部分添加到用户集群配置文件:

    gkeOnPremAPI:
      enabled: true
      location: REGION
    

    REGION 替换为 GKE On-Prem API 在其中运行并存储集群元数据的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域。 注册集群后,此区域便无法更改。

  2. 更新集群:

    bmctl update cluster -c USER_CLUSTER_NAME \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    替换以下内容:

    • USER_CLUSTER_NAME:要更新的用户集群的名称。

    • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

注册管理员集群

gcloud CLI

如果需要填写 --admin-cluster-membership 标志的 ADMIN_CLUSTER_NAME 占位符,请务必滚动。

gcloud container bare-metal admin-clusters enroll ADMIN_CLUSTER_NAME \
    --project=PROJECT_ID \
    --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
    --location=REGION

替换以下内容:

  • ADMIN_CLUSTER_NAME:您要注册的管理员集群的名称。

  • PROJECT_ID:舰队宿主项目的 ID。

    ADMIN_CLUSTER_NAMEPROJECT_ID 用于为 --admin-cluster-membership 标志构建完整指定的集群名称。

  • REGION:GKE On-Prem API 运行并存储集群元数据的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域。 注册集群后,此区域便无法更改。

bmctl

在管理员工作站上执行以下步骤。

  1. 将以下部分添加到管理员集群配置文件:

    gkeOnPremAPI:
      enabled: true
      location: REGION
    

    REGION 替换为 GKE On-Prem API 在其中运行并存储集群元数据的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域。 注册集群后,此区域便无法更改。

  2. 更新集群:

    bmctl update cluster -c ADMIN_CLUSTER_NAME \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    请替换以下内容:

    • ADMIN_CLUSTER_NAME:要更新的管理员集群的名称。

    • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

获取有关集群的信息

注册集群后,您可以使用以下命令获取有关集群的信息:

用户集群

  • 要描述用户集群,请执行以下操作:
gcloud container bare-metal clusters describe USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=REGION
  • 要列出您的用户集群,请执行以下操作:
gcloud container bare-metal clusters list \
    --project=PROJECT_ID \
    --location=-

设置 --location=- 时,意味着列出所有区域中的所有集群。如果您需要缩小列表范围,请将 --location 设置为您在注册集群时指定的区域。

管理员集群

  • 要描述管理员集群,请执行以下操作:
gcloud container bare-metal admin-clusters describe ADMIN_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=REGION
  • 如需列出管理员集群,请执行以下操作:
gcloud container bare-metal admin-clusters list \
    --project=PROJECT_ID \
    --location=-

设置 --location=- 时,意味着列出所有区域中的所有集群。如果您需要缩小列表范围,请将 --location 设置为您在注册集群时指定的区域。

连接到集群

使用 GKE On-Prem API 注册集群后,您需要选择和配置身份验证方法,以便通过 Google Cloud 控制台管理集群。您选择的身份验证方法还可以控制通过命令行对集群的访问。详情请参阅以下内容: