Tanzu Kubernetes 版本 (TKr) 提供由 VMware 签名和支持的可与 TKG 服务 集群配合使用的 Kubernetes 软件分发版。TKr 格式已更新,供 vSphere 8 支持软件包和多个操作系统。

TKr 发行说明

有关可用 TKr 的完整列表、每个版本的新增功能、已知问题以及 TKr 兼容性,请参阅 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 与 TKG 服务 的兼容性

TKrs 的发布和更新独立于 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 集群,为工作节点创建使用 Ubuntu 的集群。控制平面部分中引用 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 将自动转换为引用单个操作系统映像的 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 版本和支持的自定义的详细信息,请参阅文档