多个 Kubernetes 版本

本主题介绍了如何列出可用的 Kubernetes 版本并部署具有非默认 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

激活或停用 Tanzu Kubernetes 版本

可以激活或停用 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

部署具有非默认 Kubernetes 版本的集群

每个 Tanzu Kubernetes Grid 版本都提供 Kubernetes 的默认版本。Tanzu Kubernetes Grid v2.3 的默认版本为 Kubernetes v1.26.8。

上游 Kubernetes 发布修补程序或新版本时,VMware 会在公用注册表中发布修补程序或新版本,Tanzu Kubernetes 发布控制器会将其导入管理集群。这样,tanzu CLI 便可以根据新版本创建集群。

  • 要列出可用的 Kubernetes 版本,请参见上面的可用 Kubernetes 版本
  • 要部署运行非默认版本的 Kubernetes 的集群,请执行以下步骤。

将 Kubernetes 版本发布到基础架构

在 vSphere 和 Azure 上,您需要执行其他步骤,然后才能部署运行非默认 Kubernetes 版本的集群:

  • vSphere:将相应的基础映像模板 OVA 文件导入 vSphere,然后将其转换为虚拟机模板。有关将基础 OVA 文件导入到 vSphere 的信息,请参见将基础映像模板导入到 vSphere

  • Azure:运行 Azure CLI 命令以接受基础操作系统版本的许可证。接受许可证后,未来可以跳过此步骤:

    1. tanzu kubernetes-release get 命令输出中列出的目标 Kubernetes 版本转换为其 Azure 映像 SKU,如下所示:
      • 将前导 v 更改为 k8s-
      • 将版本号中的 . 更改为 dot
      • 将后面的 +vmware.* 更改为 -ubuntu-2004,以指定 Ubuntu v20.04(Azure 上所有 Tanzu Kubernetes Grid 虚拟机的默认操作系统版本)。
      • 示例:k8s-1dot26dot8-ubuntu-2004k8s-1dot25dot13-ubuntu-2004
    2. 运行 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 集群

要部署运行非默认 Kubernetes 版本的工作负载集群,请执行以下操作:

  1. 如果要部署基于计划的集群,请将环境变量 ALLOW_LEGACY_CLUSTER 设置为 true

    export ALLOW_LEGACY_CLUSTER=true
    
  2. 如果要部署集群的 Kubernetes 修补程序版本低于支持的 Kubernetes 版本中列出的其次要版本支持的最新修补程序版本,请在 tkg-system 命名空间中为其 TKr 创建 ConfigMap 对象:

    1. 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.1TKR-VERSON-* 值是 tanzu kubernetes-release get 列出的旧 TKr 版本,例如 v1.24.14--vmware.1-tkg

    2. 创建 ConfigMap 对象:

      kubectl apply -f old-tkrs-config.yaml
      
  3. 要部署的工作负载集群的 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_NAMEOS_VERSIONOS_ARCH 以指定基础计算机映像,例如 ubuntu20.04photon3amd64。这些默认为 VMware 分发的操作系统映像,但您也可以指定自己的备用操作系统映像以用于集群节点:

  1. 按照将基础映像模板导入到 vSphere 中所述,将映像上载到 vSphere。

  2. 根据您的映像是否与由 VMware 分发的现有计算机映像共享相同的操作系统版本,执行以下操作之一:

    • 如果要指定与现有 TKr 具有相同操作系统名称、版本和架构的备用映像以及 VMware 分发的映像,请编辑其 OSImage 对象,例如:

      kubectl edit OSImage v1.26.4---vmware.1-tkg.1-6c92aa1cbb96b644085e6229f41ef14d
      
    • 否则,使用现有的 OSImage 对象定义作为模板创建并应用新的 OSImage 对象。将其 metadata.namespec.image.ref.version 值设置为 OVA 文件名。

  3. 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-FIELDMY-VALUE 是设置为包含在 Cluster 对象规范中的标识符字段和值。

    • MY-VALUE 长度必须为 0-63 个字符,并且可以为空,否则它必须以字母数字字符开头和结尾,并且包含字母数字、短划线 (-)、下划线 (_) 或点 (.)。
    • TKG 将这些值复制到 OSImage 对象metadata.labels 设置中,其格式为 ova-MY-FIELD: MY-VALUE
  4. 要在集群中使用备用计算机映像,请编辑 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
      

构建和使用自定义计算机映像

您可以构建自己的计算机映像以用于集群节点。执行此操作的原因包括:

  • 在 VMware 支持但不分发的基础操作系统(如 Red Hat Enterprise Linux (RHEL) v8)上创建集群。
  • 要将其他软件包安装到基础计算机映像中,或者按照映像生成器文档中的自定义中所述对其自定义。

有关说明,请参见构建计算机映象

check-circle-line exclamation-circle-line close-line
Scroll to top icon