在集群配置中指定 vSphere 文件夹

本文档介绍当 vCenter 配置包含父文件夹时,如何在集群配置文件中指定 vSphere 对象。它还说明了从 1.13.0 开始的预检验证应用的命名规则。

假设以下示例 vCenter 配置指示从 vCenter 根目录到特定对象的路径

主机和集群

虚拟机和模板

存储

网络

my-vcenter
  my-datacenter-folder
    my-datacenter
      my-cluster-folder
        my-cluster
          my-resourcepool
        
my-vcenter
  my-datacenter-folder
    my-datacenter
      my-vm-folder
        
my-vcenter
  my-datacenter-folder
    my-datacenter
      my-storage-folder
        my-datastore
        
my-vcenter
  my-datacenter-folder
    my-datacenter
      my-network-folder
        my-portgroup
        

如需使用 my-datastore 和 my-portgroup 在 my-resource-pool 和 my-vm-folder 中创建 Anthos 集群,请指定以下管理员集群配置:

    vCenter:
      address: "my-vcenter"
      datacenter: "my-datacenter-folder/my-datacenter"
      cluster: "my-cluster-folder/my-cluster"
      resourcePool: "my-resourcepool"
      datastore: "my-datastore"
      folder: "my-vm-folder"
    network:
      vCenter:
        networkName: "my-network-folder/my-portgroup"

  

如果资源池嵌套在另一个资源池下,请在管理员集群配置中指定资源池的完整路径,如以下示例所示:

    vCenter:
      address: "my-vcenter"
      datacenter: "my-datacenter-folder/my-datacenter"
      cluster: "my-cluster-folder/my-cluster"
      resourcePool: "my-cluster-folder/my-cluster/Resources/my-resourcepool/my-nested-resourcepool"
      datastore: "my-datastore"
      folder: "my-vm-folder"
    network:
      vCenter:
        networkName: "my-network-folder/my-portgroup"
  

如需使用 my-datastore 和 my-portgroup 在默认 ResourcePool 中创建 Anthos 管理员集群,请指定以下集群配置:

    vCenter:
      address: "my-vcenter"
      datacenter: "my-datacenter-folder/my-datacenter"
      cluster: "my-cluster-folder/my-cluster"
      resourcePool: "my-cluster-folder/my-cluster/Resources"
      datastore: "my-datastore"
      folder: "my-vm-folder"
    network:
      vCenter:
        networkName: "my-network-folder/my-portgroup"
  

如果您的 vm 文件夹嵌套在另一个 vm 文件夹中,请在管理员集群配置中指定该 vm 文件夹的完整路径,如以下示例所示:

    vCenter:
      address: "my-vcenter"
      datacenter: "my-datacenter-folder/my-datacenter"
      cluster: "my-cluster-folder/my-cluster"
      resourcePool: "my-resourcepool"
      datastore: "my-datastore"
      folder: "/my-datacenter-folder/my-datacenter/vm/my-vm-folder/my-nested-vm-folder"
    network:
      vCenter:
        networkName: "my-network-folder/my-portgroup"
  

请注意,虚拟机文件夹完整路径中必须包含第一个“/”。

这同样适用于用户集群和管理员工作站配置,因为 vCenter 部分在这些配置文件中很常见。

命名规则

指定数据存储区时不要指定父文件夹,因为数据存储区名称在数据中心内必须是唯一的。如果指定了文件夹,则会返回以下错误:

  Datastore name 'storage-folder/my-datastore' should not contain parent folders

对于所有其他 vSphere 对象类型,当 vCenter 配置包含父文件夹时,应指定父文件夹。如果集群配置中未指定所需的父文件夹,但 vCenter 配置中存在所需的文件夹,则会返回以下错误:

 Parent folder is not specified for cluster, you must specify the full path 'clusters/my-cluster' in the cluster field  
从 Anthos Clusters on VMware 1.13.0 开始,系统将根据上述规则针对以下操作验证 vSphere 对象名称:

  • gkectl create
  • gkectl check-config

在以下示例情况下,vSphere 对象解析仍然有歧义:

  • 集群从之前的版本升级,该版本违反了命名规则且 vCenter 配置包含有冲突的文件夹/对象,以及
  • 在集群创建期间不存在但后来添加了名称冲突的对象

例如,假设给定 vCenter 配置

 
my-vcenter
  my-datacenter-folder
    my-datacenter
      my-cluster-folder
        my-cluster
          my-resourcepool
  

接下来,如果后来添加了以下层次结构

my-vcenter
  my-datacenter-folder
    my-datacenter
      my-cluster
        my-resourcepool
  

如果配置文件未在创建集群期间指定 my-cluster-folder,则“my-resourcepool”的解析有歧义

您可能会遇到以下错误: path 'my-resourcepool' resolves to multiple resource pools

通常,当对象解析不明确时,vSphere 库会返回以下错误消息:

 path xxx resolves to multiple objects 

如需解决此错误,请确保路径不包含冲突的对象名称(例如,一个对象名称在文件夹中,另一个不在)。移除或重命名不属于该集群并导致冲突的对象。由于创建集群后 vSphere 字段是不可变的,因此如果无法通过修改 vCenter 配置来解决冲突,则需要创建新的集群。