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

Tanzu Kubernetes Grid サービス では、 VirtualMachineClass の定義の変更によるクラスタの更新がサポートされています。この変更を行うと、この新しいクラスを使用して新しいノードがロールアウトされて、古いノードがスピンダウンされます。 Tanzu Kubernetes Grid サービス クラスタの更新についてを参照してください。
注: Tanzu Kubernetes クラス他がプロビジョニングされている vSphere 名前空間VirtualMachineClass をバインドする必要があります。 Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。

前提条件

このタスクでは、kubectl edit tanzukubernetescluster/CLUSTER-NAME コマンドを使用してクラスタのマニフェストを更新します。kubectl edit コマンドを実行すると、KUBE_EDITOR または EDITOR の環境変数によって定義されたテキスト エディタ内にクラスタ マニフェストが開きます。ファイルを保存すると、変更が反映されてクラスタが更新されます。Kubectl のデフォルトのテキスト エディタの指定を参照してください。

手順

  1. スーパーバイザー クラスタ で認証します。vCenter Single Sign-On ユーザーとして スーパーバイザー クラスタ に接続するを参照してください。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. ターゲット Tanzu Kubernetes クラスタがプロビジョニングされている vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. ターゲット Tanzu Kubernetes クラスタを記述し、仮想マシンのクラスを確認します。
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    たとえば、このクラスタでは best-effort-medium 型の仮想マシン クラスが使用されています。
    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        Workers:
          Class:          best-effort-medium
          ...
    
  4. 名前空間で使用可能な仮想マシン クラスを一覧表示して、記述します。
    kubectl get virtualmachineclassbindings
    注: kubectl get virtualmachineclasses コマンドは、 スーパーバイザー クラスタ にあるすべての仮想マシン クラスを一覧表示します。仮想マシン クラスと vSphere 名前空間 を関連付ける必要がある場合は、ターゲット名前空間にバインドされているこれらの仮想マシン クラスのみを使用します。
  5. 次のコマンドを実行して、クラスタのマニフェストを編集します。
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
  6. 検出時にバージョンの不一致が発生しないようにするには、version 文字列を変更し、fullVersion を設定解除するか null にして、マニフェストを編集します。
    たとえば、制御プレーンおよびワーカー ノードに best-effort-medium 仮想マシン クラスを使用しないよう、クラスタ マニフェストを変更します。
    spec:
      topology:
        controlPlane:
          class: best-effort-medium
          ...
        workers:
          class: best-effort-medium
          ...
    
    制御プレーンおよびワーカーノードに guaranteed-large 仮想マシン クラスを使用するには、次の手順を実行します。
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        workers:
          class: guaranteed-large
          ...
    
  7. マニフェスト ファイルに行った変更内容を保存します。
    ファイルを保存すると、kubectl によって変更がクラスタに適用されます。バックグラウンドで、 Tanzu Kubernetes Grid サービス は新しいノード仮想マシンをプロビジョニングし、古い仮想マシンをスピンダウンします。
  8. kubectl から、マニフェストの編集が正常に記録されたことが報告されているかを確認します。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    注: エラーが表示された場合、またはクラスタ マニフェストが正常に編集されたことが kubectl から報告されない場合は、KUBE_EDITOR 環境変数を使用して、デフォルトのテキスト エディタが適切に構成されていることを確認してください。 Kubectl のデフォルトのテキスト エディタの指定を参照してください。
  9. クラスタが更新されていることを確認します。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   21h   updating
  10. クラスタが更新されたことを確認します。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   22h   running