本文是相关指南的第二部分,逐步介绍了 Google Distributed Cloud 的小型概念验证安装。第一部分是设置极简基础架构,介绍如何规划 IP 地址并为部署设置必要的 vSphere 和 Google Cloud 基础架构。本文档以您在前一部分中的设置和规划为基础,介绍如何使用简单的模板(可在本文档中填写),在 vSphere 环境中创建管理员工作站、管理员集群和用户集群。然后,您可以继续部署应用。
与这种简单安装的基础架构设置一样,您使用本文档设置的集群可能不适合您的实际生产需求和使用场景。如需详细了解生产安装及其最佳实践和说明,请参阅安装指南。
须知事项
确保您已按照设置极简基础架构中的说明设置了 vSphere 和 Google Cloud 环境。
如果要使用 Terraform 创建用户集群,则需要在管理员工作站或其他计算机上使用 Terraform。
过程概览
以下是此设置涉及的主要步骤:
使用拥有创建服务账号所需权限的账号登录 Google Cloud CLI。
收集配置 Google Distributed Cloud 所需的信息,包括 vCenter 用户名和密码,以及您在上一部分中准备的 IP 地址。
创建管理员工作站,该工作站包含创建管理员集群和用户集群所需的资源和工具,包括完成设置所需的其他服务账号。
创建管理员集群以管理和更新用户集群。
创建用户集群以运行工作负载。
1. 登录 Google Cloud CLI
设置 Google Distributed Cloud 需要多个具有不同权限的服务账号。因此,您必须使用具有创建和配置服务账号所需权限的账号登录 Google Cloud CLI,因为 gkeadm
会在您执行此设置时使用您当前的 gcloud CLI account
属性。
登录 gcloud CLI。您可以使用任何 Google 账号,但该账号必须具有必需的权限。如果您已按照本指南的上一部分操作,那么您可能已经使用创建组件访问服务账号所需的账号登录。
gcloud auth login
验证您的 gcloud CLI
account
属性是否已正确设置:gcloud config list
输出会显示 SDK
account
属性的值。例如:[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
请确保您已安装最新的 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 地址块文件
创建一个名为
user-ipblock.yaml
的文件。将以下内容复制并粘贴到
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"
创建用户集群配置文件
在
user-ipblock.yaml
所在的目录中创建名为user-cluster.yaml
的文件。将以下内容复制并粘贴到
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
验证配置并创建集群
验证用户集群配置文件是否有效且可用于创建集群:
gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
创建用户集群:
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
命令来获取有关用户集群的信息。
控制台
在 Google Cloud 控制台中,前往 Create a Google Distributed Cloud cluster 页面。
选择您要供创建集群的 Google Cloud 项目。所选项目也会用作舰队宿主项目。该项目必须是管理员集群注册到的项目。创建用户集群后,它会自动注册到所选项目的舰队。
以下部分将指导您配置用户集群。
前提条件
熟悉前提条件页面上的信息。
点击页面底部的下一页。
集群基本信息
对于名称,请输入用户集群的名称:例如
minimal-installation-user-cluster
。对于管理员集群,选择 minimal-installation-admin-cluster。
对于 GCP API 位置字段,选择 us-central1。
在版本字段中,选择 1.30.0-gke.1930。
您无需打开授权部分或 vCenter 配置部分。
点击下一步。
控制平面
在控制平面节点 IP 下,对于网关,输入 DEFAULT_GATEWAY_IP。
对于子网掩码,输入 NETMASK。
在 IP 地址下,对于 IP 地址 1,输入 USER_CONTROL_PLANE_NODE_IP。将主机名 1 留空。
点击下一步。
网络
在本部分中,您将指定集群的节点、Pod 和 Service 的 IP 地址。用户集群需要为每个节点分配一个 IP 地址,并为集群升级、更新和自动修复期间所需的临时节点额外分配一个 IP 地址。如需了解详情,请参阅用户集群需要多少个 IP 地址?。
在工作器节点 IP 下,确保为 IP 模式选择静态。
对于网关,输入 DEFAULT_GATEWAY_IP。
对于子网掩码,输入 NETMASK。
在 IP 地址下,输入以下地址:
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
将主机名字段留空。
对于 Service CIDR,输入 10.96.0.0/20。对于 Pod CIDR,输入 192.168.0.0/16。
对于 DNS 服务器 1,输入 DNS_SERVER_IP。
对于 NTP 服务器 1,请输入 NTP_SERVER_IP。
将 DNS 搜索网域留空。
点击下一步。
负载均衡器
对于负载均衡器类型,选择与 MetalLB 捆绑。
在地址池下,使用默认名称。
在 IP 地址下,对于 IP 地址范围 1,输入 USER_INGRESS_VIP/32。
点击添加 IP 地址范围。对于 IP 地址范围 1,输入 SERVICE_VIP_1/32。
点击添加 IP 地址范围。对于 IP 地址范围 2,输入 SERVICE_VIP_2/32。
对于 IP 地址分配,选择自动。
取消选中避免使用有问题的 IP 地址。
在虚拟 IP 下,对于控制平面 VIP,输入 USER_CONTROL_PLANE_VIP。Ingress VIP 已填写。
点击继续。
功能
保留所有默认值。
点击下一步。
节点池
保留所有默认值。
点击验证并完成以创建用户集群。创建用户集群需要 15 分钟或更长时间。控制台会在验证设置并在数据中心内创建集群时显示状态消息。
如果验证设置时出现错误,控制台将显示一条错误消息,该消息应足够明确,便于您解决配置问题并再次尝试创建集群。
如需详细了解可能的错误以及解决方法,请参阅排查在 GKE On-Prem API 中注册的集群的问题。
Terraform
本部分介绍如何使用 Terraform 创建用户集群和节点池。如需了解详情和其他示例,请参阅以下内容:
创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf
扩展名。在本指南中,该文件名为main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
验证用户集群 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 }
将 Terraform 资源复制到
main.tf
并保存该文件。初始化并创建 Terraform 方案:
terraform init
Terraform 会安装任何所需的库,例如 Google Cloud 提供程序。
检查配置,并根据需要进行更改:
terraform plan
应用 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 的这一极简安装。(可选)您可以通过部署应用来查看安装过程的实际情况。