21.10. VMware vSphere 上集群的多个区域和区域配置
作为管理员,您可以为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群指定多个区域和区域。此配置降低了硬件故障或网络中断的风险,从而导致集群失败。
故障域配置列出了创建拓扑的参数。以下列表指出其中一些参数:
-
computeCluster
-
datacenter
-
datastore
-
networks
-
resourcePool
为 OpenShift Container Platform 集群定义了多个区域和区域后,您可以创建或将节点迁移到另一个故障域。
如果要将预先存在的 OpenShift Container Platform 集群计算节点迁移到故障域,您必须为计算节点定义一个新的计算机器集。此新机器集可以根据故障域的拓扑扩展计算节点,并缩减预先存在的计算节点。
云供应商将 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签添加到机器集资源置备的任何计算节点。
如需更多信息,请参阅创建计算机器集。
21.10.1. 在 vSphere 上为集群指定多个区域和区域
您可以配置 infrastructure.config.openshift.io
配置资源,为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群指定多个区域和区域。
云控制器管理器和 vSphere Container Storage Interface (CSI) Operator 驱动程序的拓扑感知功能需要有关托管 OpenShift Container Platform 集群的 vSphere 拓扑的信息。此拓扑信息存在于 infrastructure.config.openshift.io
配置资源中。
在为集群指定区域和区域前,您必须确保所有数据中心和计算集群都包含标签,以便云供应商可以向节点添加标签。例如,如果 data-center-1
代表 region-a
,compute-cluster-1
代表 zone-1
,则云供应商会将值为 region-a
的 openshift-region
目录标签添加到 data-center-1
。另外,云供应商将值为 zone-1
的 openshift-zone
目录标签添加到 compute-cluster-1
。
您可以将具有 vMotion 功能的 control plane 节点迁移到故障域。将这些节点添加到故障域后,云供应商会为这些节点添加 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签。
先决条件
-
您在 vCenter 服务器上创建了
openshift-region
和openshift-zone
标签类别。 - 您可以确保每个数据中心和计算集群都包含代表相关区域或区域的名称的标签,或两者。
- 可选:如果您为安装程序定义了 API 和 Ingress 静态 IP 地址,您必须确保所有区域和区共享一个通用的第 2 层网络。此配置可确保 API 和 Ingress 虚拟 IP (VIP) 地址可以与集群交互。
如果您在创建节点或迁移节点前没有向所有数据中心和计算机器提供标签,则云供应商无法将 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签添加到节点。这意味着服务无法将流量路由到节点。
流程
运行以下命令,编辑集群的
infrastructure.config.openshift.io
自定义资源定义(CRD),以指定资源的failureDomains
部分中的多个区域和区域:$ oc edit infrastructures.config.openshift.io cluster
名为
cluster
的实例的infrastructure.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 集群的 CRD 中定义后,不得修改或删除故障域。对此配置执行任何操作可能会影响 control plane 机器的可用性和容错。
- 保存资源文件以应用更改。
其他资源
21.10.2. 为集群启用多个第 2 层网络
您可以将集群配置为使用多个第 2 层网络配置,以便节点间的数据传输可以跨越多个网络。
先决条件
- 您在机器间配置了网络连接,以便集群组件可以相互通信。
流程
如果使用安装程序置备的基础架构安装集群,您必须确保所有 control plane 节点共享一个通用的第 2 层网络。另外,确保为 Ingress pod 调度配置的计算节点共享一个通用的第 2 层网络。
- 如果需要计算节点跨越多个第 2 层网络,您可以创建可托管 Ingress pod 的基础架构节点。
- 如果您需要在额外第 2 层网络间置备工作负载,您可以在 vSphere 上创建计算机器集,然后将这些工作负载移到目标第 2 层网络。
如果在您提供的基础架构上安装集群(定义为用户置备的基础架构),请完成以下步骤以满足您的需要:
- 配置 API 负载均衡器和网络,以便负载均衡器可以访问 control plane 节点上的 API 和 Machine Config Server。
- 配置 Ingress 负载均衡器和网络,以便负载均衡器可以访问计算或基础架构节点上的 Ingress pod。
21.10.3. 集群范围的基础架构 CRD 的参数
您必须在集群范围的基础架构、infrastructure. config.openshift.io
、自定义资源定义(CRD) 中为特定参数设置值,以定义在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群的多个区域和区域。
下表列出了为 OpenShift Container Platform 集群定义多个区域和区域的必要参数:
参数 | 描述 |
---|---|
| OpenShift Container Platform 集群的 vCenter 服务器。您只能为集群指定一个 vCenter。 |
| 与 OpenShift Container Platform 集群关联的 vCenter 数据中心。 |
| vCenter 服务器的 TCP 端口。 |
| vCenter 服务器的完全限定域名 (FQDN)。 |
| 故障域列表。 |
| 故障域的名称。 |
|
分配给故障域拓扑的 |
|
分配给故障域的拓扑的 |
| 与故障域关联的 vCenter reources。 |
| 与故障域关联的数据中心。 |
| 与故障域关联的计算机器的完整路径。 |
| 与故障域关联的资源池的完整路径。 |
| 与故障域关联的数据存储的完整路径。 |
| 与故障域关联的端口组列表。只能定义一个 portgroup。 |