本主题介绍了如何列出可用的 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.17
匹配的所有版本,请运行 tanzu kubernetes-release get v1.24.17
。tanzu kubernetes-release get
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.24.17---vmware.1-tkg.1 v1.24.17+vmware.1-tkg.1 True True
v1.25.13---vmware.1-tkg.1 v1.25.13+vmware.1-tkg.1 True True
v1.26.8---vmware.2-tkg.1 v1.26.8+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.13---vmware.1-tkg.1
要停用 TKr,请执行以下操作:
tanzu kubernetes-release deactivate TKR-NAME
例如:
tanzu kubernetes-release deactivate v1.25.13---vmware.1-tkg.1
每个 Tanzu Kubernetes Grid 版本都提供 Kubernetes 的默认版本。Tanzu Kubernetes Grid v2.3 的默认版本为 Kubernetes v1.26.8。
上游 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-1dot26dot8-ubuntu-2004
、k8s-1dot25dot13-ubuntu-2004
。运行 az vm image terms accept
。例如:
az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot26dot8-ubuntu-2004
Amazon Web Services (AWS):无需操作。包含受支持 Kubernetes 版本的 Amazon Linux 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.1
,TKR-VERSON-*
值是 tanzu kubernetes-release get
列出的旧 TKr 版本,例如 v1.24.14--vmware.1-tkg
。
创建 ConfigMap
对象:
kubectl apply -f old-tkrs-config.yaml
要部署的工作负载集群的 Kubernetes 版本不是您的 Tanzu Kubernetes Grid 版本的默认版本,请在 --tkr
选项中指定 Tanzu Kubernetes 版本。例如,要部署 Kubernetes v1.25.13 集群,请运行:
tanzu cluster create my-1-25-13-cluster --tkr v1.25.13---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
您可以构建自己的计算机映像以用于集群节点。执行此操作的原因包括:
有关说明,请参见构建计算机映象。