Tanzu Kubernetes 版本提供由 VMware 簽署和支援的 Kubernetes 軟體發行版以搭配主管上的 TKG 叢集使用。TKG 的 TKR 格式已更新,可支援套件和多個作業系統。

TKR 版本說明

如需可用 TKR 的完整清單、每個版本的新增功能、已知問題以及 TKR 與主管和 TKG 的相容性,請參閱 Tanzu Kubernetes 發行版本說明。另請參閱 vSphere with 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 與 主管 的相容性

TKR 獨立於 主管 發行和更新。

若要佈建 TKG 叢集,TKR 必須與在 主管 上執行的 TKG 控制器元件相容。不能使用與正在執行的 主管 執行個體不相容的 TKR。此外,還必須確保執行的 TKR 與要升級的 主管 版本相容。

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

TKR 與 TKG 2.x 的相容性

TKG 2.x 是最新版本的 Tanzu Kubernetes Grid,具有包括佈建 API 在內的新功能。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,則只能用於佈建 vSphere 7 TKG 叢集。

可以使用命令 kubectl get tkr -o yamlkubectl 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
下列範例使用 --show-labels 旗標檢查 TKR 是否與佈建 TKG 2.x 叢集相容。存在標籤 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=,
下列範例顯示了與建立 TKG 2.x 叢集相容的 TKR,因為標籤 legacy-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
重要: 若要確定 TKR 是否與 TKG 2.x 相容, -zshippable 尾碼並非可靠的方法。因此,從 vSphere 8 U1 版本開始,TKR NAME 字串中移除了此尾碼。必須檢查 TKR 中是否存在 legacy-tkr 標籤,以確定 TKR 是否可以與 vSphere 8 搭配用於佈建 TKG 2.x 叢集。如果已使用具有 -zshippable 尾碼的 TKR 佈建 TKG 2.x 叢集,則需要在從使用此尾碼轉換為不再使用此尾碼期間將內容程式庫 URL 變更為臨時位置。如需詳細資料,請參閱 Tanzu Kubernetes 發行版本說明

TKR OSImage 格式

TKR OSImage 格式支援單一 TKR 的多個作業系統映像。這意味著,對於某個特定的 Kubernetes 版本,所有受支援的作業系統 (目前為 PhotonOS 和 Ubuntu) 只有一個 Tanzu Kubernetes 版本。預設 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 的 Tanzu Kubernetes 叢集,為 worker 節點建立使用 Ubuntu 的叢集。TKR 版本是控制平面中的參考,註解為指定 worker 節點集區指定了 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 with Tanzu 升級到 vSphere 8 主管 上的 TKG 2 時,現有 TKR 將自動轉換為參考單一 OSImage 的 TKR OSImage 格式。這樣一來,舊版 TKR 才能與 TKG 2 相容。如果使用 TKR 的 Ubuntu 版本,並且僅指定短版本字串 ( v1.21.6+vmware.1-tkg.1),而非完整版本字串 ( ubuntu-2004-v1.21.6---vmware.1-tkg.1),則必須在叢集規格中包含作業系統註解。如果使用 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 映像已更新為用於 TKG 2.0 元件的以套件為基礎的架構,例如容器儲存區介面 (CSI) 和容器網路介面 (CNI)。如果使用的是 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 作業系統類型

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

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

TKR 強化

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

建置您自己的 TKR

從特定版本的 TKR 開始,可以為在 vSphere 8 主管 上執行的 TKG 2 叢集建置自訂 TKR 機器映像。自訂機器映像會封裝受支援的作業系統和版本、基於已發行 TKR 的 Kubernetes 版本以及您自訂的所有內容。

若要為 TKG 2 叢集節點建置自訂機器映像,請使用 VMware Image Builder