×

作为管理员,您可以为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群指定多个区域和区域。此配置可降低硬件故障或网络中断导致集群故障的风险。

故障域配置列出了创建拓扑的参数。以下列表列出了一些这些参数

  • computeCluster

  • datacenter

  • datastore

  • networks

  • resourcePool

定义了 OpenShift Container Platform 集群的多个区域和区域后,您可以创建或将节点迁移到另一个故障域。

如果要将预先存在的 OpenShift Container Platform 集群计算节点迁移到故障域,则必须为计算节点定义新的计算机器集。此新的机器集可以根据故障域的拓扑结构扩展计算节点,并缩减预先存在的计算节点。

云提供商会向机器集资源配置的任何计算节点添加topology.kubernetes.io/zonetopology.kubernetes.io/region标签。

更多信息,请参见创建计算机器集

为在 vSphere 上运行的集群指定多个区域和区域

您可以配置infrastructures.config.openshift.io配置资源,以指定在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群的多个区域和区域。

云控制器管理器和 vSphere 容器存储接口 (CSI) 运算符驱动程序的拓扑感知功能需要有关托管 OpenShift Container Platform 集群的 vSphere 拓扑的信息。此拓扑信息存在于infrastructures.config.openshift.io配置资源中。

在为集群指定区域和区域之前,必须确保所有数据中心和计算集群都包含标签,以便云提供商可以向您的节点添加标签。例如,如果data-center-1代表region-a,而compute-cluster-1代表zone-1,则云提供商会向data-center-1添加值为region-aopenshift-region类别标签。此外,云提供商还会向compute-cluster-1添加值为zone-1openshift-zone类别标签。

您可以使用 vMotion 功能将控制平面节点迁移到故障域。将这些节点添加到故障域后,云提供商会向这些节点添加topology.kubernetes.io/zonetopology.kubernetes.io/region标签。

先决条件
  • 您已在 vCenter 服务器上创建了openshift-regionopenshift-zone标签类别。

  • 您已确保每个数据中心和计算集群都包含表示其关联区域或区域(或两者)名称的标签。

  • 可选:如果您为安装程序定义了**API**和**Ingress**静态 IP 地址,则必须确保所有区域和区域共享一个公共的 2 层网络。此配置可确保 API 和 Ingress 虚拟 IP (VIP) 地址可以与您的集群交互。

如果您在创建节点或迁移节点之前未向所有数据中心和计算集群提供标签,则云提供商无法向节点添加topology.kubernetes.io/zonetopology.kubernetes.io/region标签。这意味着服务无法将流量路由到您的节点。

步骤
  1. 编辑集群的infrastructures.config.openshift.io自定义资源定义 (CRD),以在资源的failureDomains部分中指定多个区域和区域,方法是运行以下命令

    $ oc edit infrastructures.config.openshift.io cluster
    名为cluster的实例的示例infrastructures.config.openshift.io CRD,其配置中定义了多个区域和可用区
    spec:
      cloudConfig:
        key: config
        name: cloud-provider-config
      platformSpec:
        type: vSphere
        vsphere:
          vcenters:
            - datacenters:
                - <region_a_data_center>
                - <region_b_data_center>
              port: 443
              server: <your_vcenter_server>
          failureDomains:
            - name: <failure_domain_1>
              region: <region_a>
              zone: <zone_a>
              server: <your_vcenter_server>
              topology:
                datacenter: <region_a_dc>
                computeCluster: "</region_a_dc/host/zone_a_cluster>"
                resourcePool: "</region_a_dc/host/zone_a_cluster/Resources/resource_pool>"
                datastore: "</region_a_dc/datastore/datastore_a>"
                networks:
                - port-group
            - name: <failure_domain_2>
              region: <region_a>
              zone: <zone_b>
              server: <your_vcenter_server>
              topology:
                computeCluster: </region_a_dc/host/zone_b_cluster>
                datacenter: <region_a_dc>
                datastore: </region_a_dc/datastore/datastore_a>
                networks:
                - port-group
            - name: <failure_domain_3>
              region: <region_b>
              zone: <zone_a>
              server: <your_vcenter_server>
              topology:
                computeCluster: </region_b_dc/host/zone_a_cluster>
                datacenter: <region_b_dc>
                datastore: </region_b_dc/datastore/datastore_b>
                networks:
                - port-group
          nodeNetworking:
            external: {}
            internal: {}

    在为VMware vSphere集群创建并定义故障域后,请勿修改或删除该故障域。对该配置执行任何这些操作都可能会影响控制平面机器的可用性和容错能力。

  2. 保存资源文件以应用更改。

为您的集群启用多层2网络

您可以将集群配置为使用多层2网络配置,以便节点之间的数据传输可以跨越多个网络。

先决条件
  • 您已配置机器之间的网络连接,以便集群组件可以相互通信。

步骤
  • 如果您使用安装程序预配的基础架构安装了集群,则必须确保所有控制平面节点共享一个公共的2层网络。此外,请确保为 Ingress Pod 调度配置的计算节点共享一个公共的2层网络。

    • 如果您需要计算节点跨越多个2层网络,您可以创建可以托管 Ingress Pod 的基础架构节点。

    • 如果您需要跨其他2层网络供应工作负载,您可以创建vSphere上的计算机器集,然后将这些工作负载迁移到目标2层网络。

  • 如果您在您提供(定义为用户预配的基础架构)的基础架构上安装了集群,请完成以下操作以满足您的需求

    • 配置您的API负载均衡器和网络,以便负载均衡器可以访问控制平面节点上的API和机器配置服务器。

    • 配置您的 Ingress 负载均衡器和网络,以便负载均衡器可以访问计算节点或基础架构节点上的 Ingress Pod。

集群范围基础架构CRD的参数

您必须在集群范围的基础架构infrastructures.config.openshift.io自定义资源定义 (CRD) 中为特定参数设置值,以便为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群定义多个区域和可用区。

下表列出了为 OpenShift Container Platform 集群定义多个区域和可用区的必填参数

参数 描述

vcenters

OpenShift Container Platform 集群的vCenter服务器。您可以指定单个vCenter,也可以指定最多3个vCenter(目前为技术预览功能)。

datacenters

将创建或当前存在与 OpenShift Container Platform 集群关联的虚拟机的 vCenter 数据中心。

port

vCenter服务器的TCP端口。

server

vCenter服务器的完全限定域名 (FQDN)。

failureDomains

故障域列表。

name

故障域的名称。

region

分配给故障域拓扑的openshift-region标签的值。

zone

分配给故障域拓扑的openshift-zone标签的值。

topology

与故障域关联的vCenter资源。

datacenter

与故障域关联的数据中心。

computeCluster

与故障域关联的计算集群的完整路径。

resourcePool

与故障域关联的资源池的完整路径。

datastore

与故障域关联的数据存储的完整路径。

networks

与故障域关联的端口组列表。只能定义一个端口组。