创建基本集群

这是指南的第二部分,该指南将向您介绍 GKE on VMware 的一个小额概念验证安装。第一部分是设置极简基础架构,介绍如何规划 IP 地址并为部署设置必要的 vSphere 和 Google Cloud 基础架构。本文档以您在前一部分中的设置和规划为基础,介绍如何使用简单的模板(可在本文档中填写),在 vSphere 环境中创建管理员工作站、管理员集群和用户集群。然后,您可以继续部署应用

与这种简单安装的基础架构设置一样,您使用本文档设置的集群可能不适合您的实际生产需求和使用场景。如需详细了解生产安装及其最佳实践和说明,请参阅安装指南

准备工作

  1. 确保您已按照设置极简基础架构中的说明设置了 vSphere 和 Google Cloud 环境。

  2. 如果要使用 Terraform 创建用户集群,则需要在管理员工作站或其他计算机上使用 Terraform

过程概览

以下是此设置涉及的主要步骤:

  1. 使用拥有创建服务账号所需权限的账号登录 Google Cloud CLI

  2. 收集配置 GKE on VMware 所需的信息,包括您的 vCenter 用户名和密码,以及您在上一部分准备的 IP 地址。

  3. 使用创建管理员集群和用户集群所需的资源和工具(包括完成设置所需的其他服务账号)创建管理员工作站

  4. 创建管理员集群以管理和更新用户集群。

  5. 创建用户集群以运行工作负载。

1. 登录 Google Cloud CLI

设置 GKE on VMware 需要多个具有不同权限的服务帐号。虽然您必须手动创建组件访问服务账号,但 gkeadm 命令行工具可以在创建管理员工作站时为您创建和配置其余账号。但是,要执行此操作,您必须使用具有创建和配置服务账号所需权限的账号登录 Google Cloud CLI,因为 gkeadm 会在您执行此设置时使用您当前的 gcloud CLI account 属性

  1. 登录 gcloud CLI。您可以使用任何 Google 账号,但该账号必须具有必需的权限。如果您已按照本指南的上一部分操作,那么您可能已经使用创建组件访问服务账号所需的账号登录。

    gcloud auth login
    
  2. 验证您的 gcloud CLI account 属性是否已正确设置:

    gcloud config list
    

    输出会显示 SDK account 属性的值。例如:

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. 请确保您已安装最新的 gcloud CLI 组件:

    gcloud components update
    

    根据您安装 gcloud CLI 的方式,您可能会看到以下消息:“您无法执行此操作,因为 Google Cloud CLI 组件管理器已停用此安装。您可以运行以下命令来实现此安装的相同结果:”。按照说明复制并粘贴命令以更新组件。

2. 收集信息

使用您在设置极简基础架构中准备的信息修改下表中的占位符:

vSphere 详情
vCenter 账号的用户名 USERNAME
vCenter 账号的密码 PASSWORD
vCenter 服务器地址 ADDRESS
vCenter Server 的根 CA 证书路径(在您将用于创建管理员工作站的机器上) CA_CERT_PATH
vSphere 数据中心的名称 DATA_CENTER
vSphere 集群的名称 VSPHERE_CLUSTER
vSphere 资源池的名称或路径。如需了解详情,请参阅 vcenter.resourcePool RESOURCE_POOL
vSphere 数据存储区的名称 DATASTORE
vSphere 网络的名称 NETWORK
IP 地址
一个用于管理员工作站的 IP 地址 ADMIN_WS_IP
四个用于管理员集群节点的 IP 地址。其中包括可能在升级和更新期间使用的额外节点的地址。 ADMIN_NODE_IP_1
ADMIN_NODE_IP_2
ADMIN_NODE_IP_3
ADMIN_NODE_IP_4
一个用户集群中控制平面节点的 IP 地址。 USER_CONTROL_PLANE_NODE_IP
四个用于用户集群节点的 IP 地址。其中包括可能在升级和更新期间使用的额外节点的地址。 USER_NODE_IP_1
USER_NODE_IP_2
USER_NODE_IP_3
USER_NODE_IP_4
一个用于管理员集群 Kubernetes API 服务器的虚拟 IP 地址(VIP 地址) ADMIN_CONTROL_PLANE_VIP
一个用于用户集群 Kubernetes API 服务器的 VIP 地址 USER_CONTROL_PLANE_VIP
一个用于用户集群的 Ingress VIP 地址 USER_INGRESS_VIP
用于用户集群中 LoadBalancer 类型服务的两个 VIP 地址。 SERVICE_VIP_1
SERVICE_VIP_2
可从管理员工作站和集群节点访问的 DNS 服务器的 IP 地址 DNS_SERVER_IP
可从管理员工作站和集群节点访问的 NTP 服务器的 IP 地址 NTP_SERVER_IP
您的管理员工作站和集群节点所属子网的默认网关的 IP 地址 DEFAULT_GATEWAY_IP
您的管理员工作站和集群节点所属子网的网络掩码
示例:255.255.255.0
NETMASK
如果您的网络由代理服务器提供支持,则为代理服务器的网址。如需了解详情,请参阅代理如有必要,请在管理员工作站配置文件中手动填写此网址 PROXY_URL
Service 和 Pod 的 CIDR 范围
管理员集群和用户集群都需要 Service 的 CIDR 范围和 Pod 的 CIDR 范围。请使用以下预填充值,除非您需要更改这些值以避免与网络中的其他元素重叠
一个用于管理员集群中 Service 的 CIDR 范围 10.96.232.0/24
一个用于管理员集群中的 Pod 的 CIDR 范围 192.168.0.0/16
一个用于用户集群中的 Service 的 CIDR 范围 10.96.0.0/20
一个用于用户集群中的 Pod 的 CIDR 范围 192.168.0.0/16
Google Cloud 详细信息
您选择的 Cloud 项目的 ID PROJECT_ID
在将用于创建管理员集群的机器上,您在前一部分设置的组件访问服务账号的 JSON 密钥文件的路径。 COMPONENT_ACCESS_SA_KEY_PATH
与您的 Google Cloud 账号关联的电子邮件地址。例如:alex@example.com GOOGLE_ACCOUNT_EMAIL

3. 创建管理员工作站

您需要先创建管理员工作站,然后使用 SSH 连接到该集群,然后才能创建任何集群。管理员工作站是一个独立的虚拟机,其中包含在 vSphere 环境中创建 GKE Enterprise 集群所需的工具和资源。使用 gkeadm 命令行工具创建管理员工作站。

下载 gkeadm

gkeadm 下载到当前目录:

gsutil cp gs://gke-on-prem-release/gkeadm/1.15.9-gke.20/linux/gkeadm ./
chmod +x gkeadm

您需要使用 gkeadm 版本(也是 GKE on VMware 的版本)才能创建管理员和用户集群配置文件。如需检查 gkeadm 的版本,请运行以下命令:

./gkeadm version

以下示例输出显示了版本。

gkeadm 1.15.10 (1.15.9-gke.20)

虽然您可以下载其他版本的 gkeadm,但本指南假定您安装的是 1.15.9-gke.20,并在所有配置文件和命令中使用该版本。

创建凭据文件

在当前目录中创建并保存一个名为 credential.yaml 且包含以下内容的文件:

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
  username: "USERNAME"
  password: "PASSWORD"

创建管理员工作站配置文件

同样在当前目录中,创建并保存一个名为 admin-ws-config.yaml 并包含以下内容的文件:

gcp:
  componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
  credentials:
    address: "ADDRESS"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "DATA_CENTER"
  datastore: "DATASTORE"
  cluster: "VSPHERE_CLUSTER"
  network: "NETWORK"
  resourcePool: "RESOURCE_POOL"
  caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
  name: "minimal-installation-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "ADMIN_WS_IP"
      gateway: "DEFAULT_GATEWAY_IP"
      netmask: "NETMASK"
      dns:
      - "DNS_SERVER_IP"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

创建管理员工作站

使用以下命令创建管理员工作站:

./gkeadm create admin-workstation --auto-create-service-accounts

运行以下命令:

  • 创建管理员工作站
  • 自动创建您的安装所需的任何其他服务账号
  • 为管理员集群和用户集群创建模板配置文件

输出中会包含有关管理员工作站创建过程的详细信息,并提供一个命令供您通过 SSH 连接到管理员工作站:

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

如需详细了解如何创建管理员工作站,请参阅创建管理员工作站

连接到管理员工作站

使用上述输出中显示的命令获取与管理员工作站的 SSH 连接。例如:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

如果您需要再次查找此命令,gkeadm 会在运行 gkeadm create admin-workstation 的本地机器上的目录中生成一个名为 gke-admin-ws-... 的文件。此文件包含有关管理员工作站的详细信息,包括 SSH 命令。

查看生成的文件

在管理员工作站上,列出主目录中的文件:

ls -1

输出内容应包含:

  • admin-cluster.yaml(用于创建管理员集群的模板配置文件)。
  • user-cluster.yaml(用于创建用户集群的模板配置文件)。
  • 您在管理员工作站配置中指定的 vCenter 证书文件
  • 您在管理员工作站配置中指定的 credential.yaml 文件。
  • gkeadm 为您创建的两个服务账号的 JSON 密钥文件:连接注册服务账号和日志记录监控服务账号,以及您之前创建的组件访问服务账号的密钥文件。

例如:

admin-cluster.yaml
admin-ws-config.yaml
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

您将需要在配置文件中指定其中一些文件名才能创建集群。将这些文件名用作下表中占位符的值:

连接注册服务账号密钥文件名
示例:connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY_PATH
日志记录监控服务账号密钥文件名
示例:log-mon-sa-2203040617.json
LOG_MON_SA_KEY_PATH
组件访问服务账号密钥文件名
示例:sa-key.json
COMPONENT_ACCESS_SA_KEY_FILE
vCenter 证书文件名
示例:vc01-cert.pem
CA_CERT_FILE

4.创建管理员集群

现在,您已经使用 vCenter 和其他详细信息配置了管理员工作站,可以使用该工作站在 vSphere 环境中创建管理员集群了。在开始执行此步骤之前,请确保您已与管理员工作站建立 SSH 连接,如上所述。以下所有命令均在管理员工作站上运行。

创建管理员集群 IP 块文件

在管理员工作站上 admin-cluster.yaml 所在的目录中创建并保存一个名为 admin-ipblock.yaml 且包含以下内容的文件:

blocks:
  - netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_NODE_IP_1"
      hostname: "admin-vm-1"
    - ip: "ADMIN_NODE_IP_2"
      hostname: "admin-vm-2"
    - ip: "ADMIN_NODE_IP_3"
      hostname: "admin-vm-3"
    - ip: "ADMIN_NODE_IP_4"
      hostname: "admin-vm-4"

ips 字段是 IP 地址和主机名的数组。它们是 GKE on VMware 将分配给管理员集群节点的 IP 地址和主机名。

IP 块文件还为管理员集群节点指定子网掩码和默认网关。

创建管理员集群配置文件

打开 admin-cluster.yaml 并将其内容替换为下面的内容:

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.15.9-gke.20-full.tgz"
vCenter:
  address: "ADDRESS"
  datacenter: "DATA_CENTER"
  cluster: "VSPHERE_CLUSTER"
  resourcePool: "RESOURCE_POOL"
  datastore: "DATASTORE"
  caCertPath: "CA_CERT_FILE"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  dataDisk: "data-disks/minimal-installation-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: admin-ipblock.yaml
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_FILE"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY_PATH"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY_PATH"
  disableVsphereResourceMetrics: false

验证管理员集群配置文件

验证管理员集群配置文件是否有效以及是否可以创建集群:

gkectl check-config --config admin-cluster.yaml

将操作系统映像导入 vSphere

使用已完成的配置文件运行 gkectl prepare,以将节点操作系统映像导入 vSphere:

gkectl prepare --config admin-cluster.yaml --skip-validation-all

如果运行此命令,则系统会将映像导入 vSphere,并将其标记为虚拟机模板,包括管理员集群的映像。

此命令可能需要几分钟时间才能返回。

创建管理员集群

创建管理员集群:

gkectl create admin --config admin-cluster.yaml

发生故障后恢复管理员集群创建

如果管理员集群创建失败或被取消,您可以再次运行 create 命令:

gkectl create admin --config admin-cluster.yaml

找到管理员集群 kubeconfig 文件的位置

gkectl create admin 命令会在当前目录中创建一个名为 kubeconfig 的 kubeconfig 文件。您稍后需要此 kubeconfig 文件才能与管理员集群进行交互。

验证管理员集群正在运行

验证管理员集群是否正在运行:

kubectl get nodes --kubeconfig kubeconfig

输出会显示管理员集群节点。 例如:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

启用 RBAC 授权

如需向您的用户账号授予集群上的 Kubernetes clusterrole/cluster-admin 角色,请运行以下命令:

gcloud container fleet memberships generate-gateway-rbac \
    --membership=minimal-installation-admin-cluster \
    --role=clusterrole/cluster-admin \
    --users=GOOGLE_ACCOUNT_EMAIL \
    --project=PROJECT_ID \
    --kubeconfig=kubeconfig \
    --context=minimal-installation-admin-cluster \
    --apply

此命令的输出类似于以下内容,为了便于阅读,已将其截断:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

除此之外,RBAC 政策还支持您使用自己的 Google 身份在 Google Cloud 控制台中登录集群,以查看更多集群详细信息。

在 GKE On-Prem API 中注册集群

(可选)在 GKE On-Prem API 中注册集群。通过在 GKE On-Prem API 中注册管理员集群,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 来升级管理员集群管理的用户集群。

gcloud container vmware admin-clusters enroll minimal-installation-admin-cluster \
    --project=PROJECT_ID \
    --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
    --location=us-central1

5. 创建用户集群

本部分介绍了使用控制台 gkectl 或 Terraform 创建用户集群的步骤。

gkectl

在开始执行此过程之前,请确保您已与管理员工作站建立 SSH 连接(如上所述)。以下所有命令均在管理员工作站上运行。

创建用户集群 IP 块文件

  1. 创建一个名为 user-ipblock.yaml 的文件。

  2. 复制以下内容并将其粘贴到 user-ipblock.yaml 中,然后保存该文件:

    blocks:
      - netmask: "NETMASK"
        gateway: "DEFAULT_GATEWAY_IP"
        ips:
        - ip: "USER_NODE_IP_1"
          hostname: "user-vm-1"
        - ip: "USER_NODE_IP_2"
          hostname: "user-vm-2"
        - ip: "USER_NODE_IP_3"
          hostname: "user-vm-3"
        - ip: "USER_NODE_IP_4"
          hostname: "user-vm-4"
    

创建用户集群配置文件

  1. user-ipblock.yaml 所在的目录中创建名为 user-cluster.yaml 的文件。

  2. 复制以下内容并将其粘贴到 user-cluster.yaml 中,然后保存该文件:

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.15.9-gke.20"
enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "USER_CONTROL_PLANE_NODE_IP"
      hostname: "cp-vm-1"
loadBalancer:
  vips:
    controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
    ingressVIP: "USER_INGRESS_VIP"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "USER_INGRESS_VIP/32"
      - "SERVICE_VIP_1/32"
      - "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY_PATH"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY_PATH"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

验证配置并创建集群

  1. 验证用户集群配置文件是否有效且可用于创建集群:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
    
  2. 创建用户集群:

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
    

    创建集群大约需要 30 分钟。

找到用户集群 kubeconfig 文件的位置

gkectl create cluster 命令会在当前目录中创建一个名为 USER_CLUSTER_NAME-kubeconfig 的 kubeconfig 文件。您稍后需要此 kubeconfig 文件才能与用户集群进行互动。

验证用户集群是否正在运行

验证用户集群是否正在运行:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

USER_CLUSTER_KUBECONFIG 替换为用户集群 kubeconfig 文件的路径。

输出会显示用户集群节点。例如:

cp-vm-1     Ready    control-plane,master
user-vm-1   Ready
user-vm-2   Ready
user-vm-3   Ready

启用 RBAC 授权

如需向您的用户账号授予集群上的 Kubernetes clusterrole/cluster-admin 角色,请运行以下命令:

gcloud container fleet memberships generate-gateway-rbac \
  --membership=minimal-installation-user-cluster \
  --role=clusterrole/cluster-admin \
  --users=GOOGLE_ACCOUNT_EMAIL \
  --project=PROJECT_ID \
  --kubeconfig=USER_CLUSTER_KUBECONFIG \
  --context=minimal-installation-user-cluster \
  --apply

此命令的输出类似于以下内容,为了便于阅读,已将其截断:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

除此之外,RBAC 政策还支持您使用自己的 Google 身份在 Google Cloud 控制台中登录集群,以查看更多集群详细信息。

在 GKE On-Prem API 中注册集群

(可选)在 GKE On-Prem API 中注册集群。通过在 GKE On-Prem API 中注册用户集群,您可以使用 Google Cloud 控制台或 Google Cloud CLI 进行升级。

gcloud container vmware clusters enroll minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1

Terraform

本部分介绍如何使用 Terraform 创建用户集群和节点池。如需了解详情和其他示例,请参阅以下内容:

  1. 创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名。在本指南中,该文件名为 main.tf

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. 验证用户集群 Terraform 资源:

    以下 Terraform 资源示例填充了您在上一部分的规划表中输入的值。

    resource "google_gkeonprem_vmware_cluster" "cluster-basic" {
      name = "minimal-installation-user-cluster"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster"
      description = "User cluster config with MetalLB, static IPs, and Controlplane V2"
      enable_control_plane_v2 = "true"
      on_prem_version = "1.15.9-gke.20"
      control_plane_node {
        cpus = 4
        memory = 8192
        replicas = 1
      }
      network_config {
        service_address_cidr_blocks = ["10.96.0.0/20"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["DNS_SERVER_IP"]
          ntp_servers = ["NTP_SERVER_IP"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_NODE_IP_1"
              hostname = "user-vm-1"
            }
            ips {
              ip = "USER_NODE_IP_2"
              hostname = "user-vm-2"
            }
            ips {
              ip = "USER_NODE_IP_3"
              hostname = "user-vm-3"
            }
            ips {
              ip = "USER_NODE_IP_4"
              hostname = "user-vm-4"
            }
          }
        }
        control_plane_v2_config {
          control_plane_ip_block {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_CONTROL_PLANE_NODE_IP"
              hostname = "cp-vm-1"
            }
          }
        }
      }
      load_balancer {
        vip_config {
          control_plane_vip = "USER_CONTROL_PLANE_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "uc-address-pool"
            manual_assign = "true"
            addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"]
          }
        }
      }
      authorization {
        admin_users {
        username = "GOOGLE_ACCOUNT_EMAIL"
      }
    }
      provider = google-beta
    }
    
    resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" {
      name = "uc-node-pool"
      project = "PROJECT_ID"
      vmware_cluster = "minimal-installation-user-cluster"
      location = "us-central1"
      config {
        replicas = 3
        image_type = "ubuntu_containerd"
        enable_load_balancer = "true"
      }
      depends_on = [
        google_gkeonprem_vmware_cluster.cluster-basic
      ]
      provider = google-beta
    }
    
  3. 将 Terraform 资源复制到 main.tf 并保存该文件。

  4. 初始化并创建 Terraform 方案:

    terraform init
    

    Terraform 会安装任何所需的库,例如 Google Cloud 提供程序。

  5. 检查配置,并根据需要进行更改:

    terraform plan
    
  6. 应用 Terraform 方案以创建用户集群:

    terraform apply
    

    出现提示时,输入 yes

    创建基本用户集群和节点池大约需要 15 分钟或更长时间,具体取决于网络情况。

gcloud

创建集群:

gcloud container vmware clusters create minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1 \
  --version=1.15.9-gke.20 \
  --admin-users=GOOGLE_ACCOUNT_EMAIL \
  --service-address-cidr-blocks=10.96.0.0/20 \
  --pod-address-cidr-blocks=192.168.0.0/16 \
  --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \
  --control-plane-vip=USER_CONTROL_PLANE_VIP \
  --ingress-vip=USER_INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \
  --dns-servers=DNS_SERVER_IP \
  --ntp-servers=NTP_SERVER_IP \
  --enable-control-plane-v2 \
  --enable-dataplane-v2 \
  --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'

此命令的输出类似如下所示:

Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

在示例输出中,字符串 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 是长时间运行的操作的 OPERATION_ID。您可以使用以下命令了解该操作的状态:

gcloud container vmware operations describe OPERATION_ID \
  --project=PROJECT_ID \
  --location=us-central1

如需了解详情,请参阅 gcloud container vmware operations

创建用户集群需要 15 分钟或更长时间。您可以在 Google Cloud 控制台中的 Anthos 集群页面上查看集群。

创建节点池:

gcloud container vmware node-pools create  uc-node-pool \
  --cluster=minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --location=us-central1 \
  --image-type=ubuntu_containerd  \
  --boot-disk-size=40 \
  --cpus=4 \
  --memory=8192 \
  --replicas=3 \
  --enable-load-balancer

后续步骤

现在,您已完成 GKE on VMware 的此最低安装。(可选)您可以通过部署应用来查看安装过程的实际情况。