本页面介绍了如何使用 Google Cloud 控制台或 Google Cloud CLI (gcloud CLI) 创建用户集群。这两个标准 Google Cloud 客户端都使用 Anthos On-Prem API 创建集群。
什么是 Anthos On-Prem API?
Anthos On-Prem API 是由 Google Cloud 托管的 API,可让您使用 Terraform 和标准 Google Cloud 应用管理本地集群的生命周期。Anthos On-Prem API 在 Google Cloud 的基础架构中运行。Terraform、控制台和 gcloud CLI 是 API 的客户端,它们使用 API 在数据中心内创建集群。
如需管理集群的生命周期,Anthos On-Prem API 必须将有关集群状态的元数据存储在 Google Cloud 中,并使用创建集群时指定的 Google Cloud 区域。此元数据可让 API 管理集群生命周期,并且不包含特定于工作负载的数据。
使用 Anthos On-Prem API 客户端创建集群时,您需要指定 Google Cloud 项目。创建集群后,它会自动注册到指定项目的舰队。此项目称为舰队宿主项目。集群创建后,舰队宿主项目便无法更改。
如果您愿意,可以通过创建管理员集群配置文件并使用 bmctl
来创建管理员集群,如创建管理员集群中所述。
如果要使用控制台或 gcloud CLI 管理使用 bmctl
创建的集群的生命周期,请参阅将集群配置为由 Anthos On-Prem API 管理。
IAM 权限
如果您不是 Google Cloud 项目所有者,则必须让项目所有者为您授予以下角色:
如果您想在控制台中访问 GKE Enterprise 和 Google Kubernetes Engine 页面,则还必须拥有 roles/container.viewer。
如需了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
命令行访问权限
创建集群后,如果您要使用 Connect 网关在管理员工作站以外的计算机上针对集群运行 kubectl
,请在您打算使用的计算机上安装以下命令行工具。
最新版本的 gcloud CLI。
kubectl
,用于对 Kubernetes 集群运行命令。如果您需要安装kubectl
,请按照相关instructions操作。
选择用于创建管理员集群的客户端
您可以使用控制台或 gcloud CLI 创建由 Anthos On-Prem API 管理的管理员集群。如果这是您第一次在 Bare Metal 上安装 GKE,您可能会发现控制台比 gcloud CLI 更易于使用。
在您进一步熟悉创建集群所需的信息后,您可能会发现 gcloud CLI 更方便,因为您可以将命令及其参数保存到文本文件中。如果您使用的是 CI/CD 工具(例如 Cloud Build),则可以使用 gcloud
命令创建集群,并指定 --impersonate-service-account
标志以自动执行创建操作。
前提条件
控制台
在 Google Cloud 控制台中,进入 GKE Enterprise 集群页面。
选择您要供创建集群的 Google Cloud 项目。所选项目也会用作舰队宿主项目。
点击创建集群。
在对话框中,点击本地。
在裸机旁边,点击配置。请确保选中创建管理员集群。
前提条件页面显示管理员工作站和集群节点机器的要求。网络要求部分中的 IP 地址规划器可帮助您规划一个管理员集群和一个用户集群的最简安装所需的 IP 地址。
管理员工作站前提条件
展开此部分可显示管理员工作站的硬件、操作系统和连接要求。
集群节点机器前提条件
展开此部分可显示集群节点机器的硬件、操作系统和连接要求。
网络要求
本部分可帮助您规划最简环境所需的 IP 地址。(可选)在节点 IP 地址和虚拟 IP 地址部分中,您可以提供起始节点 IP 地址和虚拟 IP 地址 (VIP),并且控制台会显示您需要的 IP 地址表。 这些 IP 地址不会应用于管理员集群配置。它们旨在帮助您规划安装所需的 IP 地址。您可以将该表下载为 CSV 文件,并将其导入电子表格或 IP 地址规划工具,以此作为跟踪集群所需的 IP 地址的起点。
查看 Google Cloud 资源:
确保舰队宿主项目中启用了所有必需的 Google API。此外,您还需要启用 Anthos On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
将 FLEET_HOST_PROJECT_ID
替换为舰队宿主项目的项目 ID。
在创建集群之前,您需要按照准备引导环境中所述在管理员工作站上运行 bmctl register bootstrap
命令。此命令可以创建所需的服务账号,使其具有创建管理员集群所需的最低要求的 IAM 权限。
如果您愿意,可以手动配置服务账号。
准备好开始后,请点击左侧导航栏中的安装引导环境。
gcloud CLI
硬件、网络和操作系统前提条件
使用 Anthos On-Prem API 客户端创建管理员集群需要满足与使用 bmctl
创建该集群相同的硬件、网络和操作系统前提条件。如需了解详情,请参阅安装前提条件。
所需的 Google API
确保舰队宿主项目中启用了所有必需的 Google API。此外,您还需要启用 Anthos On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
将 FLEET_HOST_PROJECT_ID
替换为舰队宿主项目的项目 ID。
所需的服务账号和权限
在创建集群之前,您需要按照准备引导环境中所述在管理员工作站上运行 bmctl register bootstrap
命令。此命令可以创建所需的服务账号,使其具有创建管理员集群所需的最低要求的 IAM 权限。
如果您愿意,可以手动配置服务账号。
规划 IP 地址
在创建管理员集群之前,您需要为集群规划 IP 地址。请参阅规划 IP 地址,以查看如何为高可用性 (HA) 管理员集群和两个高可用性用户集群分配 IP 地址的示例。即使您要使用 gcloud CLI 创建管理员集群,也建议您按照本部分中的控制台步骤来使用 IP 地址规划器。
准备引导环境
在创建管理员集群之前,您需要在管理员工作站上运行 bmctl register bootstrap
命令。此命令会在管理员工作站上部署 Kubernetes in Docker(种类)集群。此引导集群托管创建管理员集群所需的 Kubernetes 控制器。创建管理员集群时,引导集群上的控制器会预配节点、运行预检检查,并将管理员集群注册到舰队。成功创建管理员集群后,系统会自动删除引导集群。
控制台
输入管理员集群的名称。请注意,引导集群名称来源于在管理员集群名称前面加上 bootstrap-bootstrap-。
为管理员集群选择 GKE on Bare Metal 版本。
在 Google Cloud API 位置字段中,从列表中选择 Google Cloud 区域。此设置指定 Anthos On-Prem API 在其中运行的区域,以及在其中存储以下各项的区域:
- Anthos On-Prem API 管理集群生命周期所需的集群元数据
- 系统组件的 Cloud Logging 和 Cloud Monitoring 数据
- Cloud Audit Logs 创建的管理员审核日志
集群名称、项目和位置唯一标识 Google Cloud 中的集群。
控制台会显示您需要在管理员工作站上运行的命令。
bmctl
命令行工具必须与您要创建的集群的版本匹配。如果您已将适用的bmctl
版本下载到管理员工作站,则无需再次下载。
gcloud CLI
确保您拥有最新版本的 gcloud CLI,包括 gcloud CLI Beta 版组件。
如果您还没有 Beta 版组件,请运行以下命令进行安装:
gcloud components install beta
根据需要更新 gcloud CLI 组件:
gcloud components update
运行以下命令以使用您的 Google 账号登录:
gcloud auth login
列出您可以安装的可用 GKE on Bare Metal 版本。您为了创建引导环境而下载的
bmctl
版本必须与在管理员集群上安装的版本匹配。gcloud container bare-metal admin-clusters query-version-config \ --location=REGION
将
REGION
替换为 Anthos On-Prem API 在其中运行的 Google Cloud 区域。请指定us-west1
或其他受支持的区域。
创建引导集群
在管理员工作站上执行以下步骤。相关命令会显示在控制台中。
将您的用户凭据设置为应用默认凭据 (ADC):
gcloud auth application-default login
按照提示为 ADC 选择 Google 账号。
如果需要,将
bmctl
命令行工具下载到当前工作目录。gsutil cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl . chmod a+x ./bmctl
将
VERSION
替换为您要安装的 GKE on Bare Metal 版本。如果您从控制台复制了该命令,则该命令中已存在此版本。创建引导集群。您可以让
bmctl
创建所需的服务账号 (SA),也可以自行创建服务账号和密钥文件并将其传递给bmctl register bootstrap
命令。
bmctl
创建 SA
如果您希望 bmctl
创建所需的服务账号,使其具有创建管理员集群所需的最低要求的权限,请使用以下命令。此命令假设 bmctl
位于当前工作目录中。
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID
替换以下内容:
YOUR_PRIVATE_KEY
:SSH 私钥的路径。您在设置对节点的 SSH 根访问权限时创建了 SSH 密钥。
如果您复制了控制台中显示的命令,则表示系统已为您填写以下字段。
ADMIN_CLUSTER_NAME
:管理员集群的名称。 引导集群名称的格式必须为bootstrap-ADMIN_CLUSTER_NAME
。FLEET_HOST_PROJECT_ID
:管理员集群在创建后自动注册到的项目。
bmctl register bootstrap
命令用于创建以下服务账号。
服务账号密钥存储在 bmctl-workspace/.sa-keys
目录中。
服务账号 | 用途 | IAM 角色 |
---|---|---|
anthos-baremetal-gcr | Anthos on Bare Metal 使用此服务账号从 Google Container Registry 下载容器映像。 | 无 |
anthos-baremetal-connect | Connect Agent 使用此服务账号来维护集群与 Google Cloud 之间的连接 | roles/gkehub.connect |
anthos-baremetal-register | Connect Agent 使用此服务账号将集群注册到 Google Cloud 舰队。 | roles/gkehub.admin |
anthos-baremetal-cloud-ops | Stackdriver Agent 使用此服务账号将日志和指标从集群导出到 Cloud Logging 和 Cloud Monitoring。 |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor |
指定 SA 密钥文件
如果您愿意,可以传递您创建的服务账号密钥文件 bmctl
。以下命令使用手动配置服务账号中的密钥文件名,并假设 bmctl
和密钥文件位于当前工作目录中。
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID \ --gcr-service-account-key=anthos-baremetal-gcr.json \ --gke-agent-service-account-key=connect-agent.json \ --gke-register-service-account-key=connect-register.json \ --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json
替换以下内容:
YOUR_PRIVATE_KEY
:SSH 私钥的路径。您在设置对节点的 SSH 根访问权限时创建了 SSH 密钥。ADMIN_CLUSTER_NAME
:管理员集群的名称。 引导集群名称的格式必须为bootstrap-ADMIN_CLUSTER_NAME
。FLEET_HOST_PROJECT_ID
:管理员集群在创建后自动注册到的项目。
以下标志用于指定密钥文件的路径:
-gcr-service-account-key
:用于拉取容器映像的服务账号 (anthos-baremetal-gcr) 的密钥文件的路径。--gke-agent-service-account-key
:Connect Agent 服务账号 (anthos-baremetal-connect) 的密钥文件的路径。--gke-register-service-account-key
:用于将集群注册到舰队的 Connect Agent 服务账号 (anthos-baremetal-register) 的密钥文件的路径。--cloud-operation-service-account-key
:用于审核日志和监控项目的服务账号 (anthos-baremetal-cloud-ops) 的密钥文件的路径。
bmctl
成功创建引导集群后,您会看到如下所示的输出:
[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
创建管理员集群
控制台
在安装引导环境页面上,点击检查连接。
成功后,控制台会显示
已建立连接。您必须先建立与引导集群的连接,然后才能继续操作。如果连接未建立,请检查您为
bmctl register bootstrap
命令指定的参数:确保
--name
的值与引导环境基本信息部分中显示的派生的引导集群名称匹配。确保
--project-id
的值与您在控制台中选择的项目的 ID 匹配。
如果您需要更改引导集群名称或项目 ID,请输入
Ctrl-C
退出bmctl register bootstrap
,然后重新运行该命令。点击下一步,开始配置管理员集群。控制台中的大多数设置都对应于集群配置文件中的字段。
在节点配置下的每个节点的最大 Pod 数量中,输入一个介于 64 到 250 之间的值,或接受默认值 110。创建集群后,您将无法更新此值。
每个节点的最大 Pod 数量(称为 Pod 密度)还受集群的可用 IP 资源的限制。如需了解详情,请参阅 Pod 网络。
点击下一步。
在网络页面上,定义集群中的节点和组件相互通信的方式以及与 Kubernetes 控制平面通信的方式。
如需了解详情,请将指针悬停在每个字段旁边的
上。点击验证并创建。
控制台会在验证设置并在数据中心内创建集群时显示状态消息。
如果配置出现问题,控制台将显示一条错误消息,该消息应该足够清晰,以便您修复配置问题并再次尝试创建集群。
gcloud CLI
在创建管理员集群之前,请确认引导集群已注册为舰队成员:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
如果引导集群未列出,请检查您为 bmctl register bootstrap
指定的引导集群名称和项目 ID。如果您需要更改引导集群名称或项目 ID,请输入 Ctrl-C
退出 bmctl register bootstrap
,然后重新运行该命令。
使用以下命令创建管理员集群:
gcloud container bare-metal admin-clusters create
您为该命令指定的大多数标志都对应于用户集群配置文件中的字段。
如需创建具有捆绑式负载均衡器的管理员集群,请使用以下命令:
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --version=VERSION \ --max-pods-per-node=MAX_PODS_PER_NODE \ --control-plane-vip=CONTROL_PLANE_VIP \ --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \ --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \ --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \ --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
如果您要使用手动负载均衡,请在该命令中添加 --enable-manual-lb
。
替换以下内容:
ADMIN_CLUSTER_NAME
:管理员集群的名称。 创建集群后,此名称便无法更改。FLEET_HOST_PROJECT_ID
:管理员集群在创建后自动注册到的项目。集群创建后,舰队宿主项目便无法更改。REGION
:Anthos On-Prem API 在其中运行的 Google Cloud 区域。请指定us-west1
或其他受支持的区域。 创建集群后,此区域便无法更改。此设置指定在其中存储以下各项的区域:- Anthos On-Prem API 管理集群生命周期所需的集群元数据
- 系统组件的 Cloud Logging 和 Cloud Monitoring 数据
- Cloud Audit Logs 创建的管理员审核日志
集群名称、项目和位置唯一标识 Google Cloud 中的集群。
VERSION
:GKE on Bare Metal 版本。此版本必须与用于运行bmctl register bootstrap
的bmctl
版本匹配。您可以通过在管理员工作站上运行bmctl version
来检查bmctl
版本。MAX_PODS_PER_NODE
:对于管理员集群,允许的值为 32-250 和 64-250(非 HA 集群)。如果命令中不包含--max-pods-per-node
,则默认值为 110。创建集群后,此值便无法更新。每个节点的最大 Pod 数量(称为 Pod 密度)还受集群的可用 IP 资源的限制。如需了解详情,请参阅 Pod 网络。
CONTROL_PLANE_VIP
:集群 Kubernetes API 服务器的负载均衡器上的虚拟 IP (VIP)。在负载均衡器节点所在的子网中包含控制平面 VIP。不要在负载均衡器地址池中包含控制平面 VIP。CONTROL_PLANE_LOAD_BALANCER_PORT
:负载均衡器通过其为控制平面提供服务的端口。虽然您可以配置其他值,但端口443
是用于 HTTPS 连接的标准端口。CONTROL_PLANE_NODE_CONFIG
:控制平面节点的 IPv4 地址。控制平面节点用于运行系统工作负载。请为每个控制平面节点指定此标志。通常,如果使用最简部署,则有一台机器;如果使用高可用性 (HA) 部署,则有三台机器。请指定奇数个节点,以通过多数仲裁实现高可用性。每当您更新或升级集群时都可以更改这些地址。该标志的值采用以下格式:
'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
该值的细分以关键字
node-ip
和labels
开头;每个细分之间用英文逗号分隔。node-ip
:控制平面节点的 IP 地址。您只能为每个标志指定一个node-ip
。如果您需要指定多个节点,请分别为每个节点添加该标志。labels
:关联到节点的一个或多个键值对。
请注意以下语法规则:
- 用英文单引号将整个值括起来。
- 不允许使用空格。
- 使用英文分号分隔
labels
细分中的每个键值对。
例如:
--control-plane-node-configs 'node-ip=192.0.2.1' \ --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \ --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
SERVICE_ADDR_CIDR
:集群中 Service 的 IPv4 地址范围(采用 CIDR 格式)。CIDR 范围必须介于 /24 和 /12 之间,其中 /12 提供的 IP 地址最多。我们建议您按照 RFC 1918 中所定义,将此 IP 地址空间中的范围用于专用互联网,例如10.96.0.0/20
。POD_ADDR_CIDR
:用于用户集群中 Pod 的 IPv4 地址范围(采用 CIDR 格式)。CIDR 范围必须介于 /18 和 /8 之间,其中 /8 提供的 IP 地址最多。我们建议您按照 RFC 1918 中所定义,将此 IP 地址空间中的范围用于专用互联网,例如192.168.0.0/16
。
您必须指定以下存储标志。示例命令包括典型值。如需了解详情,请参阅配置本地存储。
--lvp-share-path
:这是可以在其中创建子目录的宿主机路径。系统会为每个子目录创建一个本地 PersistentVolume (PV)。--lvp-share-storage-class
:这是用于创建永久性卷的 StorageClass。StorageClass 在创建集群期间创建。--lvp-node-mounts-config-path
:这是可以在其中发现已装载磁盘的宿主机路径。系统会为每个装载创建一个本地 PersistentVolume (PV)。--lvp-node-mounts-config-storage
:在创建集群的过程中创建 PV 的存储类别。
如需查看标志及其说明的完整列表,请参阅 gcloud CLI 参考文档。
此命令的输出类似如下所示:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
在示例输出中,字符串 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
是长时间运行的操作的 OPERATION_ID
。您可以使用以下命令了解该操作的状态:
gcloud container bare-metal operations describe OPERATION_ID \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION
如需了解详情,请参阅 gcloud container bare-metal operations。
修复预检错误
在创建集群之前,bmctl
会运行一系列预检检查以验证配置。如果配置存在问题,gcloud ... create
命令会退出,并显示如下所示的错误:
ERROR: (gcloud.beta.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed
例如,假设由于无法访问控制平面节点,预检检查失败。在管理员工作站上,您将看到如下所示的内容:
[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK [2023-03-27 20:35:58+0000] - Validation Category: machines and network [2023-03-27 20:35:58+0000] - [PASSED] pod-cidr [2023-03-27 20:35:58+0000] - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network) [2023-03-27 20:35:58+0000] - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out [2023-03-27 20:35:58+0000] Flushing logs... OK [2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
在管理员工作站上,确保
bmctl register bootstrap
进程仍在运行。如果未运行,请使用相同的参数重新运行该命令并添加--reuse-bootstrap-cluster=true
标志。运行
gcloud ... update
以修复无效 IP 地址:gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
如需了解详情,请参阅 gcloud container bare-metal admin-clusters update。
有关集群创建过程的详细信息会输出到管理员工作站。如果预检检查通过,您会看到如下所示的内容:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
连接到管理员集群
bmctl register bootstrap
命令会为管理员工作站上的管理员集群创建 kubeconfig
文件。kubeconfig
所在的目录和文件名基于管理员集群名称,如下所示:
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
您需要限制对此 kubeconfig
的访问权限,因为它包含集群的身份验证凭据。
如果要使用 Google 身份登录集群,则可以按如下方式设置 Connect 网关:
在管理员工作站上,设置
KUBECONFIG
环境变量:export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
在环境变量中设置当前上下文:
export CONTEXT="$(kubectl config current-context)"
运行以下
gcloud
命令。此命令执行以下操作:- 为您的用户账号授予集群上的 Kubernetes
clusterrole/view
角色。 - 配置集群,以便在本地计算机上运行只读
kubectl
命令,而无需通过 SSH 连接到管理员工作站。
将
GOOGLE_ACCOUNT_EMAIL
替换为与您的 Google Cloud 账号关联的电子邮件地址。例如:--users=alex@example.com
。gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/view \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=FLEET_HOST_PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --apply
此命令的输出类似于以下内容,为了便于阅读,已将其截断:
Validating input arguments. Specified Cluster Role is: clusterrole/view Generated RBAC policy is: -------------------------------------------- ... Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
- 为您的用户账号授予集群上的 Kubernetes
相应 RBAC 政策落实到位后,您可以使用 Google 身份从控制台登录集群。此外,您还可以使用特殊 kubeconfig
以通过 Connect 网关路由请求,在管理员工作站以外的计算机上运行只读 kubectl
命令。
在管理员工作站以外的计算机上运行以下命令,以获取可通过 Connect 网关访问集群的
kubeconfig
条目。gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID
输出类似于以下内容:
Starting to build Gateway kubeconfig... Current project_id: FLEET_HOST_PROJECT_ID A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
您现在可以通过 Connect 网关运行
kubectl
命令:kubectl get pods -A