这是指南的第二部分,该指南将向您介绍 GKE on VMware 的一个小额概念验证安装。第一部分是设置极简基础架构,介绍如何规划 IP 地址并为部署设置必要的 vSphere 和 Google Cloud 基础架构。本文档以您在前一部分中的设置和规划为基础,介绍如何使用简单的模板(可在本文档中填写),在 vSphere 环境中创建管理员工作站、管理员集群和用户集群。然后,您可以继续部署应用。
与这种简单安装的基础架构设置一样,您使用本文档设置的集群可能不适合您的实际生产需求和使用场景。如需详细了解生产安装及其最佳实践和说明,请参阅安装指南。
准备工作
确保您已按照设置极简基础架构中的说明设置了 vSphere 和 Google Cloud 环境。
如果要使用 Terraform 创建用户集群,您需要在管理员工作站或其他计算机上使用 Terraform。
过程概览
以下是此设置涉及的主要步骤:
使用拥有创建服务账号所需权限的账号登录 Google Cloud CLI。
收集配置 GKE on VMware 所需的信息,包括您的 vCenter 用户名和密码,以及您在上一部分准备的 IP 地址。
使用创建管理员集群和用户集群所需的资源和工具(包括完成设置所需的其他服务账号)创建管理员工作站。
创建管理员集群以管理和更新用户集群。
创建用户集群以运行工作负载。
1. 登录 Google Cloud CLI
设置 GKE on VMware 需要多个具有不同权限的服务帐号。虽然您必须手动创建组件访问服务帐号,但 gkeadm
命令行工具可以在创建管理员工作站的过程中为您创建和配置其余帐号。但是,要执行此操作,您必须使用具有创建和配置服务账号所需权限的账号登录 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_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.16.7-gke.46/linux/gkeadm ./ chmod +x gkeadm
您需要使用 gkeadm
版本(也是 GKE on VMware 的版本)才能创建管理员和用户集群配置文件。如需检查 gkeadm
的版本,请运行以下命令:
./gkeadm version
以下示例输出显示了版本。
gkeadm 1.16.8 (1.16.7-gke.46)
虽然您可以下载其他版本的 gkeadm
,但本指南假定您安装的是 1.16.7-gke.46,并在所有配置文件和命令中使用该版本。
创建凭据文件
在当前目录中创建并保存一个名为 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.16.7-gke.46-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。通过在 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.16.7-gke.46" 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
验证配置并创建集群
验证用户集群配置文件是否有效且可用于创建集群:
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 控制台中,前往创建 GKE on VMware 集群页面。
选择您要供创建集群的 Google Cloud 项目。所选项目也会用作舰队宿主项目。该项目必须是管理员集群注册到的项目。创建用户集群后,它会自动注册到所选项目的舰队。
以下部分将指导您配置用户集群。
前提条件
熟悉前提条件页面上的信息。
点击页面底部的下一页。
集群基本信息
对于名称,请输入用户集群的名称:例如
minimal-installation-user-cluster
。对于管理员集群,选择 minimal-installation-admin-cluster。
对于 GCP API 位置字段,选择 us-central1。
对于版本,选择 1.16.7-gke.46。
您无需打开授权部分或 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 分钟或更长时间。控制台会在验证设置并在数据中心内创建集群时显示状态消息。
如果验证设置时出现错误,控制台将显示一条错误消息,该消息应足够明确,便于您解决配置问题并再次尝试创建集群。
如需详细了解可能的错误以及解决方法,请参阅排查在 Google Cloud 控制台中创建用户集群的问题。
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.16.7-gke.46" 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.16.7-gke.46 \ --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 的此最低安装。(可选)您可以通过部署应用来查看安装过程的实际情况。