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

TKr リリース ノート

使用可能な TKr の詳細なリスト、各リリースの新機能、既知の問題、および TKr の互換性については、「Tanzu Kubernetes リリースのリリース ノート」を参照してください。

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 の TKG サービス との互換性

TKr は、TKG サービス および スーパーバイザー とは別個にリリースおよび更新されます。

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

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

TKr の vSphere との互換性

vSphere 8 では TKr 形式が更新されています。vSphere 8 の TKr は、vSphere 8.x でのみ実行できます。vSphere 7.x の TKr は、vSphere 7 で動作するレガシー イメージです。このようなイメージは vSphere 8 で実行できますが、アップグレードを目的とする場合に限られます。レガシー TKr イメージは、legacy-tkr 注釈ラベルによって識別されます。

TKr の互換性を確認するには、コマンド kubectl get tkr -o yamlkubectl get tkr --show-labels を使用します。注釈ラベル legacy-tkr が存在する場合、TKr は vSphere 8 の機能をサポートしないため、vSphere 7 から vSphere 8 へのアップグレードに限り使用する必要があります。

たとえば、次のコマンドは、指定したイメージが legacy-tkr であることを示しています。
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
次の例では、 --show-labels フラグを使用して TKr の互換性を確認します。ラベル 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 がラベル リストに含まれていないため、TKr が vSphere 8.x 専用であることが示されています。
kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 --show-labels
NAME                              VERSION                         READY   COMPATIBLE   CREATED   LABELS
v1.28.8---vmware.1-fips.1-tkg.2   v1.28.8+vmware.1-fips.1-tkg.2   True    True         21d       os-arch=amd64,os-name=photon,os-type=linux,os-version=5.0,tkr.tanzu.vmware.com/standard=,v1.28.8---vmware.1-fips.1-tkg.2=,v1.28.8---vmware.1-fips.1-tkg=,v1.28.8---vmware.1-fips.1=,v1.28.8---vmware.1-fips=,v1.28.8---vmware.1=,v1.28.8---vmware=,v1.28.8=,v1.28=,v1=
また、 -o yaml を使用して同等なコマンドを実行した場合も、 legacy-tkr ラベルは存在せず、TKr が vSphere 8.x 専用であることが示されます。
 kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2024-05-08T20:03:57Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 2
  labels:
    os-arch: amd64
    os-name: photon
    os-type: linux
    os-version: "5.0"
    tkr.tanzu.vmware.com/standard: ""
    v1: ""
    v1.28: ""
    v1.28.8: ""
    v1.28.8---vmware: ""
    v1.28.8---vmware.1: ""
    v1.28.8---vmware.1-fips: ""
    v1.28.8---vmware.1-fips.1: ""
    v1.28.8---vmware.1-fips.1-tkg: ""
    v1.28.8---vmware.1-fips.1-tkg.2: ""
  name: v1.28.8---vmware.1-fips.1-tkg.2
...

TKr オペレーティング システムのイメージ形式

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

デフォルトでは、TKG クラスタ ノードには、指定した TKr の PhotonOS エディションが使用されます。参照されている TKr で OS イメージ形式がサポートされていて、Ubuntu OS エディションが使用可能な場合は、 run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu 注釈を使用して TKr の Ubuntu OS エディションを指定します。たとえば、次の TKG クラスタ仕様では、TKr という名前の Ubuntu エディションを使用しています。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-ubuntu
  namespace: tkgs-cluster-ns
  annotations:
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:
   topology:
     controlPlane:
       ...
       tkr:
         reference:
           name: v1.28.8---vmware.1-fips.1-tkg.2
OS イメージ形式は、異種クラスタのデプロイをサポートしています。たとえば、次のクラスタ マニフェストは、制御プレーン ノード用にデフォルトの PhotonOS、ワーカー ノード用に Ubuntu を使用する Tanzu Kubernetes クラスタを作成します。TKr のバージョンは制御プレーンセクションで参照されています。名前付きワーカー ノード プールを使用する場合は、注釈で Ubuntu が指定されます。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:    
  name: tkgs-cluster-multiOS
  namespace: tkgs-cluster-ubuntu
  annotations:
    //Worker nodes annotation
    run.tanzu.vmware.com/resolve-os-image.np-1: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      tkr:          
        reference:            
          name: v1.28.8---vmware.1-fips.1-tkg.2
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkgs-storage-profile 
    nodePools:     
    - replicas: 3
      name: np-1
      vmClass: guaranteed-medium
      storageClass: tkgs-storage-profile

システムを vSphere 8 にアップグレードすると、既存の TKr は、単一の OS イメージを参照して TKr OS イメージ形式に自動的に変換されます。これにより、レガシー TKr を非レガシー TKr にアップグレードする場合の互換性を確保できます。

レガシー TKr には、Photon と Ubuntu の 2 つのエディションがあります。レガシー TKr に Ubuntu 固有のエディションがある場合は、バージョン文字列全体(「ubuntu」を含む)を使用して注釈ラベルを省略するか、バージョン文字列の短縮形(「ubuntu」を含まない)を使用してバージョン ラベルを含めることができます。

TKr パッケージ

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

TKr を構成するパッケージを表示するには、次のコマンドを実行します。
kubectl get tkr TKR-NAME -o yaml
例:
kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 -o yaml
このコマンドは、TKr 内のすべてのパッケージを返します。例:
spec:
  bootstrapPackages:
  - name: antrea.tanzu.vmware.com.1.13.3+vmware.3-tkg.2-vmware
  - name: vsphere-pv-csi.tanzu.vmware.com.3.1.0+vmware.1-tkg.6-vmware
  - name: vsphere-cpi.tanzu.vmware.com.1.28.0+vmware.1-tkg.1-vmware
  - name: kapp-controller.tanzu.vmware.com.0.48.2+vmware.1-tkg.1-vmware
  - name: guest-cluster-auth-service.tanzu.vmware.com.1.3.3+tkg.1-vmware
  - name: metrics-server.tanzu.vmware.com.0.6.2+vmware.3-tkg.5-vmware
  - name: secretgen-controller.tanzu.vmware.com.0.15.0+vmware.1-tkg.1-vmware
  - name: pinniped.tanzu.vmware.com.0.25.0+vmware.2-tkg.1-vmware
  - name: capabilities.tanzu.vmware.com.0.32.1+vmware.1
  - name: gateway-api.tanzu.vmware.com.1.0.0+vmware.1-tkg.1-vmware
  - name: calico.tanzu.vmware.com.3.26.3+vmware.1-tkg.1-vmware

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

TKr OS タイプの移行

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

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

TKr のセキュリティ強化

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

独自の TKr の構築

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

TKG クラスタ ノード用のカスタム マシン イメージを構築するには、vSphere Tanzu Kubernetes Grid Image Builder を使用します。カスタム イメージの構築、サポートされている TKr バージョン、およびサポートされているカスタマイズの詳細については、ドキュメントを参照してください。