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