Tanzu Kubernetes リリースでは、スーパーバイザー上の TKG クラスタで使用するための VMware によって署名およびサポートされた Kubernetes ソフトウェア ディストリビューションが提供されます。TKR 形式は、TKG でパッケージと複数のオペレーティング システムがサポートされるように更新されます。

TKR リリース ノート

使用可能な TKR の詳細なリスト、各リリースの新機能、既知の問題、スーパーバイザーおよび TKG に対する TKR の互換性については、「Tanzu Kubernetes リリースのリリース ノート」を参照してください。vSphere with Tanzu Upgrade, Support and Kubernetes Versionsも参照してください。

TKR の配布と使用

VMware は、コンテンツ配信ネットワークを介して Tanzu Kubernetes リリース を配布します。vSphere コンテンツ ライブラリを使用して、TKR と vSphere 名前空間関連付けを行います。TKR を自動的に使用するには、サブスクライブ済みコンテンツ ライブラリを使用します。インターネットが制限されている環境では、ローカル コンテンツ ライブラリを使用します。

Tanzu Kubernetes リリース は OVA テンプレートとして配布されます。スーパーバイザー の TKR コントローラは、OVA テンプレートを使用して TKG クラスタ ノードの仮想マシンを構築します。仮想マシンのディスク サイズは TKR OVA テンプレートによって設定されます。CPU および RAM リソースは、仮想マシン クラスを使用して指定します。

TKR コンテンツ ライブラリは、名前空間の範囲内にありません。すべての vSphere 名前空間 は、スーパーバイザー を使用する TKG に対して同じ TKR コンテンツ ライブラリを使用します。1 つの vSphere 名前空間 の TKR コンテンツ ライブラリを編集すると、他のすべての名前空間の TKR コンテンツ ライブラリも更新されます。

TKR NAME 文字列

コマンド kubectl get tkr を使用して、 vSphere 名前空間 で使用可能な TKR イメージを一覧表示します。例:
kubectl get tkr
NAME                                  VERSION                             READY   COMPATIBLE   CREATED
v1.16.14---vmware.1-tkg.1.ada4837     v1.16.14+vmware.1-tkg.1.ada4837     False   False        19d
v1.17.17---vmware.1-tkg.1.d44d45a     v1.17.17+vmware.1-tkg.1.d44d45a     False   False        19d
v1.18.19---vmware.1-tkg.1.17af790     v1.18.19+vmware.1-tkg.1.17af790     False   False        19d
v1.19.16---vmware.1-tkg.1.df910e2     v1.19.16+vmware.1-tkg.1.df910e2     False   False        19d
v1.20.12---vmware.1-tkg.1.b9a42f3     v1.20.12+vmware.1-tkg.1.b9a42f3     False   False        19d
v1.21.6---vmware.1-tkg.1.b3d708a      v1.21.6+vmware.1-tkg.1.b3d708a      True    True         19d
v1.22.9---vmware.1-tkg.1.cc71bc8      v1.22.9+vmware.1-tkg.1.cc71bc8      True    True         19d
v1.23.8---vmware.2-tkg.2-zshippable   v1.23.8+vmware.2-tkg.2-zshippable   True    True         19d
v1.23.8---vmware.3-tkg.1              v1.23.8+vmware.3-tkg.1              True    True         19d
TKR NAME 文字列を使用して、 スーパーバイザー 上に TKG クラスタをプロビジョニングします。 v1alpha3 API を使用している場合は、 tkr.reference.name フィールドに完全な TKR NAME 文字列を指定します。 v1beta1 API を使用している場合は、 topology.version フィールドに完全な TKR NAME 文字列を指定します。
注: クラスタ仕様で TKR を参照する場合は、VERSION 文字列を使用しないでください。形式は TKR NAME 文字列と正確に一致する必要があります。

コンテンツ ライブラリでの TKR の名前は、完全な TKR NAME 文字列である必要があります。サブスクライブ済みコンテンツ ライブラリを使用している場合は、TKR NAME 文字列が作成されます。ローカル コンテンツ ライブラリを使用している場合は、TKR に付与する名前が TKR NAME 文字列と一致していることを確認します。詳細については、ローカル コンテンツ ライブラリを参照してください。

TKR の スーパーバイザー との互換性

TKR は、スーパーバイザー から独立してリリースおよび更新されます。

TKG クラスタをプロビジョニングするには、TKR が、スーパーバイザー で実行される TKG コントローラ コンポーネントと互換性がある必要があります。実行中の スーパーバイザー インスタンスとの互換性がない TKR は使用できません。また、アップグレード対象となるバージョンの スーパーバイザー と互換性のある TKR を実行していることを確認する必要があります。

スーパーバイザー に対する TKR の互換性を確認するには、コマンド kubectl get tkr を使用します。COMPATIBLE 列はブール値を返します。True は TKR が スーパーバイザー と互換性があることを意味し、False は TKR が スーパーバイザー と互換性がないことを意味します。

TKR の TKG 2.x との互換性

TKG 2.x は、プロビジョニング API などの新機能を備えた Tanzu Kubernetes Grid の最新リリースです。TKG 2.0 は vSphere 8 で導入されました。詳細についてはスーパーバイザー での TKG クラスタのプロビジョニングを参照してください。

TKG 2.x クラスタの TKR 形式は、vSphere 7 でサポートされているレガシー TKG クラスタとは異なります。TKG 2.x クラスタをプロビジョニングするには、非レガシー TKR を使用する必要があります。TKR がレガシー TKR の場合は、vSphere 7 TKG クラスタのプロビジョニングにのみ使用できます。TKG 2.x と互換性のない TKR イメージには、注釈ラベル legacy-tkr が含まれています。

互換性のあるスーパーバイザー上で vSphere 7 TKG クラスタをプロビジョニングできる可能性がありますが、レガシー以外の TKR を使用しない限り、TKG 2.x 機能を利用することはできません。たとえば、kubectl get tkr コマンドは TKR がスーパーバイザーと互換性があることを示す可能性がありますが、TKR がレガシー TKR であった場合、TKR は vSphere 7 TKG クラスタのプロビジョニングにのみ使用できます。

kubectl get tkr -o yaml および kubectl get tkr --show-labels コマンドを使用して、TKR の TKG 2.x との互換性を確認できます。注釈ラベル legacy-tkr がある場合は、TKR を使用して TKG 2.x クラスタをプロビジョニングすることはできません。

たとえば、次のコマンドは、指定したイメージが legacy-tkr であることを示しています。これは、TKG 2.x クラスタのプロビジョニングに使用できないことを意味します。この TKR は、レガシー TKG クラスタのプロビジョニングにのみ使用できます。
kubectl get tkr v1.23.8---vmware.3-tkg.1 -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2023-03-15T20:33:17Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 1
  labels:
    os-arch: amd64
    os-name: photon
    os-type: linux
    os-version: "3.0"
    [run.tanzu.vmware.com/legacy-tkr: ""]
    v1: ""
    v1.23: ""
    v1.23.8: ""
    v1.23.8---vmware: ""
    v1.23.8---vmware.3: ""
    v1.23.8---vmware.3-tkg: ""
    v1.23.8---vmware.3-tkg.1: ""
  name: v1.23.8---vmware.3-tkg.1
次の例では、TKG 2.x クラスタのプロビジョニングで TKR に互換性があるかどうかを --show-labels フラグを使用して確認します。ラベル legacy-tkr があるため、イメージはレガシー TKG クラスタの作成にのみ使用できます。
kubectl get tkr v1.23.8---vmware.3-tkg.1 --show-labels
NAME                       VERSION                  READY   COMPATIBLE   CREATED   LABELS
v1.23.8---vmware.3-tkg.1   v1.23.8+vmware.3-tkg.1   True    True         19d       os-arch=amd64,os-name=photon,os-type=linux,os-version=3.0,[run.tanzu.vmware.com/legacy-tkr=],
次の例では、ラベル legacy-tkr がラベルのリストにないため、TKG 2.x クラスタの作成で互換性のある TKR が示されています。
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable --show-labels
NAME                                  VERSION                             READY   COMPATIBLE   CREATED   LABELS
v1.23.8---vmware.2-tkg.2-zshippable   v1.23.8+vmware.2-tkg.2-zshippable   True    True         19d       os-arch=amd64,os-name=ubuntu,os-type=linux,os-version=20.04,v1.23.8---vmware.2-tkg.2-zshippable=,
-o yaml を使用して同等のコマンドを実行しても legacy-tkr ラベルがないことが示されます。これは、TKR を使用して TKG 2.x クラスタをプロビジョニングできることを意味します。
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2023-03-15T20:31:45Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 2
  labels:
    os-arch: amd64
    os-name: ubuntu
    os-type: linux
    os-version: "20.04"
    v1: ""
    v1.23: ""
    v1.23.8: ""
    v1.23.8---vmware: ""
    v1.23.8---vmware.2: ""
    v1.23.8---vmware.2-tkg: ""
    v1.23.8---vmware.2-tkg.2: ""
    v1.23.8---vmware.2-tkg.2-zshippable: ""
  name: v1.23.8---vmware.2-tkg.2-zshippable
重要: -zshippable サフィックスは、TKR と TKG 2.x の互換性の有無を判断するための手段として信頼できません。このサフィックスは、vSphere 8 U1 リリース以降、TKR NAME 文字列から削除されます。TKR を vSphere 8 で使用して TKG 2.x クラスタをプロビジョニングできるかどうかを判断するには、TKR に legacy-tkr ラベルがあるかどうかを確認する必要があります。サフィックスが -zshippable である TKR を使用して TKG 2.x クラスタがすでにプロビジョニングされている場合、このサフィックスの使用から移行している間は、コンテンツ ライブラリ URL を一時的な場所に変更する必要があります。詳細については、 Tanzu Kubernetes リリース ノートを参照してください。

TKR OSImage 形式

TKR OSImage 形式では、1 つの TKR に対して複数のオペレーティング システム イメージがサポートされています。つまり、サポートされているすべてのオペレーティング システム(現在は PhotonOS と Ubuntu)の特定の Kubernetes バージョンに対して、Tanzu Kubernetes リリース が 1 つあります。デフォルトの OSImage は PhotonOS です。

TKR の Ubuntu エディションを使用するには、クラスタ仕様に注釈を含めます。たとえば、次の TKG クラスタ仕様では、TKR という名前の Ubuntu エディションを使用しています。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkg2-cluster-ubuntu
  namespace: tkg2-cluster-ns
  annotations:
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:
   topology:
     controlPlane:
       ...
       tkr:
         reference:
           name: v1.23.8---vmware.2-tkg.2-zshippable
OSImage 形式は、異種クラスタのデプロイをサポートしています。たとえば、次のクラスタ マニフェストは、制御プレーン用にデフォルトの PhotonOS、ワーカー ノード用に Ubuntu を使用する Tanzu Kubernetes クラスタを作成します。TKR のバージョンは、制御プレーンの reference になり、アノテーションで、名前付きワーカー ノード プールに Ubuntu が指定されます。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:    
  name: tkg2-cluster-multiOS
  namespace: tkg2-cluster-ubuntu
  annotations:
    //Worker's annotation
    run.tanzu.vmware.com/resolve-os-image.np-1: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      tkr:          
        reference:            
          name: v1.23.8---vmware.2-tkg.2-zshippable
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-profile 
    nodePools:     
    - replicas: 3
      name: np-1
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-profile
vSphere 8 スーパーバイザーvSphere with Tanzu を TKG 2 にアップグレードすると、既存の TKR は単一の OSImage を参照して TKR OSImage 形式に自動的に変換されます。これにより、レガシー TKR が TKG 2 と互換性を維持するようになります。TKR の Ubuntu エディションを使用しているときに、フル バージョンの文字列 ( ubuntu-2004-v1.21.6---vmware.1-tkg.1) ではなく、短縮バージョンの文字列 ( v1.21.6+vmware.1-tkg.1) のみを指定した場合は、クラスタ仕様に OS の注釈を含める必要があります。これは、v1alpha3 API または vlapha2 API を使用している場合に当てはまります。例:
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:    
  name: tkg-cluster-ubuntu
  namespace: tkg-cluster-ubuntu
  annotations: 
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg-storage-policy
      tkr:          
        reference:            
          name: v1.21.6+vmware.1-tkg.1
    nodePools:     
    - name: worker-nodepool
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-policy
      tkr:          
        reference:            
          name: v1.21.6+vmware.1-tkg.1
  settings:
    storage:
      defaultClass: tkg-storage-policy

TKR パッケージ

vSphere 8 と互換性がある TKR イメージは、コンテナ ストレージ インターフェイス (CSI) やコンテナ ネットワーク インターフェイス (CNI) などの TKG 2.0 コンポーネント用のパッケージベースのフレームワークに更新されます。v1beta API を使用している場合、これらのコンポーネントの変更または更新はカスタム リソース定義を使用して行われます。

TKRを構成するパッケージを表示するには、次のコマンドを実行します。
kubectl get tkr TKR-NAME -o yaml
例:
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable -o yaml
このコマンドは、TKR 内のすべてのパッケージを返します。例:
spec:
bootstrapPackages:
- name: antrea.tanzu.vmware.com.1.5.3+tkg.2-zshippable
- name: vsphere-pv-csi.tanzu.vmware.com.2.6.0+vmware.1-tkg.1-zshippable
- name: vsphere-cpi.tanzu.vmware.com.1.23.1+vmware.1-tkg.2-zshippable
- name: kapp-controller.tanzu.vmware.com.0.38.4+vmware.1-tkg.2-zshippable
- name: guest-cluster-auth-service.tanzu.vmware.com.1.0.0+tkg.2-zshippable
- name: metrics-server.tanzu.vmware.com.0.6.1+vmware.1-tkg.2-zshippable
- name: secretgen-controller.tanzu.vmware.com.0.9.1+vmware.1-tkg.2-zshippable
- name: pinniped.tanzu.vmware.com.0.12.1+vmware.2-tkg.2-zshippable
- name: capabilities.tanzu.vmware.com.0.26.0-dev-68-g09198af6+vmware.1
- name: calico.tanzu.vmware.com.3.22.1+vmware.1-tkg.2-zshippable

使用事例の例については、v1beta1 の例:Calico CNI を含むクラスタを参照してください。

TKR OS タイプの移行

TKR オペレーティング システム間でクラスタのインプレース アップデートを行うことはできません。つまり、TKR バージョン 1.21 Photon を使用している TKG クラスタを TKR バージョン 1.22 Ubuntu にアップグレードすることなどはできません。

TKG クラスタが使用している TKR OS タイプを変更する場合は、次の手順を検討してください。この例では、元のクラスタは TKR Photon を使用していて、アップグレード先は TKR Ubuntu です。

TKR のセキュリティ強化

スーパーバイザー と TKR を含む vSphere with Tanzu 8 コンポーネントのセキュリティ技術導入ガイド (STIG) を利用できます。詳細については、「Tanzu STIG Hardening」を参照してください。

独自の TKR の構築

TKR の特定のリリース以降では、vSphere 8 スーパーバイザー で実行されている TKG 2 クラスタのカスタム TKR マシン イメージを構築できます。カスタム マシン イメージには、サポートされているオペレーティング システムとバージョン、リリースされた TKR に基づく Kubernetes バージョン、およびユーザーが行ったカスタマイズがパッケージ化されています。

TKG 2 クラスタ ノード用のカスタム マシン イメージを構築するには、VMware Image Builder を使用します。