クラスタ ノードをホストするために使用されている仮想マシンのクラスを変更することで、TKG サービス クラスタを更新できます。

kubectl edit コマンド を使用して vmClass の定義を編集することで、TKG サービス クラスタのローリング アップデートを開始できます。変更されたクラスに基づく新しいノードがロールアウトされ、古いノードが停止します。
注: kubectl apply コマンドを使用して、デプロイされた TKG クラスタを更新することはできません。

前提条件

このタスクでは、kubectl edit コマンドを使用する必要があります。このコマンドを実行すると、KUBE_EDITOR または EDITOR 環境変数によって定義されたテキスト エディタで、クラスタ マニフェストが開かれます。ファイルを保存すると、変更が反映されてクラスタが更新されます。kubectl のエディタを構成するには、kubectl のテキスト エディタの構成を参照してください。

手順

  1. スーパーバイザー で認証します。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. ターゲット TKG クラスタがプロビジョニングされている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. ターゲット TKG クラスタを記述し、仮想マシンのクラスを確認します。
    v1alpha3 クラスタ:
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    v1beta1 クラスタ:
    kubectl describe cluster CLUSTER-NAME
  4. クラスタがプロビジョニングされている vSphere 名前空間 で使用可能な仮想マシン クラスを一覧表示して、記述します。
    kubectl get virtualmachineclass
    注: ターゲット仮想マシン クラスは、TKG クラスタがプロビジョニングされている vSphere 名前空間 に関連付けられている必要があります。仮想マシン クラスを vSphere 名前空間 にバインドする方法の詳細については、TKG サービスまたは仮想マシン サービスのドキュメントを参照してください。
  5. 次のコマンドを実行して、クラスタのマニフェストを編集します。
    v1alpha3 クラスタ:
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
    v1beta1 クラスタ:
    kubectl edit cluster/CLUSTER-NAME
  6. 仮想マシン クラス文字列を変更して、マニフェストを編集します。
    たとえば、v1alpah3 クラスタを使用している場合、ワーカー ノードに guaranteed-medium 仮想マシン クラスを使用しないようにクラスタのマニフェストを変更します。
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
    ワーカーノードに guaranteed-large 仮想マシン クラスを使用するには、次の手順を実行します。
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-large
    同様に、v1beta1 クラスタをプロビジョニングした場合、 variables.vmclass の値をターゲット仮想マシン クラスに更新します。
  7. マニフェスト ファイルに行った変更内容を保存します。
    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドで、TKG コントローラが新しいノード仮想マシンをプロビジョニングし、古い仮想マシンをスピンダウンします。
  8. kubectl から、マニフェストの編集が正常に記録されたことが報告されているかを確認します。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    注: エラーが表示された場合、またはクラスタ マニフェストが正常に編集されたことが kubectl から報告されない場合は、KUBE_EDITOR 環境変数を使用して、デフォルトのテキスト エディタが適切に構成されていることを確認してください。 kubectl のテキスト エディタの構成を参照してください。
  9. クラスタが更新されたことを確認します。
    v1alpha3 クラスタ:
    kubectl get tanzukubernetescluster
    v1beta1 クラスタ:
    kubectl get cluster