Tanzu Kubernetes 版本 提供由 VMware 签名和支持且可与 主管 上的 TKG 2 集群配合使用的 Kubernetes 软件分发版。TKG 2 的 TKR 格式已更新,可支持软件包和多个操作系统。

TKR 发行说明

有关可用 TKR 的完整列表、每个版本的新增功能、已知问题以及 TKR 与主管和 TKG 2 的兼容性,请参阅 Tanzu Kubernetes 发行说明。另请参见 vSphere with Tanzu 升级、支持和 Kubernetes 版本

TKR 分发和消耗

VMware 通过内容交付网络分发 Tanzu Kubernetes 版本。您可以使用 vSphere 内容库将 TKR 关联到 vSphere 命名空间。要自动计算 TKR 的消耗,请使用已订阅内容库。对于 Internet 受限的环境,请使用本地内容库

每个 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 的兼容性

TKG 2 是最新版本的 Tanzu Kubernetes Grid,具有包括置备 API 在内的新功能。TKG 2 随 vSphere 8 一起引入。有关详细信息,请参见在主管上置备 TKG 2 集群

TKG 2 集群的 TKR 格式与 TKG 1 集群的 TKR 格式不同。要置备 TKG 2 集群,必须使用非旧版 TKR。如果 TKR 是旧版 TKR,则只能用于置备 TKG 1 集群。与 TKG 2 不兼容的 TKR 映像包含 legacy-tkr 注释标签。

您或许能够在兼容的主管上置备 TKG 1 集群,但除非使用非旧版 TKR,否则无法利用 TKG 2 功能。例如,虽然 kubectl get tkr 命令可能表示 TKR 与主管兼容,但如果是旧版 TKR,则只能用于置备 TKG 1 集群。

您可以使用命令 kubectl get tkr -o yamlkubectl get tkr --show-labels 检查 TKR 与 TKG 2 的兼容性。如果存在注释标签 legacy-tkr,则无法使用 TKR 置备 TKG 2 集群。

例如,以下命令显示指定的映像是 legacy-tkr。这意味着它不能用于置备 TKG 2 集群。此 TKR 只能用于置备旧版 TKG 1 集群。
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 集群。存在标签 legacy-tkr,因此映像只能用于创建 TKG 1 集群。
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 集群的 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 集群。
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 兼容, -zshippable 后缀并非可靠的方法。因此,从 vSphere 8 U1 版本开始,TKR NAME 字符串中移除了此后缀。必须检查 TKR 中是否存在 legacy-tkr 标签,以确定 TKR 是否可以与 vSphere 8 一起用于置备 TKG 2 集群。如果已使用具有 -zshippable 后缀的 TKR 置备 TKG 2 集群,则需要在从使用此后缀到不再使用的过渡期间将内容库 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 集群,为工作节点创建使用 Ubuntu 的集群。TKR 版本是控制平面中的引用,注释为指定的工作节点池指定了 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 组件的基于软件包的框架,例如容器存储接口 (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

从 TKR 特定版本开始,可以为在 vSphere 8 主管 上运行的 TKG 2 集群构建自定义 TKR 计算机映像。自定义计算机映像会打包受支持的操作系统和版本、基于已发布 TKR 的 Kubernetes 版本以及您自定义的所有内容。

要为 TKG 2 集群节点构建自定义计算机映像,请使用 VMware Image Builder