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.reference.name
字段中提供完整的 TKR NAME 字符串。如果使用的是
v1beta1 API,请在
topology.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 yaml
和 kubectl 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=,
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
-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。
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
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
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,则使用自定义资源定义来更改或更新这些组件。
kubectl get tkr TKR-NAME -o yaml
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable -o yaml
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。
- 使用 Velero 备份基于 Photon 的 TKG 集群工作负载。
- 置备使用 Ubuntu TKR 的新 TKG 集群。
请参见在主管上置备 TKG 2 集群。
- 使用 Velero 将 TKG 集群工作负载还原到 Ubuntu 集群。
构建您自己的 TKR
从 TKR 特定版本开始,可以为在 vSphere 8 主管 上运行的 TKG 2 集群构建自定义 TKR 计算机映像。自定义计算机映像会打包受支持的操作系统和版本、基于已发布 TKR 的 Kubernetes 版本以及您自定义的所有内容。
要为 TKG 2 集群节点构建自定义计算机映像,请使用 VMware Image Builder。