kubectl patch 方式を使用して、Tanzu Kubernetes クラスタの「インプレース」更新を実行できます。kubectl edit コマンドを使用する代わりに kubectl patch 方式を使用することで、サポートされているクラスタの更新操作のいずれかを実行できます。

Kubectl Patch コマンドについて

制限: TKGS v1alpha2 API に準拠させる目的で、このトピックの説明にあるように kubectl patch を使用してクラスタの仕様を更新しないでください。この種の更新では、 kubectl edit を使用してください。 クラスタ仕様を TKGS v1alpha2 API に変換した後の Tanzu Kubernetes リリースの更新を参照してください。
kubectl patch コマンドは、クラスタの「インプレース」更新を実行します。このコマンドの目的は、Kubernetes のバージョンを更新する方法を提供することです。ここでは、その方法について説明します。 kubectl patch コマンドの詳細については、Kubernetes のドキュメントの Update API Objects in Place Using kubectl patchを参照してください。

ここに示すアプローチでは、UNIX シェル コマンド read を使用して、キーボードから入力を行い、$PATCH という変数に割り当てます。kubectl patch コマンドは Kubernetes API を呼び出して、クラスタ マニフェストを更新します。--type=merge フラグは、既存のマニフェストとは異なるプロパティのみがデータに含まれていることを示しています。

パッチ方式を使用した Kubernetes バージョンのアップグレード

ローリング アップデートをトリガする最も一般的な方法は、.spec.distribution.version および .spec.distribution.fullVersion プロパティを使用して、クラスタの Kubernetes 配布バージョンを変更することです。version ヒントを更新し、検出時にバージョンの不一致が発生しないように、fullVersion を設定解除するか、null にします。

$ read -r -d '' PATCH <<'EOF'
spec:
  distribution:
    fullVersion: null    # NOTE: Must set to null when updating just the version field
    version: v1.18.5
EOF

kubectl patch コマンドを使用して、更新を適用します。クラスタ マニフェストで改行文字を保持するには、"$PATCH" 変数を引用符で囲む必要があります。TKG-CLUSTER-NAME の値を、クラスタの実際の名前に置き換えます。

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
予期される結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

パッチ方式を使用した、ノードの VirtualMachineClass の変更によるクラスタの更新

Tanzu Kubernetes クラスタのローリング アップデートをトリガする別の方法として、ノード プールの VirtualMachineClass を変更することもできます。これは、.spec.topology.controlPlane.class プロパティまたは .spec.topology.workers.class プロパティを変更することによって行われます。

read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      class: best-effort-xlarge
    workers:
      class: best-effort-xlarge
EOF

kubectl patch コマンドを使用して更新を適用し、変数をクラスタ名に置き換えます。

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
予期される結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

パッチ方式を使用した、ノードの StorageClass の変更によるクラスタの更新

Tanzu Kubernetes クラスタのローリング アップデートをトリガする別の方法として、ノード プールの StorageClass を変更することもできます。これは、.spec.topology.controlPlane.storageClass プロパティまたは .spec.topology.workers.storageClass プロパティを変更することによって行われます。

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
kubectl patch コマンドを使用して更新を適用し、変数をクラスタ名に置き換えます。
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
予期される結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched