本主题介绍了如何列出可用的 Kubernetes 版本并部署具有非默认 Kubernetes 版本的工作负载集群。
具有独立管理集群的 Tanzu Kubernetes Grid 的每个版本都提供一个默认版本和两个非默认版本的 Kubernetes,您可以通过运行 tanzu kubernetes-release get 列出这些版本。
Tanzu Kubernetes Grid 管理具有 Tanzu Kubernetes 版本 (TKr) 对象的 Kubernetes 版本。TKr 指定与 TKr 中定义的 Kubernetes 版本兼容的操作系统映像、核心 Kubernetes 组件和引导程序包。运行具有默认或非默认 Tkr 的 tanzu cluster create 时,Tanzu Kubernetes Grid 使用 TKr 中指定的组件和引导软件包创建集群。它还会读取集群配置文件,以确定创建集群时要使用的兼容操作系统映像。
有关支持的 Kubernetes 版本的完整列表,请参见《VMware Tanzu Kubernetes Grid 2.3 发行说明》中的 Tanzu Kubernetes Grid v2.3 中支持的 Kubernetes 版本。
要列出所有可用的 Kubernetes 版本及其当前兼容性和升级状态,请使用可选的版本匹配参数运行 tanzu kubernetes-release get,例如:
tanzu kubernetes-release get。v1.24.14 匹配的所有版本,请运行 tanzu kubernetes-release get v1.24.14。tanzu kubernetes-release get
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.24.14---vmware.1-tkg.1 v1.24.14+vmware.1-tkg.1 True True
v1.25.10---vmware.1-tkg.1 v1.25.10+vmware.1-tkg.1 True True
v1.26.5---vmware.2-tkg.1 v1.26.5+vmware.1-tkg.1 True True
要发现可用于特定工作负载集群的 Tkr 版本,请使用集群的全名运行 tanzu cluster available-upgrades get,例如:
tanzu cluster available-upgrades get my-cluster
可以激活或停用 TKr。要激活 TKr,请执行以下操作:
tanzu kubernetes-release activate TKR-NAME
例如:
tanzu kubernetes-release activate v1.25.10---vmware.1-tkg.1
要停用 TKr,请执行以下操作:
tanzu kubernetes-release deactivate TKR-NAME
例如:
tanzu kubernetes-release deactivate v1.25.10---vmware.1-tkg.1
每个 Tanzu Kubernetes Grid 版本都提供 Kubernetes 的默认版本。Tanzu Kubernetes Grid v2.3 的默认版本为 Kubernetes v1.26.5。
上游 Kubernetes 发布修补程序或新版本时,VMware 会在公用注册表中发布修补程序或新版本,Tanzu Kubernetes 发布控制器会将其导入管理集群。这样,tanzu CLI 便可以根据新版本创建集群。
在 vSphere 和 Azure 上,您需要执行其他步骤,然后才能部署运行非默认 Kubernetes 版本的集群:
vSphere:将相应的基础映像模板 OVA 文件导入 vSphere,然后将其转换为虚拟机模板。有关将基础 OVA 文件导入到 vSphere 的信息,请参见将基础映像模板导入到 vSphere。
Azure:运行 Azure CLI 命令以接受基础操作系统版本的许可证。接受许可证后,未来可以跳过此步骤:
tanzu kubernetes-release get 命令输出中列出的目标 Kubernetes 版本转换为其 Azure 映像 SKU,如下所示:
v 更改为 k8s-。. 更改为 dot。+vmware.* 更改为 -ubuntu-2004,以指定 Ubuntu v20.04(Azure 上所有 Tanzu Kubernetes Grid 虚拟机的默认操作系统版本)。k8s-1dot26dot5-ubuntu-2004、k8s-1dot25dot10-ubuntu-2004。运行 az vm image terms accept。例如:
az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot26dot5-ubuntu-2004
Amazon Web Services (AWS):无需操作。包含受支持 Kubernetes 版本的 Amazon 2 Amazon 计算机映像 (AMI) 将公开提供给所有受支持 AWS 区域中的所有 AWS 用户。Tanzu Kubernetes Grid会自动为指定的 Kubernetes 版本使用相应的 AMI。
要部署运行非默认 Kubernetes 版本的工作负载集群,请执行以下操作:
如果要部署基于计划的集群,请将环境变量 ALLOW_LEGACY_CLUSTER 设置为 true:
export ALLOW_LEGACY_CLUSTER=true
如果要部署集群的 Kubernetes 修补程序版本低于支持的 Kubernetes 版本中列出的其次要版本支持的最新修补程序版本,请在 tkg-system 命名空间中为其 TKr 创建 ConfigMap 对象:
在 tkg-system 命名空间中创建 ConfigMap 对象定义,其中列出了较旧的 TKr:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: tkg-system
name: TKR-CONFIG-NAME
labels:
run.tanzu.vmware.com/additional-compatible-tkrs: ""
data:
tkrVersions: |
- TKR-VERSON-1
- TKR-VERSON-2
其中,TKR-CONFIG-NAME 是任何合法对象名称,例如 tkg-v2.3.0,TKR-VERSON-* 值是 tanzu kubernetes-release get 列出的旧 TKr 版本,例如 v1.24.11--vmware.1-tkg。
创建 ConfigMap 对象:
kubectl apply -f old-tkrs-config.yaml
要部署的工作负载集群的 Kubernetes 版本不是您的 Tanzu Kubernetes Grid 版本的默认版本,请在 --tkr 选项中指定 Tanzu Kubernetes 版本。例如,要部署 Kubernetes v1.24.14 集群,请运行:
tanzu cluster create my-1-24-14-cluster --tkr v1.24.14---vmware.1-tkg
有关如何创建工作负载集群的更多详细信息,请参见创建工作负载集群。
对于操作系统版本、Kubernetes 版本和目标基础架构的常见组合,具有独立管理集群的 Tanzu Kubernetes Grid 提供了默认计算机映像。您可以选择指定自定义计算机映像,包括您自己构建的映像。
以下几节介绍了如何使用备用或自定义构建的计算机映像部署集群:
在集群配置文件中,设置 OS_NAME、OS_VERSION 和 OS_ARCH 以指定基础计算机映像,例如 ubuntu、20.04 或 photon、3 和 amd64。这些默认为 VMware 分发的操作系统映像,但您也可以指定自己的备用操作系统映像以用于集群节点:
按照将基础映像模板导入到 vSphere 中所述,将映像上载到 vSphere。
根据您的映像是否与由 VMware 分发的现有计算机映像共享相同的操作系统版本,执行以下操作之一:
如果要指定与现有 TKr 具有相同操作系统名称、版本和架构的备用映像以及 VMware 分发的映像,请编辑其 OSImage 对象,例如:
kubectl edit OSImage v1.26.4---vmware.1-tkg.1-6c92aa1cbb96b644085e6229f41ef14d
否则,使用现有的 OSImage 对象定义作为模板创建并应用新的 OSImage 对象。将其 metadata.name 和 spec.image.ref.version 值设置为 OVA 文件名。
在 OSImage 对象的 spec.image.ref 块中,添加标识符字段和值。例如,要在 VMware 分发的 Ubuntu 20.04 映像上启用 Kubernetes v1.26.4 的替代方法,请执行以下操作:
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: OSImage
metadata:
creationTimestamp: "2023-06-02T06:08:35Z"
generation: 2
labels:
image-type: ova
os-arch: amd64
os-name: ubuntu
os-type: linux
...
spec:
image:
ref:
MY-FIELD: MY-VALUE
version: v1.26.4---vmware.1-tkg.1-6c92aa1cbb96b644085e6229f41ef14d
type: ova
kubernetesVersion: v1.26.4+vmware.1
os:
arch: amd64
name: ubuntu
type: linux
version: "2004"
其中,MY-FIELD 和 MY-VALUE 是设置为包含在 Cluster 对象规范中的标识符字段和值。
MY-VALUE 长度必须为 0-63 个字符,并且可以为空,否则它必须以字母数字字符开头和结尾,并且包含字母数字、短划线 (-)、下划线 (_) 或点 (.)。OSImage 对象metadata.labels 设置中,其格式为 ova-MY-FIELD: MY-VALUE。要在集群中使用备用计算机映像,请编辑 Cluster 对象,以将设置 ova-MY-FIELD=MY-VALUE 添加到将使用该映像的集群节点的 metadata.annotations。
topology.controlPlane 下编辑 metadata.annotations。topology.workers.machineDeployments 下编辑将使用该映像的计算机部署的 metadata.annotations。例如:
metadata:
annotations:
run.tanzu.vmware.com/resolve-os-image: image-type=ova,ova-my-field=my-value
您可以构建自己的计算机映像以用于集群节点。执行此操作的原因包括:
有关说明,请参见构建计算机映象。