创建基本集群

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

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

须知事项

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

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

过程概览

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

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

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

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

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

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

1. 登录 Google Cloud CLI

设置 Google Distributed Cloud 需要多个具有不同权限的服务账号。因此,您必须使用具有创建和配置服务账号所需权限的账号登录 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_CONTROL_PLANE_NODE_IP_1
ADMIN_CONTROL_PLANE_NODE_IP_2
ADMIN_CONTROL_PLANE_NODE_IP_3
一个用户集群中控制平面节点的 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 下载到当前目录:

gcloud storage cp gs://gke-on-prem-release/gkeadm/1.30.0-gke.1930/linux/gkeadm ./
chmod +x gkeadm

您需要 gkeadm 版本(也是 Google Distributed Cloud 的版本)来创建管理员集群和用户集群配置文件。如需检查 gkeadm 的版本,请运行以下命令:

./gkeadm version

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

gkeadm 1.30.100 (1.30.0-gke.1930)

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

创建凭据文件

在当前目录中创建并保存一个名为 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
********************************************************************

在上面的输出中,IP 地址是一个示例。管理员工作站的 IP 地址有所不同。请记下管理员工作站的 IP 地址。下一步操作将会用到该地址。

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

连接到管理员工作站

使用上述输出中显示的命令获取与管理员工作站的 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 命令。

在管理员工作站上,输入 exit 以终止 SSH 连接并返回本地机器。

将审核日志记录密钥复制到管理员工作站

在上一部分中,您为审核日志记录服务账号创建了 JSON 密钥文件。

将 JSON 密钥文件复制到管理员工作站上的主目录。例如,在本地机器上:

scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

查看管理员工作站上的文件

与管理员工作站再次建立 SSH 连接。

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

ls -1

输出内容应包含:

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

例如:

admin-cluster.yaml
admin-ws-config.yaml
audit-logging-key.json
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
日志记录监控服务账号密钥文件名
示例:log-mon-sa-2203040617.json
LOG_MON_SA_KEY
审核日志记录服务账号密钥文件名
示例:audit-logging-key.json
AUDIT_LOG_SA_KEY
组件访问服务账号密钥文件名
示例:sa-key.json
COMPONENT_ACCESS_SA_KEY
vCenter 证书文件名
示例:vc01-cert.pem
CA_CERT_FILE

4. 创建管理员集群

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

创建管理员集群配置文件

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

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.30.0-gke.1930-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"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
      hostname: "admin-cp-vm-1"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
      hostname: "admin-cp-vm-2"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "PROJECT_ID"
  clusterLocation: us-central1
  serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"

验证管理员集群配置文件

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

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

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

admin-cp-vm-1   Ready    control-plane,master ...
admin-cp-vm-2   Ready    control-plane,master ...
admin-cp-vm-3   Ready    control-plane,master ...

启用 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 中注册。在 GKE On-Prem API 中注册管理员集群后,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 这些标准工具来创建、升级、更新和删除由管理员集群管理的用户集群。注册集群还可让您运行 gcloud 命令来获取集群的相关信息

5. 创建用户集群

本部分提供了使用控制台、gkectl、Terraform 或 gcloud CLI 创建用户集群的步骤。

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.30.0-gke.1930"
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"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  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 中注册。这可让您使用控制台或 gcloud CLI 查看集群详细信息并管理集群生命周期。例如,您可以运行 gcloud 命令来获取有关用户集群的信息

控制台

  1. 在 Google Cloud 控制台中,前往 Create a Google Distributed Cloud cluster 页面。

    前往 Create a Google Distributed Cloud cluster

  2. 选择您要供创建集群的 Google Cloud 项目。所选项目也会用作舰队宿主项目。该项目必须是管理员集群注册到的项目。创建用户集群后,它会自动注册到所选项目的舰队。

以下部分将指导您配置用户集群。

前提条件

  1. 熟悉前提条件页面上的信息。

  2. 点击页面底部的下一页

集群基本信息

  1. 对于名称,请输入用户集群的名称:例如 minimal-installation-user-cluster

  2. 对于管理员集群,选择 minimal-installation-admin-cluster

  3. 对于 GCP API 位置字段,选择 us-central1

  4. 版本字段中,选择 1.30.0-gke.1930。

  5. 您无需打开授权部分或 vCenter 配置部分。

  6. 点击下一步

控制平面

  1. 控制平面节点 IP 下,对于网关,输入 DEFAULT_GATEWAY_IP

  2. 对于子网掩码,输入 NETMASK

  3. IP 地址下,对于 IP 地址 1,输入 USER_CONTROL_PLANE_NODE_IP。将主机名 1 留空。

  4. 点击下一步

网络

在本部分中,您将指定集群的节点、Pod 和 Service 的 IP 地址。用户集群需要为每个节点分配一个 IP 地址,并为集群升级、更新和自动修复期间所需的临时节点额外分配一个 IP 地址。如需了解详情,请参阅用户集群需要多少个 IP 地址?

  1. 工作器节点 IP 下,确保为 IP 模式选择静态

  2. 对于网关,输入 DEFAULT_GATEWAY_IP

  3. 对于子网掩码,输入 NETMASK

  4. IP 地址下,输入以下地址:

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

主机名字段留空。

  1. 对于 Service CIDR,输入 10.96.0.0/20。对于 Pod CIDR,输入 192.168.0.0/16

  2. 对于 DNS 服务器 1,输入 DNS_SERVER_IP

  3. 对于 NTP 服务器 1,请输入 NTP_SERVER_IP

  4. DNS 搜索网域留空。

  5. 点击下一步

负载均衡器

  1. 对于负载均衡器类型,选择与 MetalLB 捆绑

  2. 地址池下,使用默认名称。

  3. IP 地址下,对于 IP 地址范围 1,输入 USER_INGRESS_VIP/32

    点击添加 IP 地址范围。对于 IP 地址范围 1,输入 SERVICE_VIP_1/32

    点击添加 IP 地址范围。对于 IP 地址范围 2,输入 SERVICE_VIP_2/32

  4. 对于 IP 地址分配,选择自动

  5. 取消选中避免使用有问题的 IP 地址

  6. 虚拟 IP 下,对于控制平面 VIP,输入 USER_CONTROL_PLANE_VIPIngress VIP 已填写。

  7. 点击继续

功能

  1. 保留所有默认值。

  2. 点击下一步

节点池

  1. 保留所有默认值。

  2. 点击验证并完成以创建用户集群。创建用户集群需要 15 分钟或更长时间。控制台会在验证设置并在数据中心内创建集群时显示状态消息。

    如果验证设置时出现错误,控制台将显示一条错误消息,该消息应足够明确,便于您解决配置问题并再次尝试创建集群。

    如需详细了解可能的错误以及解决方法,请参阅排查在 GKE On-Prem API 中注册的集群的问题

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.30.0-gke.1930"
      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.30.0-gke.1930 \
  --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 Kubernetes Engine 集群概览页面上查看集群。

创建节点池:

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

后续步骤

您现在已完成 Google Distributed Cloud 的这一极简安装。(可选)您可以通过部署应用来查看安装过程的实际情况。