第 10 章 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
标签添加到机器集资源置备的任何计算节点。
如需更多信息,请参阅创建计算机器集。
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
配置资源中。
在为集群指定区域和区域前,您必须确保所有数据中心和计算集群都包含标签,以便云供应商可以向节点添加标签。例如,如果 datacenter-1
代表 region-a
,compute-cluster-1
代表 zone-1
,则云供应商会将值为 region-a
的 openshift-region
目录标签添加到 datacenter-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_datacenter> - <region_b_datacenter> 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 机器的可用性和容错。
- 保存资源文件以应用更改。
其他资源