Tanzu Kubernetes 版本 (TKr) 提供由 VMware 簽署和支援的 Kubernetes 軟體發行版以搭配 TKG 服務 叢集使用。vSphere 8 的 TKr 格式已更新,可支援套件和多個作業系統。

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 內容程式庫。在一個 vSphere 命名空間 中編輯 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 與要升級的版本相容。

可以使用命令 kubectl get tkr 檢查 TKr 相容性。[相容] 資料行會傳回布林值。True 表示 TKr 相容,False 表示 TKr 不相容。

TKr 與 vSphere 的相容性

TKr 格式已針對 vSphere 8 進行了更新。vSphere 8 的 TKr 只能在 vSphere 8.x 上執行。vSphere 7.x 的 TKr 是與 vSphere 7 搭配使用的舊版映像。此類映像可以在 vSphere 8 上執行,但僅用於升級目的。舊版 TKr 映像由 legacy-tkr 註解標籤識別。

可以使用命令 kubectl get tkr -o yamlkubectl get tkr --show-labels 檢查 TKr 相容性。如果存在註解標籤 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=,
下列範例顯示 TKr 專為 vSphere 8.x 建置,因為標籤清單中缺少標籤 legacy-tkr
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 作業系統映像格式支援單一 TKr 的多個作業系統映像。這意味著,對於某個特定的 Kubernetes 版本,所有受支援的作業系統 (目前為 PhotonOS 和 Ubuntu) 只有一個 Tanzu Kubernetes 版本。預設作業系統映像格式為 PhotonOS。

依預設,對 TKG 叢集節點使用指定 TKr 的 PhotonOS 版本。如果參考的 TKr 支援作業系統映像格式並具有可用的 Ubuntu 作業系統版本,請使用 run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu 註解指定 TKr 的 Ubuntu 作業系統版本。例如,以下 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
作業系統映像格式支援異質叢集部署。例如,以下叢集資訊清單為控制平面節點建立使用預設 PhotonOS 的 Tanzu Kubernetes 叢集,為 worker 節點建立使用 Ubuntu 的叢集。TKr 版本是控制平面部分中的參考,註解為指定 worker 節點集區指定了 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 將自動轉換為參照單一作業系統映像的 TKr 作業系統映像格式。這樣,舊版 TKr 就可以相容升級到非舊版 TKr。

舊版 TKr 具有兩個版本:Photon 和 Ubuntu。當舊版 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 作業系統類型

不支援在 TKr 作業系統之間執行就地叢集更新。這意味著多種情況,例如,意味著無法將使用 TKr v1.27.11 Photon 的 TKG 叢集升級到 TKr v1.28.8 Ubuntu。

如果要變更 TKG 叢集使用的 TKr 作業系統類型,請考慮以下程序。在此範例中,來源叢集使用 TKr Photon,目標使用 TKr Ubuntu。

TKr 強化

提供了適用於系統元件 (包括 主管 和 TKr) 的安全性技術實作指南 (STIG)。如需詳細資訊,請參閱〈Tanzu STIG 強化〉

建置您自己的 TKr

適用於 vSphere 8.x 的 TKr v1.25.7 開始,可以為 vSphere 8 上的 TKG 叢集建置自訂 TKr 機器映像。自訂機器映像會封裝受支援的作業系統和版本、基於已發行 TKr 的 Kubernetes 版本以及您自訂的所有內容。

若要為 TKG 叢集節點建置自訂機器映像,請使用 vSphere Tanzu Kubernetes Grid Image Builder。如需有關構建置自訂機器映像、支援的 TKr 版本和支援的自訂項目的詳細資料,請參閱說明文件