複数のアベイラビリティ ゾーンにまたがるクラスタの実行

このトピックでは、複数のアベイラビリティ ゾーン (AZ) で実行される新しいTanzu Kubernetes Grid (TKG) ワークロード クラスタをデプロイする方法、および複数または異なる AZ で実行するように既存の管理クラスタとワークロード クラスタを変更する方法について説明します。

インストーラ インターフェイスを使用して、複数の AZ にまたがって実行する新しいスタンドアローン管理クラスタを構成するには、「インストーラ インターフェイスを使用した管理クラスタの展開」の「vSphere リソースの構成」を参照してください。

このトピックは、スタンドアローン管理クラスタを使用する TKG に適用されます。複数のアベイラビリティ ゾーンにまたがるスーパーバイザーを使用して TKG を実行する場合は、vSphere 8.0 ドキュメントの「マルチゾーン スーパーバイザー デプロイ用の vSphere Zones の作成」を参照してください。

概要

vSphere の TKG で、スタンドアローン管理クラスタとそのワークロード クラスタをホストするために Kubernetes のリージョンと AZ を任意で定義し、vSphere でタグ付けして、vSphere クラスタ、ホスト グループ、またはデータセンターに関連付けることができます。

このセットアップにより、TKG は、他のインフラストラクチャ上のリージョンや AZ と同様に、vSphere でのワークロードの分散と冗長性をサポートできます。

これらの構造がないと、vSphere オブジェクトを直接参照することで TKG クラスタを vSphere レベルで配置できますが、TKG と Kubernetes は配置を管理できません。

AZ の定義

vSphere の TKG で AZ を定義するには、Kubernetes オブジェクトを作成し、AZ の範囲に応じて vSphere オブジェクトに関連付けます。

Kubernetes オブジェクト:vSphere 上のクラスタで複数のアベイラビリティ ゾーンを有効にするために、クラスタ API プロバイダ vSphere (CAPV) は 2 つのカスタム リソース定義 (CRD) を使用します。

  • VSphereFailureDomain CRD は、リージョン/ゾーン固有のタグ付け情報と、vSphere データセンター、クラスタ、ホスト、データストアの情報を含むトポロジ定義をキャプチャします。
  • VSphereDeploymentZone CRD は、VSphereFailureDomain と Kubernetes ノードの配置制約情報との関連付けをキャプチャします。

これらのオブジェクトを作成するには、vsphere-zones.yaml ファイルなどのオブジェクト仕様で定義します。これらのファイルを使用すると、次のように異なる時間にオブジェクトを作成できます。

  • 管理クラスタを最初に作成するときに、ファイルを --az-file オプションの tanzu mc create に渡します。
    • 定義された AZ 内で管理クラスタ自体を実行するには、現時点でこのように AZ オブジェクトを作成する必要があります。
    • ワークロード クラスタに追加の AZ オブジェクトが必要で、すべての AZ 定義を 1 か所に保持する必要がある場合は、この同じファイルに追加の AZ を定義できます。これを行う場合は、env 変数として SKIP_MULTI_AZ_VERIFY=true を設定し、[tanzu mc create コマンドの実行] の [検証チェック] の説明に従って vSphere 検証をスキップします。追加の AZ で、まだすべての vSphere 構成が設定されていない可能性があるためです。
  • 管理クラスタが作成された後、ワークロード クラスタを作成する前に AZ オブジェクトを配置する必要がある場合は、ファイルを -f オプションの tanzu mc az set または kubectl apply コマンドに渡します。
  • ワークロード クラスタを作成するときに、ファイルを --az-file オプションの tanzu cluster create に渡します。

すでに作成されている AZ オブジェクトを一覧表示するには、次のコマンドを実行します。

kubectl get VSphereFailureDomain,VSphereDeploymentZone -a

Kubernetes と vSphere の関連付けVSphereFailureDomain および VSphereDeploymentZone オブジェクト定義では、次の設定を使用してリージョンと AZ を定義します。

  • リージョン:spec.region
  • ゾーン/AZ:spec.zone

vSphere タグ k8s-region および k8s-zone は、Kubernetes のリージョンと AZ を vSphere の基盤となるオブジェクトに関連付けます。

AZ 範囲:次のように、VSPHERE オブジェクトに関連付けることで、vSphere のさまざまなレベルで AZ とリージョンの範囲を設定できます。

AZ スコープ ゾーン/AZ リージョン マルチ AZ の使用
クラスタ AZ vSphere クラスタ vSphere データセンター データセンター内の複数のクラスタにノードを分散
ホスト グループの AZ ホスト グループのvSphere vSphere クラスタ 単一クラスタ内の複数のホストにノードを分散

このトピックの構成では、オブジェクトが vSphere でどのようにタグ付けされ、Kubernetes の VSphereFailureDomain 定義と VSphereDeploymentZone 定義でどのように参照されるかに基づいて、TKG クラスタ制御プレーンとワーカー ノードを vSphere オブジェクト(vSphere データセンター、クラスタ、およびホスト)に分散します。

AZ を使用するためのクラスタの構成

Kubernetes で AZ に対して定義された VSphereFailureDomain および VSphereDeploymentZone オブジェクトを使用すると、構成ファイル変数または Cluster オブジェクト プロパティのいずれか介してクラスタでこれらのオブジェクトを使用する方法を構成できます。

構成変数:クラスタ構成変数を使用するには、『構成ファイル変数のリファレンス』の「vSphere」の説明に従って、VSPHERE_AZ_0VSPHERE_AZ_1VSPHERE_AZ_2VSPHERE_AZ_CONTROL_PLANE_MATCHING_LABELSVSPHERE_REGIONVSPHERE_ZONE を設定します。

オブジェクトのプロパティCluster オブジェクト プロパティの場合、オブジェクト仕様は、制御プレーンノードとワーカー ノードの AZ をさまざまな方法で構成し、AZ を定義する VSphereDeploymentZone オブジェクトのさまざまなプロパティと照合します。

ノード タイプ spec.topology のプロパティ VSphereDeploymentZone プロパティを照合するには
制御プレーン ノード variables.controlPlaneZoneMatchingLabels metadata.labels ペアのリスト {"environment": "staging", "region": "room1"}
ワーカー ノード machineDeployments.MD-INDEX.failureDomain (マシン展開ごと) metadata.name 値のリスト [rack1,rack2,rack3]

制御プレーン ノードはラベル一致に基づいて AZ に割り当てられるため、クラスタ制御プレーン ノードが使用する可能性のある AZ の各組み合わせを区別するラベルを作成する必要があります。

前提条件

複数の AZ または異なる AZ で実行するように TKG クラスタを展開または変更するための前提条件は次のとおりです。

  • ワークロード クラスタが vSphere で実行されている Tanzu Kubernetes Grid 管理クラスタ。
  • TKG 用に設定された vSphere アカウントに次の権限が追加されている。「vSphere アカウントに必要な権限」を参照してください:
    • [ホスト (Host)] > [インベントリ (Inventory)] > [クラスタの変更 (Modify cluster)]

複数の AZ 間でのワークロード クラスタの展開

ワークロード クラスタを展開して、次のセクションで説明するように、3 つの基本的な手順で制御プレーンまたはワーカー ノードを複数のアベイラビリティ ゾーン (AZ) で実行できます。

  1. vSphere でのリージョンと AZ の準備
  2. Kubernetes での FailureDomain および DeploymentZone オブジェクトの作成
  3. クラスタの展開

vSphere でのリージョンと AZ の準備

TKG でリージョンと AZ をサポートするための vSphere を準備するには、次の手順を実行します。

  1. TKG クラスタ ノードがホストされるリージョンと AZ のvSphere オブジェクトを特定または作成します。

    • ホスト グループの AZ (Host group AZs):vSphere ホスト グループを AZ として使用している場合は、使用する AZ ごとに 1 つのホスト グループと対応する仮想マシン グループを作成する必要があります

      1. 次のいずれかの方法で、ホスト グループおよび仮想マシン グループ オブジェクトを作成します。

        • [vCenter Server] で、[構成 (Configure)] > [仮想マシン/ホスト グループ (VM/Host Groups)] > [追加 (Add)]… からホスト グループと仮想マシン グループを作成します

          • ホスト グループを作成するには、ダミーの仮想マシンを作成してグループ メンバーとして追加する必要がある場合があります。
        • govc CLI を使用して、次のような govc コマンドを実行します。たとえば、ホスト グループ rack1 および仮想マシン グループ rack1-vm-group を作成します。

          govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1 -host esx-01a.corp.tanzu esx-02a.corp.tanzu
          
          govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1-vm-group -vm
          
      2. 作成された仮想マシン グループとホスト グループの間にアフィニティ ルールを追加して、必ず作成されたホスト グループ内のホストで仮想マシン グループ内の仮想マシンが実行されるようにします。

        • [タイプ (Type)][仮想マシンからホスト (Virtual Machines to Hosts)] に設定し、[グループ内のホスト上で実行する必要があります (Must run on hosts in group)] ルールを含めます。
  2. クラスタ AZ またはホスト グループ AZ のどちらを構成しているかに応じて、vSphere オブジェクトvSphereタグ付けします。次の例では、govc CLI を使用しますが、vCenter Server の タグ & カスタム属性 ペインを使用することもできます。

    • クラスタ AZ

      AZ ごとに、govc を使用して k8s-region カテゴリ タグを作成してデータセンターに適用し、k8s-zone カテゴリ タグを作成して各 vSphere クラスタに適用します。たとえば、データセンター dc0 をリージョン us-west-1 としてタグ付けし、そのクラスタ cluster1 などを AZ us-west-1a などとしてタグ付けするには、次のようにします。

      govc tags.category.create -t Datacenter k8s-region
      
      govc tags.category.create -t ClusterComputeResource k8s-zone
      
      govc tags.create -c k8s-region us-west-1
      
      govc tags.create -c k8s-zone us-west-1a
      govc tags.create -c k8s-zone us-west-1b
      govc tags.create -c k8s-zone us-west-1c
      
      govc tags.attach -c k8s-region us-west-1 /dc0
      
      govc tags.attach -c k8s-zone us-west-1a /dc0/host/cluster1
      govc tags.attach -c k8s-zone us-west-1b /dc0/host/cluster2
      govc tags.attach -c k8s-zone us-west-1c /dc0/host/cluster3
      
    • ホスト グループの AZ (Host group AZs)

      AZ ごとに、govc を使用し、k8s-region カテゴリ タグを作成して vSphere クラスタに適用し、k8s-zone カテゴリ タグを作成して各ホストに適用します。たとえば、クラスタ /dc1/host/room1-mgmt をリージョン room1 としてタグ付けし、グループ/dc1/host/room1-mgmt/esx-01a.corp.tanzu などのホストを AZ rack1 などとしてタグ付けするには:

      govc tags.category.create -t ClusterComputeResource k8s-region
      govc tags.category.create -t HostSystem k8s-zone
      
      govc tags.create -c k8s-region room1
      
      govc tags.create -c k8s-zone rack1
      govc tags.create -c k8s-zone rack2
      govc tags.create -c k8s-zone rack3
      
      govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
      
      govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
      govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01b.corp.tanzu
      govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01c.corp.tanzu
      
  3. 各 AZ の仮想マシンを配置するために使用する vSphere リソース プールとフォルダを特定または作成します。これらの例では、govc CLI を使用して、vCenter Server のインベントリ ペインでこれを実行することもできます。

    • クラスタ AZ

      AZ ごとに、govc を使用して、3 つの AZ と 3 つの仮想マシンフォルダのそれぞれ 1 つに一致する resource-pool オブジェクトを各 vSphere クラスタ上に作成します。

      govc pool.create /dc0/host/cluster1/pool1
      govc pool.create /dc0/host/cluster2/pool2
      govc pool.create /dc0/host/cluster3/pool3
      govc folder.create /dc0/vm/folder1
      govc folder.create /dc0/vm/folder2
      govc folder.create /dc0/vm/folder3
      
    • ホスト グループの AZ (Host group AZs)

      AZ ごとに、govc を使用して、3 つの resource-pool オブジェクト、および 3 つの仮想マシン フォルダを作成します

      govc pool.create /dc1/host/cluster1/pool1
      govc pool.create /dc1/host/cluster1/pool2
      govc pool.create /dc1/host/cluster1/pool3
      govc folder.create /dc1/vm/folder1
      govc folder.create /dc1/vm/folder2
      govc folder.create /dc1/vm/folder3
      

Kubernetes での FailureDomain および DeploymentZone オブジェクトの作成

クラスタを複数のアベイラビリティ ゾーンに展開する前に、上記の「AZ の定義」の説明に従って、リージョンとゾーンの Kubernetes オブジェクト FailureDomain および DeploymentZone を定義する必要があります。

spec.regionspec.zone、および spec.topology のすべての設定が vCenter Server で構成されたオブジェクト パスおよびタグと一致する必要があります。

  • VSphereDeploymentZone オブジェクトの場合、spec.failuredomain の値は、VSphereFailureDomain 定義の metadata.name 値のいずれかと一致する必要があります。
  • VSphereDeploymentZone オブジェクトの spec.server 値は、インストーラ インターフェイスの [IaaS プロバイダ (IaaS Provider)] ペインの [VCENTER SERVER] に対して、または管理クラスタ構成ファイルの VSPHERE_SERVER 設定に対して入力された vCenter Server アドレス(IP アドレスまたは FQDN)と一致する必要があります。
  • metadata.name 値はすべて小文字にする必要があります。

vSphere クラスタ AZ またはホスト グループ AZ のどちらを構成しているかに応じて、次のように FailureDomain および DeploymentZone オブジェクトの定義を作成します。

  • クラスタ AZ

    データセンター内の複数の vSphere クラスタ ノードにワークロード クラスタを分散する方法の例として、次のコードは、us-west-1a us-west-1b および us-west-1c という 3 つの展開ゾーンに必要なオブジェクトを定義します。これらはそれぞれ独自のネットワークおよびストレージ パラメータを持つ vSphere クラスタです。

      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: us-west-1a
      spec:
        region:
          name: us-west-1
          type: Datacenter
          tagCategory: k8s-region
        zone:
          name: us-west-1a
          type: ComputeCluster
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster1
          datastore: ds-c1
          networks:
          - net1
          - net2
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: us-west-1b
      spec:
        region:
          name: us-west-1
          type: Datacenter
          tagCategory: k8s-region
        zone:
          name: us-west-1b
          type: ComputeCluster
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster2
          datastore: ds-c2
          networks:
          - net3
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: us-west-1c
      spec:
        region:
          name: us-west-1
          type: Datacenter
          tagCategory: k8s-region
        zone:
          name: us-west-1c
          type: ComputeCluster
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster3
          datastore: ds-c3
          networks:
          - net4
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: us-west-1a
        labels:
          environment: "staging"
          region: "us-west-1"
      spec:
        server: VSPHERE_SERVER
        failureDomain: us-west-1a
        placementConstraint:
          resourcePool: pool1
          folder: folder1
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: us-west-1b
        labels:
          environment: "staging"
          region: "us-west-1"
      spec:
        server: VSPHERE_SERVER
        failureDomain: us-west-1b
        placementConstraint:
          resourcePool: pool2
          folder: folder2
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: us-west-1c
        labels:
          environment: "staging"
          region: "us-west-1"
      spec:
        server: VSPHERE_SERVER
        failureDomain: us-west-1c
        placementConstraint:
          resourcePool: pool3
          folder: folder3
    

    ここで、VSPHERE_SERVER は、vCenter Server の IP アドレスまたは FQDN です。

    異なる vSphere クラスタに同じ名前のリソース プールがある場合は、VSphereDeploymentZone オブジェクトの spec.placementConstraint.resourcePool を単なる名前ではない完全なリソース パスに設定します。

  • ホスト グループの AZ (Host group AZs)

    ワークロード クラスタ ノードを単一の vSphere クラスタ内の 3 つのホスト グループに分散する方法の例として、次のコードは、3 つの AZ (rack1rackrack2、および rack3) に必要なオブジェクトを定義します。これらはそれぞれリージョン room1 として定義される同じ vSphere クラスタ内のホストのラックを表しています。

      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: rack1
      spec:
        region:
          name: room1
          type: ComputeCluster
          tagCategory: k8s-region
        zone:
          name: rack1
          type: HostGroup
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster1
          hosts:
            vmGroupName: rack1-vm-group
            hostGroupName: rack1
          datastore: ds-r1
          networks:
          - net1
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: rack2
      spec:
        region:
          name: room1
          type: ComputeCluster
          tagCategory: k8s-region
        zone:
          name: rack2
          type: HostGroup
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster1
          hosts:
            vmGroupName: rack2-vm-group
            hostGroupName: rack2
          datastore: ds-r2
          networks:
          - net2
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereFailureDomain
      metadata:
        name: rack3
      spec:
        region:
          name: room1
          type: ComputeCluster
          tagCategory: k8s-region
        zone:
          name: rack3
          type: HostGroup
          tagCategory: k8s-zone
        topology:
          datacenter: dc0
          computeCluster: cluster1
          hosts:
            vmGroupName: rack3-vm-group
            hostGroupName: rack3
          datastore: ds-c3
          networks:
          - net3
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: rack1
        labels:
          region: room1
      spec:
        server: VSPHERE_SERVER
        failureDomain: rack1
        placementConstraint:
          resourcePool: pool1
          folder: folder1
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: rack2
        labels:
          region: room1
      spec:
        server: VSPHERE_SERVER
        failureDomain: rack2
        placementConstraint:
          resourcePool: pool2
          folder: folder2
      ---
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: VSphereDeploymentZone
      metadata:
        name: rack3
        labels:
          region: room1
      spec:
        server: VSPHERE_SERVER
        failureDomain: rack3
        placementConstraint:
          resourcePool: pool3
          folder: folder3
    

    ここで、VSPHERE_SERVER は、vCenter Server の IP アドレスまたは FQDN です。

AZ の FailureDomain および DeploymentZone オブジェクトの定義を作成した後、デプロイするクラスタのタイプに基づいて続行します。

クラスタの展開

vSphere でのリージョンおよび AZ の準備」および「Kubernetes での FailureDomain および DeploymentZone オブジェクトの作成」の手順を実行した後、ノードが複数の AZ に分散されたワークロード クラスタをデプロイできます。

次の手順では、vsphere-zones.yamlFailureDomain および DeploymentZone オブジェクト定義を含むファイルとして使用します。

  1. スタンドアローン管理クラスタを使用する vSphere の構成ファイル」の説明に従って、展開するワークロード クラスタのクラスタ構成ファイルを作成します。

  2. AZ オブジェクト定義と一致するように、クラスタ構成ファイルの AZ 変数を確認または変更します。

    • VSPHERE_REGION および VSPHERE_ZONE をリージョンとゾーンのタグ カテゴリ(k8s-region および k8s-zone)に設定します。
    • マシンを展開する必要がある VsphereDeploymentZone オブジェクトの名前を使用して、VSPHERE_AZ_0VSPHERE_AZ_1VSPHERE_AZ_2 を設定します。
      • VSPHERE_AZ_0 に関連付けられた VsphereDeploymentZone は、md-0 で終わるマシン展開が展開される VSphereFailureDomain です。同様に、VSPHERE_AZ_1 は、md-1 で終わるマシン展開が展開される VSphereFailureDomainVSPHERE_AZ_2 は、md-2 で終わるマシン展開が展開される VSphereFailureDomain です。
      • AZ 構成のいずれかが定義されていない場合、そのマシン展開は VSphereFailureDomain なしで展開されます。
    • WORKER_MACHINE_COUNT は、クラスタのワーカーの合計数を設定します。ワーカーの合計数は、指定された AZ の数に対してラウンドロビン方式で分散されます。
    • VSPHERE_AZ_CONTROL_PLANE_MATCHING_LABELS は、クラスタ制御プレーン ノードが展開できる AZ のキー/値セレクタ ラベルを設定します。
      • VSPHERE_REGIONVSPHERE_ZONE が設定されている場合は、この変数を設定します。
      • ラベルは、作成する VSphereDeploymentZone リソースに存在する必要があります。
      • これらのラベルを使用すると、リージョンと環境内のすべての AZ を個別に一覧表示することなく、次のように指定できます。"region=us-west-1,environment=staging"

    AZ のクラスタ構成変数は、スタンドアローン管理クラスタとワークロード クラスタと同じように機能します。ワークロード クラスタを vSphere に展開するときに指定する必要があるオプションの完全なリストについては、「構成ファイル変数リファレンス」を参照してください。

  3. tanzu cluster create を実行してワークロード クラスタを作成します。詳細については、「ワークロード クラスタの作成」を参照してください。

    • AZ オブジェクトをクラスタとは別に作成するには、tanzu login で管理クラスタにログインし、次のコマンドを実行してから tanzu cluster create を実行します。

      tanzu mc az set -f vsphere-zones.yaml
      

      または、kubectl apply -f vsphere-zones.yaml を実行できます。

    • フラット クラスタ構成ファイルで AZ オブジェクト定義を使用し、AZ オブジェクトとクラスタ オブジェクトを一緒に作成するには、vsphere-zones.yaml ファイルを tanzu cluster create--az-file オプションに渡します。

      tanzu cluster create --file cluster-config-file.yaml --az-file vsphere-zones.yaml
      
    • AZ オブジェクト定義をクラスタ マニフェストに組み合わせるには、「クラスベースのクラスタを作成する」で説明されている 2 段階のプロセスの手順 1 に従って、クラスタ マニフェストを作成し、vsphere-zones.yaml の内容をマニフェストに追加し、手順 2 の説明に従って tanzu cluster create を実行します。

    • クラスタの作成プロセス中に、その仮想マシンとその他のリソースが vCenter Server に表示されます。

    • 仮想マシン グループを作成するために vCenter Server でダミー仮想マシンを作成した場合は、クラスタの実行中に仮想マシン グループから仮想マシンを削除できます。

複数または異なるアベイラビリティ ゾーンを使用するための既存のクラスタの更新

展開済みの管理クラスタまたはワークロード クラスタを更新して、制御プレーンまたはワーカー ノードを複数のアベイラビリティ ゾーン (AZ) で実行したり、ノードが実行されている AZ を変更したりすることができます。

AZ をクラスタの制御プレーンまたはワーカー ノード全体に割り当てたり、基盤となるマシン展開に対して AZ を設定したりして、マシン展開セットの AZ とともに vSphere マシン設定をカスタマイズできます。

既存のワークロード クラスタの AZ を更新したら、「AZ の変更に対する CPI と CSI の更新」の説明に従って、コンテナ ストレージ インターフェイス (CSI) とクラウド プロバイダ インターフェイス (CPI) を更新して変更を反映する必要があります。

次のセクションでは、さまざまなシナリオで既存のクラスタ AZ 構成を更新する方法について説明します。

制御プレーン ノードの AZ の追加

制御プレーン ノードが単一の AZ で実行される既存のクラスタを拡張して、制御プレーンが複数の AZ で実行されるようにするには、次の手順を実行します。

  1. 新しい AZ ごとに VSphereFailureDomain および VSphereDeploymentZone オブジェクトを定義する構成ファイルを準備します。以下の例 vsphere-3-zones.yaml では、リージョン room1 の AZ rack1rack2 および rack3 を定義します。

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind:VSphereFailureDomain
    metadata:
      name:rack
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name:rack
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster0
     hosts:
       vmGroupName:rack-vm-group
       hostGroupName:rack
       datastore: ds1
       networks:
       - "VM Network"
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind:VSphereFailureDomain
    metadata:
      name:rack
    spec:
      region:
        name: room1
        type: ComputeCluster
        tagCategory: k8s-region
      zone:
        name: rack2
        type: HostGroup
        tagCategory: k8s-zone
      topology:
        datacenter: dc0
        computeCluster: cluster0
      hosts:
        vmGroupName: rack2-vm-group
        hostGroupName: rack2
        datastore: ds2
        networks:
        - "VM Network"
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
      name: rack3
    spec:
      region:
        name: room1
        type: ComputeCluster
        tagCategory: k8s-region
      zone:
        name: rack3:
        type: HostGroup
        tagCategory: k8s-zone
      topology:
        datacenter: dc0
        computeCluster: cluster0
      hosts:
        vmGroupName: rack3-vm-group
        hostGroupName: rack3
        datastore: ds3
        networks:
        - "VM Network"
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
      name: rack1
      labels:
        environment: "staging"
        region: "room1"
    spec:
      server: VSPHERE_SERVER
      failureDomain: rack1
      placementConstraint:
        resourcePool: rp0
        folder: folder0
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
      name: rack2
      labels:
        environment: "staging"
        region: "room1"
    spec:
      server: VSPHERE_SERVER
      failureDomain: rack2
      placementConstraint:
        resourcePool: rp0
        folder: folder0
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
      name: rack3
      labels:
        environment: "staging"
        region: "room1"
    spec:
      server: VSPHERE_SERVER
      failureDomain: rack3
      placementConstraint:
        resourcePool: rp0
        folder: folder0
    

    ここで、VSPHERE_SERVER は、vCenter Server の IP アドレスまたは FQDN です。

    メモ:

    • vSphere 製品ドキュメントの「vSphere タグ」の説明に従って、タグが作成され、vCenter Server インベントリ内のリソースが適切にタグ付けされていることを確認します。
    • VSphereDeploymentZonespec.placementConstraint.resourcePool を設定する必要があります。クラスタにユーザーが作成したリソース プールがない場合は、値をクラスタのデフォルトのリソース プール(パスは /dc0/host/cluster1/Resources)に設定します。
    • VSphereFailureDomain オブジェクトの場合、spec.region.autoConfigure および spec.zone.autoConfigure はサポートされなくなりました。
  2. vSphereFailureDomain および VSphereDeploymentZone オブジェクトを作成します。例:

    tanzu mc az set -f vsphere-3-zones.yaml
    
  3. ターゲット クラスタの KubeAdmControlPlane を取得します。この例では、ターゲットは管理クラスタ tkg-mgmt-vc ですが、ワークロード クラスタの場合もあります。

    kubectl get kcp --selector cluster.x-k8s.io/cluster-name=tkg-mgmt-vc -n tkg-system -o=name
    
    kubeadmcontrolplane.controlplane.cluster.x-k8s.io/tkg-mgmt-vc-cpkxj
    
  4. クラスタ AZ セレクタを更新します。例:controlPlaneZoneMatchingLabels: {"environment": "staging", "region": "room1"}:

    kubectl get cluster tkg-mgmt-vc -n tkg-system -o json | jq '.spec.topology.variables |= map(if .name == "controlPlaneZoneMatchingLabels" then .value = {"environment": "staging", "region": "room1"} else . end)'| kubectl apply -f -
    
    cluster.cluster.x-k8s.io/tkg-mgmt-vc replaced
    
  5. クラスタの障害ドメインが想定どおりに更新されていることを確認します。

    kubectl get cluster tkg-mgmt-vc -n tkg-system -o json | jq -r '.status.failureDomains | to_entries[].key'
    
  6. KubeAdmControlPlanerolloutAfter のパッチを適用して、制御プレーン ノードの更新をトリガします。

    kubectl patch kcp tkg-mgmt-vc-cpkxj -n tkg-system --type merge -p "{\"spec\":{\"rolloutAfter\":\"$(date +'%Y-%m-%dT%TZ')\"}}"
    
  7. vCenter Server でノードのホストとデータストアを確認するか、次のような kubectl get node または govc vm.info コマンドを実行して、制御プレーン ノードが新しい AZ に移動したことを確認します。

    • kubectl get node NODE-NAME -o=jsonpath='{.metadata.labels.node.cluster.x-k8s.io/esxi-host}' --context tkg-mgmt-vc-admin@tkg-mgmt-vc
    • govc vm.info -json NODE-NAME | jq -r '.VirtualMachines[].Config.Hardware.Device[] | select(.DeviceInfo.Label == "Hard disk 1") | .Backing.FileName'

セレクタ ラベルを使用した新しい制御プレーンの AZ の指定

セレクタ ラベルを使用して AZ を選択するということは、VSphereDeploymentZone を、metadata.name ではなく、metadata.labels で指定することを意味します。これにより、たとえば、指定したリージョンおよび環境のすべての AZ で実行するようにクラスタの制御プレーン ノードを構成でき、AZ を個別に一覧表示する必要はありません。"region=us-west-1,environment=staging"。また、制御プレーン ノードの AZ 名を変更しなくても、クラスタ制御プレーンの AZ を更新できます。

セレクタ ラベルを使用して、既存のクラスタの制御プレーン ノードの新しい AZ を指定するには、次の手順を実行します。

  1. 新しい AZ ごとに VSphereFailureDomain および VSphereDeploymentZone オブジェクトを定義する構成ファイルを準備します。以下の例 vsphere-labeled-zones.yaml では、セレクタ ラベル メタデータを使用して AZ rack4 を定義します。

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
      name: rack4
    spec:
      region:
        name: room1
        type: ComputeCluster
        tagCategory: k8s-region
      zone:
        name: rack4
        type: HostGroup
        tagCategory: k8s-zone
      topology:
        datacenter: dc0
        computeCluster: cluster0
      hosts:
        vmGroupName: rack4-vm-group
        hostGroupName: rack4
        datastore: vsanDatastore
        networks:
        - "VM Network"
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
      name: rack4
      labels:
        environment: staging
        region: room1
    spec:
      server: VSPHERE_SERVER
      failureDomain: rack4
      placementConstraint:
        resourcePool: rp0
        folder: folder0
    
  2. VSphereFailureDomain および VSphereDeploymentZone オブジェクトを作成します。例:

    tanzu mc az set -f vsphere-labeled-zones.yaml
    
  3. AZ セレクタ ラベルを使用してクラスタを更新します。この例では、管理クラスタ tkg-mgmt-vc に対して AZ セレクタ controlPlaneZoneMatchingLabels: {"environment": "staging", "region": "room1"} を使用していますが、ワークロード クラスタの場合もあります。

    kubectl get cluster tkg-mgmt-vc -n tkg-system -o json | \
    jq '.spec.topology.variables |= \
    map(if .name == "controlPlaneZoneMatchingLabels" \
    then .value = {"environment": "staging", "region": "room1"} \
    else . end)'| kubectl apply -f -
    
    cluster.cluster.x-k8s.io/tkg-mgmt-vc replaced
    
  4. クラスタのステータスを確認して、障害ドメインが想定どおりに更新されていることを確認します。

    kubectl get cluster tkg-mgmt-vc -n tkg-system -o json | jq -r '.status.failureDomains | to_entries[].key'
    
  5. KubeAdmControlPlanerolloutAfter のパッチを適用して、制御プレーン ノードの更新をトリガします。

    kubectl patch kcp tkg-mgmt-vc-cpkxj -n tkg-system --type merge -p "{\"spec\":{\"rolloutAfter\":\"$(date +'%Y-%m-%dT%TZ')\"}}"
    
  6. vCenter Server でノードのホストとデータストアを確認するか、次のような kubectl get node または govc vm.info コマンドを実行して、制御プレーン ノードが controlPlaneZoneMatchingLabels のセレクタによって選択された新しい AZ に移動したことを確認します。この例では、新しい AZ は rack4 です。

    • kubectl get node NODE-NAME -o=jsonpath='{.metadata.labels.node.cluster.x-k8s.io/esxi-host}' --context tkg-mgmt-vc-admin@tkg-mgmt-vc
    • govc vm.info -json NODE-NAME | jq -r '.VirtualMachines[].Config.Hardware.Device[] | select(.DeviceInfo.Label == "Hard disk 1") | .Backing.FileName'

マシン展開の AZ の変更

既存のクラスタ内の AZ 構成を変更するには、そのノードの基盤となる MachineDeployment 構成に新しい AZ 値のパッチを適用します。

たとえば、クラスタ構成ファイルで VSPHERE_AZ_0rack1 に設定し、そのワーカー ノードを rack2 に移動する場合は、次の手順を実行します。

  1. クラスタに使用されている現在の AZ をクエリします。この例では、ワークロード クラスタ tkg-wc を使用しますが、管理クラスタにすることもできます。

    kubectl get cluster tkg-wc -o json \| jq -r '.spec.topology.workers.machineDeployments\[0\].failureDomain'
    
  2. 使用可能なすべての AZ を一覧表示します。

    kubectl get vspheredeploymentzones -o=jsonpath='{range .items[?(@.status.ready == true)]}{.metadata.name}{"\n"}{end}'
    
    rack1
    rack2
    
  3. tkg-wc クラスタの spec.toplogy.workers.machineDeployments 構成にパッチを適用し、そのゾーン VSphereFailureDomainrack2 に設定します。この例では、tkg-wc が単一ノードの dev プラン クラスタであると想定しています。prod プラン クラスタの場合は、クラスタ内の 3 つの MachineDeployment オブジェクト構成すべてにパッチを適用する必要があります。

    kubectl patch cluster tkg-wc --type=json -p='[{"op": "replace", "path": "/spec/topology/workers/machineDeployments/0/failureDomain", "value": "rack2"}]'
    
    cluster.cluster.x-k8s.io/tkg-wc patched
    
  4. クラスタが VSphereFailureDomain rack2 で更新されていることを確認します。

    kubectl get cluster tkg-wc -o=jsonpath='{.spec.topology.workers.machineDeployments[?(@.name=="md-0")].failureDomain}'
    
    rack2
    
  5. ワーカー ノードが VSphereFailureDomain rack2 に展開されていることを確認します。

マシン展開用の AZ の追加

TKG クラスタで使用する新しい AZ を構成して既存のクラスタで使用するには、次の手順を実行します。

  1. 新しい AZ ごとに VSphereFailureDomain および VSphereDeploymentZone オブジェクトを定義する構成ファイルを準備します。上記の「制御プレーン ノードの AZ の追加」の vsphere-3-zones.yaml の例を使用して、リージョン room1 の AZ rack1rack2 および rack3 を定義します。

  2. VSphereFailureDomain および VSphereDeploymentZone オブジェクトを作成します。

    tanzu mc az set -f vsphere-3-zones.yaml
    

    または、kubectl apply -f vsphere-3-zones.yaml を実行できます。

  3. クラスタ tkg-wcVSphereFailureDomain rack1rack2 および rack3 のパッチを適用します。この例では、tkg-wc は、3 つの MachineDeployment 構成を持つ prod プランのクラスタ プランです。dev プラン クラスタでは、クラスタの spec.toplogy.workers.machineDeployments で 1 つの MachineDeployment のみを更新する必要があります。

    kubectl patch cluster tkg-wc --type=json -p='[  \
    {"op": "replace", "path": "/spec/topology/workers/machineDeployments/0/failureDomain", "value": "rack1"}, \
    {"op": "replace", "path": "/spec/topology/workers/machineDeployments/1/failureDomain", "value": "rack2"}, \
    {"op": "replace", "path": "/spec/topology/workers/machineDeployments/2/failureDomain", "value": "rack3"}]'
    
  4. クラスタが新しい AZ を使用して更新されていることを確認します。

    kubectl get cluster tkg-wc -o=jsonpath='{range .spec.topology.workers.machineDeployments[*]}{"Name: "}{.name}{"\tFailure Domain: "}{.failureDomain}{"\n"}{end}'
    
  5. ワーカー ノードが VSphereFailureDomain rack1rack2 および rack3 に展開されていることを確認します。

AZ と新しいマシン展開の追加

TKG クラスタで使用する新しい AZ と新しい MachineDeployment オブジェクトの両方を構成して既存のクラスタで使用するには、次の手順を実行します。

  1. 新しい AZ ごとに VSphereFailureDomain および VSphereDeploymentZone オブジェクトを定義する構成ファイルを準備します。以下の例 vsphere-1-zone.yaml では、リージョン room1 の新しい AZ rack2 を定義します。

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack2
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack2
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster0
       hosts:
         vmGroupName: rack2-vm-grou
         hostGroupName: rack2
         datastore: ds-r2
       networks:
       - "VM Network"
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
      name: rack2
    spec:
      server: VSPHERE_SERVER
      failureDomain: rack2
      placementConstraint:
        resourcePool: rp0
        folder: folder0
    
  2. VSphereFailureDomain および VSphereDeploymentZone オブジェクトを作成します。

    tanzu mc az set -f vsphere-zones.yaml
    

    または、kubectl apply -f vsphere-1-zone.yaml を実行できます。

  3. 新しいマシン展開の構成ファイルを準備します。以下の例 md-1.yaml では、az プロパティが rack2 に設定された新しいマシン展開 md-1 を定義します。

    name: md-1
    replicas: 1
    az: rack2
    nodeMachineType: t3.large
    workerClass: tkg-worker
    tkrResolver: os-name=ubuntu,os-arch=amd64
    
  4. Tanzu CLI を使用して新しいノード プールを作成します。この例では、ワークロード クラスタ tkg-wc を使用しますが、管理クラスタにすることもできます。

    tanzu cluster node-pool set wl-antrea -f md-1.yaml
    
    Cluster update for node pool 'md-1' completed successfully
    
  5. 新しく作成されたノード プール内のマシン展開名を取得します。

    kubectl get machinedeployments -l
    topology.cluster.x-k8s.io/deployment-name=md-1
    -o=jsonpath='{.items[*].metadata.name}'
    
    wl-antrea-md-1-pd9vj
    
  6. マシン展開が VSphereFailureDomain rack2 で更新されていることを確認します。

    kubectl get machinedeployments wl-antrea-md-1-pd9vj -o json | \
    jq -r '.spec.template.spec.failureDomain'
    
    rack2
    
  7. md-1 のワーカー ノードが rack2 に展開されていることを確認します。

AZ の変更に対する CPI と CSI の更新

上記のセクションの説明に従ってワークロード クラスタの AZ 構成を変更した後、CPI および CSI アドオン構成を更新し、変更を反映するようにアドオンを再作成する必要があります。以下の手順では、これを行う方法を説明します。

制限事項:

  • 既存のクラスタに対して複数の AZ を有効にする、またはそのワーカー ノードまたは制御プレーン ノードを既存のクラスタの別の AZ に移動する前に、新しいクラスタ ノードがクラスタの元のパーシステント ボリューム (PV) にアクセスできることを確認する必要があります。
  • VsphereFailureDomain のさまざまなリージョンおよびゾーンのすべての tagCategory 設定が一致する必要があります。
  • vSphere CSI に対して複数の AZ を有効にする前に、マルチ AZ の kcp/worker を有効にする必要があります。

AZ 変更後の CPI の更新

クラスタの CPI アドオン構成を更新して AZ の変更を反映し、対応するパッケージ インストーラを削除して、変更を含むアドオンを再作成するには、次の手順を実行します。

  1. cb リファレンスを使用して、クラスタの vsphereCPIConfig の名前を取得します。たとえば、wl という名前のワークロード クラスタの場合は次のようになります。

    kubectl -n default get cb wl -o json \| jq -r '.spec.cpi.valuesFrom.providerRef.name'
    
  2. クラスタの vsphereCPIConfig 仕様を編集して、その regionzone を、vSphere および vsphereFailuredomain 仕様で AZ のリージョンとゾーンに設定した tagCategory フィールドに設定します。例:

    apiVersion: cpi.tanzu.vmware.com/v1alpha1
    kind: VSphereCPIConfig
    metadata:
      name: wl
      namespace: default
    spec:
      vsphereCPI:
        mode: vsphereCPI
        region: k8s-zone
        tlsCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      vmNetwork:
        excludeExternalSubnetCidr: 10.215.10.79/32
        excludeInternalSubnetCidr: 10.215.10.79/32
      zone: k8s-zone
    
  3. 変更を適用し、Reconcile succeeded を待機します。

  4. CPI パッケージ インストーラ (pkgi) が再インストールされていることを確認します。

    kubectl -n tkg-system get wl-vsphere-cpi pkgi --context wl-admin@wl
    

AZ 変更後の CSI の更新

クラスタの CSI アドオン構成を更新して AZ の変更を反映し、csinodetopology および対応するパッケージ インストーラを削除して、変更を含むアドオンを再作成するには、次の手順を実行します。

  1. cb リファレンスを使用して、クラスタの vsphereCPIConfig の名前を取得します。たとえば、wl という名前のワークロード クラスタの場合は次のようになります。

    kubectl -n default get cb wl  -o json  |jq  -r '.spec.csi.valuesFrom.providerRef.name')
    
  2. クラスタの vsphereCSIConfig 仕様を編集して、その regionzone を、vSphere および vsphereFailuredomain 仕様で AZ のリージョンとゾーンに設定した tagCategory フィールドに設定します。例:

    apiVersion: csi.tanzu.vmware.com/v1alpha1
    kind: VSphereCSIConfig
    metadata:
      name: wl
      namespace: default
    spec:
      vsphereCSI:
        config:
          datacenter: /dc0
          httpProxy: ""
          httpsProxy: ""
        insecureFlag: true
        noProxy: ""
      region: k8s-region
      tlsThumbprint: ""
      useTopologyCategories: true
      zone: k8s-zone
    mode: vsphereCSI
    
  3. 変更を適用します。

  4. csinode および csiNodeTopology オブジェクトを削除して、再作成します。csinodetopology は自動的に更新されません。

    kubectl -n delete csinode --all --context wl-admin@wl
    kubectl -n delete csinodetopology --all --context wl-admin@wl
    
  5. クラスタの vsphere-csi パッケージ インストーラを削除し、Reconcile succeeded を待機します。

    kubectl delete pkgi -n tkg-system wl-vsphere-csi --context wl-admin@wl
    
  6. 次のように、すべての csinodes オブジェクトに topologyKeys パラメータが含まれることを確認します。

    kubectl get csinodes -o jsonpath='{range .items[*]}{.metadata.name} {.spec}{"\n"}{end}'
    
    k8s-control-1 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-control-1","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-control-2 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-control-2","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-control-3 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-control-3","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-1 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-1","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-2 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-2","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-3 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-3","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-4 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-4","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-5 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-5","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    k8s-node-6 {"drivers":[{"name":"csi.vsphere.vmware.com","nodeID":"k8s-node-6","topologyKeys":["topology.csi.vmware.com/k8s-region","topology.csi.vmware.com/k8s-zone"]}]}
    
  7. 次のように、すべてのノードのトポロジ ラベルに正しい AZ リージョンとゾーンが反映されていることを確認します。

    kubectl get nodes --show-labels
    NAME            STATUS   ROLES                  AGE  VERSION   LABELS
    k8s-control-1   Ready    control-plane          1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-A
    k8s-control-2   Ready    control-plane          1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-B
    k8s-control-3   Ready    control-plane          1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-C
    k8s-node-1      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-A
    k8s-node-2      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-B
    k8s-node-3      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-B
    k8s-node-4      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-1,topology.csi.vmware.com/k8s-zone=zone-C
    k8s-node-5      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-2,topology.csi.vmware.com/k8s-zone=zone-D
    k8s-node-6      Ready    <none>                 1d   v1.21.1   topology.csi.vmware.com/k8s-region=region-2,topology.csi.vmware.com/k8s-zone=zone-D
    

アベイラビリティ ゾーンの一覧表示

tanzu mc az list コマンドを使用して、スタンドアローン管理クラスタで定義されているか、ワークロード クラスタによって使用されている AZ を一覧表示します。

  • 管理クラスタとそのワークロード クラスタで現在使用されているアベイラビリティ ゾーンを一覧表示するには、次のコマンドを実行します。

    tanzu management-cluster available-zone list
    
  • 管理クラスタで定義され、ワークロード クラスタ ノードで使用可能なすべてのアベイラビリティ ゾーンを一覧表示するには、次の手順を実行します。

    tanzu management-cluster available-zone list -a
    
  • ワークロード クラスタ CLUSTER-NAME によって現在使用されているアベイラビリティ ゾーンに対して:

    tanzu management-cluster available-zone list -c CLUSTER-NAME:
    

tanzu mc az コマンドは、tanzu management-cluster available-zone からエイリアス化されています。

出力例:

AZNAME   ZONENAME  ZONETYPE    REGIONNAME REGIONTYPE DATASTORE   NETWORK   OWNERCLUSTER STATUS
us-west-1a us-west-1a ComputeCluster us-west-1  Datacenter sharedVmfs-0 VM Network az-1     ready
us-west-1b us-west-1b ComputeCluster us-west-1  Datacenter sharedVmfs-0 VM Network az-1     ready
us-west-1c us-west-1c ComputeCluster us-west-1  Datacenter sharedVmfs-0 VM Network az-1     ready

出力により次が表示されます。

  • AZNAMEZONENAME:AZ の名前
  • ZONETYPE:AZ (ComputeCluster または HostGroup)の範囲の vSphere オブジェクト タイプ
  • REGIONNAME:AZ を含んでいるリージョンの名前
  • REGIONTYPE:リージョン(Datacenter または ComputeCluster)の範囲の vSphere オブジェクト タイプ
  • DATASTORE:リージョン内の仮想マシンをホストするデータストア
  • NETWORK:リージョン内の仮想マシンにサービスを提供するネットワーク
  • OWNERCLUSTER:AZ で実行される 1 つ以上の TKG クラスタ
  • STATUS:現在の AZ ステータス

tanzu mc az コマンド グループは、tanzu management-cluster available-zone からエイリアス化されています。

アベイラビリティ ゾーンの削除

tanzu mc az delete コマンドを使用して、次のように使用されていない AZ を削除します。

tanzu mc az delete AZNAME

ここで、AZNAME は、tanzu mc az list で一覧表示される AZ の名前です。

tanzu mc az list で AZ のOWNERCLUSTER が一覧表示されないことが示されているように、AZ を削除できるのは、AZ が現在 TKG クラスタ ノードをホストしていない場合のみです。

check-circle-line exclamation-circle-line close-line
Scroll to top icon