在虚拟 vSphere 数据中心创建用户集群

本页面介绍如何创建与管理员集群位于不同数据中心的用户集群。

从 Anthos clusters on VMware (GKE On-Prem) 1.9 版开始,您可以创建具有不同 vSphere 数据中心的管理员集群和用户集群。本文档介绍如何使用此公开预览版功能。

前提条件

确保您的管理员工作站版本已升级到 1.9 或更高版本。

第 1 步:为新用户集群创建用户集群配置文件

如需详细了解如何创建用户集群,请参阅创建用户集群

为新的用户集群创建用户集群配置文件时,如果您希望它与管理员集群位于不同的数据中心,则必须添加字段 vCenter.datacenter。如果您添加 vCenter.datacenter 字段,则还必须添加 vCenter.clustervCenter.datastorevCenter.networkName 字段。

如果管理员集群和用户集群位于不同的虚拟 vSphere 数据中心,则字段 masterNode.vSphere.datastore 是必填字段。建议您为管理员集群数据中心中的每个用户集群控制层面创建一个单独的数据存储区,以便管理员集群控制层面和用户集群控制层面具有独立的数据存储区故障域。虽然您可以将管理员集群数据存储区用于用户控制层面节点,但这会将用户控制层面节点和管理员集群置于同一数据存储区故障域中。

在此示例中,管理员集群位于 ADMIN_DATACENTER,新用户集群位于 USER_DATACENTER

apiVersion: v1
kind: UserCluster
# ...
gkeOnPremVersion: 1.9.0-gke.x
# ...
vCenter:
  datacenter: USER_DATACENTER # Required
  cluster: USER_CLUSTER # Required if resourcePool is not specified.
  folder: USER_FOLDER # Optional
  resourcePool: USER_RESOURCE_POOL # Required if cluster is not specified.
  datastore: USER_DATASTORE # Required
  credentials: # Optional
    fileRef:
      path: USER_VCENTER_CREDENTIAL_PATH
      entry: vCenter
masterNode:
  vsphere:
    datastore: USER_MASTER_DATASTORE # Required.
network:
  vCenter:
    networkName: USER_NETWORK # Required

第 2 步:上传操作系统映像模板

接下来,运行 gkectl prepare 以将操作系统映像模板上传到 USER_DATACENTER

gkectl prepare --kubeconfig ADMIN_KUBECONFIG --bundle-path BUNDLE_TARBALL --user-cluster-config USER_CLUSTER_CONFIG

替换以下内容:

  • BUNDLE_TARBALL 替换为 1.9.0-gke.x 软件包 tar 压缩文件的路径。
  • ADMIN_KUBECONFIG 替换为管理员集群 kubeconfig 文件的路径。
  • USER_CLUSTER_CONFIG 替换为用户集群配置文件的路径。

第 3 步:在单独的数据中心创建用户集群

运行 gkectl create 以在不同的数据中心创建新用户集群。此命令与用户集群与管理员集群在同一数据中心的情况相同。

gkectl create cluster --kubeconfig ADMIN_KUBECONFIG --config USER_CLUSTER_CONFIG

新用户集群的服务帐号

用户集群可以使用与管理员集群不同的 vSphere 服务帐号和 vCenter.credentials。管理员服务帐号只需要访问管理员数据中心,而用户服务帐号只需要访问相应的用户数据中心。

新用户集群的防火墙规则

管理员集群和用户集群可以在不同的 VLAN 和不同的数据中心中使用 networkName。但是,必须允许以下跨 VLAN 通信。

  • 管理员集群节点可以访问用户集群节点 IP 地址上的端口 22。用户控制层面需要此访问权限来创建通向用户节点的 ssh 隧道
  • 用户节点可以访问用户控制层面 IP 地址上的端口 443。用户节点和 pod 需要此访问权限来与 apiserver 通信。