第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
ラベルを追加します。
詳細は、コンピュートマシンセットの作成 を参照してください。
10.1. vSphere 上のクラスターに複数のリージョンとゾーンを指定する
infrastructures.config.openshift.io
設定リソースを設定して、VMware vSphere インスタンス上で実行される OpenShift Container Platform クラスターに複数のリージョンとゾーンを指定できます。
クラウドコントローラーマネージャーおよび vSphere Container Storage Interface (CSI) Operator Driver のトポロジー認識機能には、OpenShift Container Platform クラスターをホストする vSphere トポロジーに関する情報が必要です。このトポロジー情報は、infrastructures.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 機能を備えたコントロールプレーンノードを障害ドメインに移行できます。これらのノードを障害ドメインに追加すると、クラウドプロバイダーはこれらのノードに topology.kubernetes.io/zone
ラベルと topology.kubernetes.io/region
ラベルを追加します。
前提条件
-
vCenter サーバー上に
openshift-region
タグカテゴリーとopenshift-zone
タグカテゴリーを作成しました。 - 各データセンターとコンピューティングクラスターに、関連付けられたリージョンまたはゾーン、あるいはその両方の名前を表すタグが含まれていることを確認しました。
- オプション: API および Ingress 静的 IP アドレスをインストールプログラムに定義した場合は、すべてのリージョンとゾーンが共通のレイヤー 2 ネットワークを共有していることを確認する必要があります。この設定により、API および Ingress Virtual IP (VIP) アドレスがクラスターと対話できるようになります。
ノードを作成するかノードを移行する前に、すべてのデータセンターとコンピューティングクラスターにタグを提供しない場合、クラウドプロバイダーは、topology.kubernetes.io/zone
ラベルと topology.kubernetes.io/region
ラベルをノードに追加できません。これは、サービスがトラフィックをノードにルーティングできないことを意味します。
手順
次のコマンドを実行して、クラスターの
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 クラスターの CRD で定義した後は、障害ドメインを変更または削除しないでください。この設定でこれらのアクションのいずれかを実行すると、コントロールプレーンマシンの可用性とフォールトトレランスに影響を与える可能性があります。
- リソースファイルを保存して変更を適用します。