Tanzu Kubernetes クラスタ仕様が v1alpha2 API 形式に自動変換した後、通常は、Tanzu Kubernetes リリース バージョンを変更して行う Tanzu Kubernetes クラスタのローリング アップデートを実行する際に、エラーを回避するために、クラスタ仕様の事前処理が必要な場合があります。

クラスタ仕様の自動変換

vSphere with Tanzu 環境を Tanzu Kubernetes Grid サービス v1alpha2 API に更新するには、サービスが実行されている スーパーバイザー クラスタ を更新します。

Tanzu Kubernetes Grid サービス で v1alpha2 API が実行されている場合は、既存のすべての Tanzu Kubernetes クラスタ仕様が v1alpha1 形式から v1alpha2 形式に自動的に変換されます。自動変換処理中に、システムは各クラスタ マニフェストに想定されるフィールドを作成して、ポピュレートします。API の廃止と追加 に、v1alpha2 API で新しく導入されたクラスタ仕様フィールドと廃止されたクラスタ仕様フィールドを示します。

マニフェストが v1alpha2 形式に自動的に変換されたクラスタの Tanzu Kubernetes リリース バージョンを更新するには、エラーを回避するために手動での事前処理が必要になる場合があります。クラスタ更新の例 に、さまざまなオプションを示します。

API の廃止と追加

次の表に、v1alpha2 API で廃止され、新しい設定に置き換えられたクラスタ仕様の設定を示します。
廃止された設定 新しい設定 コメント

spec.distribution.version

spec.distribution.fullVersion

spec.topology.controlPlane.tkr.refernece.name

spec.topology.nodePools[*].tkr.reference.name

TKR NAME 形式を使用する必要があります。例を参照してください。

spec.topology.workers

spec.topology.nodePools[*]

変換されたクラスタでは、ブロック spec.topology.workersspec.topology.nodePools[0] になります。

nodePools リストの最初のエントリは name: workers です。

spec.topology.controlPlane.count

spec.topology.workers.count

spec.topology.controlPlane.replicas

spec.topology.nodePools[*].replicas

countreplicas に置き換わります

spec.topology.controlPlane.class

spec.topology.workers.class

spec.topology.controlPlane.vmClass

spec.topology.nodePools[*].vmClass

classvmClass に置き換わります

該当なし

spec.topology.nodePools[*].labels

オブジェクトを整理および分類するためのオプションのキーペア値。ラベルは、作成されたノードに伝達されます

該当なし

spec.topology.nodePools[*].taints

ノードを登録するオプションのテイント。ユーザー定義のテイントは、作成されたノードに伝達されます

TKR NAME 形式が必須

廃止される spec.distribution.version フィールドだけでなく、Tanzu Kubernetes リリース バージョンを指定する DISTRIBUTION 形式もサポートされていません。つまり、1.21.2+vmware.1-tkg.1.ee25d551.21.2、および 1.21 の文字列形式を使用してターゲット リリースを参照することはできません。

v1alpha2 API クラスタ仕様で Tanzu Kubernetes リリース バージョンを参照する場合は、廃止された DISTRIBUTION 形式ではなく、TKR NAME 形式を使用する必要があります。廃止された形式は UPDATES AVAILABLE 列に表示されますが、サポート対象の形式は TKR NAME 列に一覧表示されている形式のみです。
kubectl get tanzukubernetescluster
NAMESPACE        NAME            CONTROL PLANE   WORKER   TKR NAME                             AGE    READY   TKR COMPATIBLE   UPDATES AVAILABLE
tkgs-cluster-1   test-cluster    3               3        v1.21.2---vmware.1-tkg.1.ee25d55     38h    True    True             [1.21.2+vmware.1-tkg.1.ee25d55]

kubectl edit を使用したクラスタ仕様の更新

TKGS v1alpha2 API に準拠させるためのクラスタ仕様の編集には、kubectl edit メソッドを使用します。この種の更新に、kubectl patch メソッドは使用しないでください。クラスタ マニフェストの編集方法を参照してください。エディタによる kubectl の構成方法については、Kubectl のデフォルトのテキスト エディタの指定を参照してください。

クラスタ更新の例

クラスタのローリング アップデートをトリガする最も一般的な方法は spec.distribution.version を変更すること(Tanzu Kubernetes クラスタの更新 を参照)ですが、このフィールドは v1alpha2 API で廃止されています。そのため、クラスタの更新に関する潜在的な問題を回避するには、いくつかの点に注意して、事前処理に関するいくつかの推奨事項に従う必要があります。

次の例は、v1alpha1 API を使用してプロビジョニングされた Tanzu Kubernetes クラスタのバージョンを v1alpha2 API を実行しているシステムに更新する例を示します。

クラスタ アップグレードの例 1:制御プレーンで単一の TKR NAME リファレンスを使用する

推奨方法は、変換された仕様からすべての nodePools[*].tkr.reference.name ブロックを削除し、ターゲット リリースの TKR NAME を使用して controlPlane.tkr.reference.name を更新することです。この場合、同じ Tanzu Kubernetes リリースがすべての nodePools[*] ノードに伝達されます。

これ以降、controlPlanenodePools[*]Tanzu Kubernetes リリースのバージョンが異なる場合があります。ただし、現在はクラスタ内のすべてのリリースが一致している必要があるため、単一の TKR NAME リファレンスを controlPlane に配置するだけで十分です。

例:
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example1
  namespace: tkgs-cluster-ns
spec:
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium

クラスタ アップグレードの例 2:各ノード プールに TKR NAME リファレンスを使用する

2 番目の例では、controlPlane トポロジと nodePools[*] トポロジの両方の tkr.reference.name ブロックに TKR NAME を配置します。

この方法には、Tanzu Kubernetes リリースがノード プール間で異なる可能性がある場合に、将来のリリースに対応できるという利点があります。現在、これらのリリースは一致する必要があります。

例:
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example2
  namespace: tkgs-cluster-ns
spec:
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55

クラスタ アップグレードの例 3:廃止されたディストリビューションのフィールドを使用する

最後のオプションは、廃止されたフィールド spec.distribution.fullVersionspec.distribution.version を使用し、すべての tkr.reference.name ブロックを手動で削除することです。両方のフィールドを含める必要があります。1 つのフィールドには TKR NAME 形式を使用し、もう 1 つのフィールドは null に設定します。 v1.21.2v1.21 などのバージョンのショートカットはサポートされていません。
注: Ubuntu の Tanzu Kubernetes リリースでは、 spec.distribution.version の使用はサポートされません。
次の例では、 version フィールドに TKR NAME と null(空)値を持つ fullVersion を使用しています。すべての tkr.reference.name エントリが削除されます。
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example3a
  namespace: tkgs-cluster-ns
spec:
  distribution:
    fullVersion: v1.21.2---vmware.1-tkg.1.ee25d55
    version: ""
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
また、 fullVersion フィールドに TKR NAME と null(空)値を持つ version を使用することもできます。 version フィールドを使用している場合でも、バージョンのショートカットはサポートされません。すべての tkr.reference.name エントリが削除されます。
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example3b
  namespace: tkgs-cluster-ns
spec:
  distribution:
    fullVersion: ""
    version: v1.21.2---vmware.1-tkg.1.ee25d55
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium