×

您可以通过更新控制平面机器集中的值来更改 VMware vSphere 控制平面机器的配置。保存对控制平面机器集的更新后,控制平面机器集运算符将根据您配置的更新策略更新控制平面机器。

配置 VMware vSphere 集群的示例 YAML

以下示例 YAML 代码段显示了 vSphere 集群的提供程序规范和故障域配置。

VMware vSphere 提供程序规范示例

创建现有集群的控制平面机器集时,提供程序规范必须与安装程序创建的控制平面机器自定义资源 (CR) 中的 providerSpec 配置匹配。

vSphere providerSpec 值示例
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        providerSpec:
          value:
            apiVersion: machine.openshift.io/v1beta1
            credentialsSecret:
              name: vsphere-cloud-credentials (1)
            diskGiB: 120 (2)
            kind: VSphereMachineProviderSpec (3)
            memoryMiB: 16384 (4)
            metadata:
              creationTimestamp: null
            network: (5)
              devices:
              - networkName: <vm_network_name>
            numCPUs: 4 (6)
            numCoresPerSocket: 4 (7)
            snapshot: ""
            template: <vm_template_name> (8)
            userDataSecret:
              name: master-user-data (9)
            workspace: (10)
              datacenter: <vcenter_data_center_name> (11)
              datastore: <vcenter_datastore_name> (12)
              folder: <path_to_vcenter_vm_folder> (13)
              resourcePool: <vsphere_resource_pool> (14)
              server: <vcenter_server_ip> (15)
1 指定集群的密钥名称。请勿更改此值。
2 指定控制平面机器的虚拟机磁盘大小。
3 指定云提供商平台类型。请勿更改此值。
4 指定为控制平面机器分配的内存。
5 指定部署控制平面的网络。

如果集群配置为使用故障域,则此参数在故障域中配置。如果在使用故障域时在提供程序规范中指定此值,则控制平面机器集运算符将忽略它。

6 指定为控制平面机器分配的 CPU 数量。
7 指定每个控制平面 CPU 的核心数。
8 指定要使用的 vSphere 虚拟机模板,例如 user-5ddjd-rhcos

如果集群配置为使用故障域,则此参数在故障域中配置。如果在使用故障域时在提供程序规范中指定此值,则控制平面机器集运算符将忽略它。

9 指定控制平面用户数据密钥。请勿更改此值。
10 指定控制平面的工作区详细信息。

如果集群配置为使用故障域,则这些参数在故障域中配置。如果在使用故障域时在提供程序规范中指定这些值,则控制平面机器集运算符将忽略它们。

11 指定控制平面的 vCenter 数据中心。
12 指定控制平面的 vCenter 数据存储。
13 指定 vCenter 中 vSphere 虚拟机文件夹的路径,例如 /dc1/vm/user-inst-5ddjd
14 指定虚拟机的 vSphere 资源池。
15 指定 vCenter 服务器 IP 或完全限定域名。

VMware vSphere 故障域配置示例

在 VMware vSphere 基础架构上,集群范围的基础架构自定义资源定义 (CRD) `infrastructures.config.openshift.io` 定义了集群的故障域。`ControlPlaneMachineSet` 自定义资源 (CR) 中的 `providerSpec` 指定了控制平面机器集用于确保控制平面节点部署到适当故障域的故障域名称。故障域是由控制平面机器集、vCenter 数据中心、vCenter 数据存储和网络组成的基础架构资源。

通过使用故障域资源,您可以使用控制平面机器集在单独的集群或数据中心上部署控制平面机器。控制平面机器集还在定义的故障域之间平衡控制平面机器,从而为您的基础架构提供容错能力。

如果修改 `ControlPlaneMachineSet` CR 中的 `ProviderSpec` 配置,则控制平面机器集将更新部署在主基础架构和每个故障域基础架构上的所有控制平面机器。

VMware vSphere 故障域示例值
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
    machines_v1beta1_machine_openshift_io:
      failureDomains: (1)
        platform: VSphere
        vsphere: (2)
        - name: <failure_domain_name1>
        - name: <failure_domain_name2>
# ...
1 指定 OpenShift Container Platform 集群节点的 vCenter 位置。
2 为控制平面机器集指定故障域名称。

本节中的每个 `name` 字段值必须与集群范围基础架构 CRD 的 `failureDomains.name` 字段中的相应值匹配。您可以通过运行以下命令找到 `failureDomains.name` 字段的值。

$ oc get infrastructure cluster -o=jsonpath={.spec.platformSpec.vsphere.failureDomains[0].name}

`name` 字段是您可以在 `ControlPlaneMachineSet` CR 中指定的唯一受支持的故障域字段。

有关定义每个故障域资源的集群范围基础架构 CRD 的示例,请参见“在 vSphere 上为您的集群指定多个区域和区域”。

为控制平面机器启用 VMware vSphere 功能

您可以通过更新控制平面机器集中的值来启用功能。

使用机器集向机器添加标签

OpenShift Container Platform 会向其创建的每个虚拟机 (VM) 添加一个集群特定的标签。安装程序使用这些标签来选择在卸载集群时要删除的 VM。

除了分配给 VM 的集群特定标签之外,您还可以配置机器集以向其预配的 VM 添加最多 10 个其他 vSphere 标签。

先决条件
  • 您可以使用具有 `cluster-admin` 权限的帐户访问安装在 vSphere 上的 OpenShift Container Platform 集群。

  • 您可以访问与您的集群关联的 VMware vCenter 控制台。

  • 您已在 vCenter 控制台中创建了一个标签。

  • 您已安装 OpenShift CLI ( `oc` )。

步骤
  1. 使用 vCenter 控制台查找要添加到机器的任何标签的标签 ID

    1. 登录到 vCenter 控制台。

    2. 从“主页”菜单中,单击“标签和自定义属性”。

    3. 选择要添加到机器的标签。

    4. 使用您选择的标签的浏览器 URL 来标识标签 ID。

      标签 URL 示例
      https://vcenter.example.com/ui/app/tags/tag/urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL/permissions
      标签 ID 示例
      urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL
  2. 在文本编辑器中,打开现有机器集的 YAML 文件或创建一个新的 YAML 文件。

  3. 编辑 `providerSpec` 字段下的以下行

    apiVersion: machine.openshift.io/v1
    kind: ControlPlaneMachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              tagIDs: (1)
              - <tag_id_value> (2)
    # ...
    1 指定最多 10 个要添加到此机器集预配的机器的标签列表。
    2 指定要添加到机器的标签的值。例如,`urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL`。