K8s的版本创建与升级

为了帮助用户更高效地进行 ACK 集群的创建和升级操作,本文针对涉及 Kubernetes 版本选择场景,提供在不同阶段选择合适版本的建议。

背景信息

阿里云容器服务 Kubernetes 版(ACK)会按季度进行版本升级。由于版本机制的限制仅支持创建最新的三个版本,而早于这三个版本的旧版将不再开放创建。

在实际使用中,ACK 集群的 Kubernetes 版本往往与运行在其上的各类应用和组件存在依赖关系。因此,用户并不希望每次新建集群时都默认选择最新版本,而是希望能够根据自身需求指定版本号。为此,许多计算巢部署方案会将 Kubernetes 版本作为参数暴露给用户。

创建指定版本

  1. 服务商在创建计算巢服务时需要在模板录入区域中,将Kubernetes版本参数暴露供用户选择。

    Parameters:
      KubernetesVersion:
        Type: String
        Label:
          zh-cn: Kubernetes版本
          en: Kubernetes Version
        AssociationProperty: ALIYUN::CS::Cluster::KubernetesVersion
        AssociationPropertyMetadata:
          AutoSelectFirst: true
    • AssociationProperty:ALIYUN::CS::Cluster::KubernetesVersion:此参数用于产生下拉框,并默认可选择最新的三个版本。

    • AssociationPropertyMetadata-AutoSelectFirst:true :此参数用于默认选择列表中第一个值,即最新版本。

  2. 用户在创建服务实例页面,选择需要的版本。

    image

关于创建计算巢服务与服务实例的完整操作,请参见创建服务部署服务实例

升级K8s版本

当用户进行服务实例升级时,如果计算巢服务中新旧K8s版本发生变化,将会自动触发K8s版本升级。根据当前计算巢服务与服务实例之间的版本不同,分为以下场景。

说明

ACK不支持跨版本升级,如1.31.9需要升级为1.33.1,需要先升级到1.32.1,再升级到1.33.1,不支持1.31.9直接升级到1.33.1。

场景一:旧版本不暴露版本参数,新版本暴露版本参数

由于新版本暴露版本参数,因此升级时用户可以选择版本。若用户选择的版本与当前不一致,将会触发版本升级。

假设用户当前的版本为1.31,升级情况如下:

  • 若可选的版本范围为1.31~1.33,则用户选择除1.31的其他版本将会触发升级。

  • 若可选的版本范围为1.32~1.34,则用户选择任意版本都将触发升级。

因此,若服务商希望用户版本升级,则需要在新的计算巢服务版本中配置k8s版本参数用于升级。若不希望升级,则需告知用户不要修改版本号。

场景二:旧版本无暴露版本参数,新版本也无暴露版本参数

仅当旧模板中ACK资源的版本参数已固定(如1.31),在新版本模板中更新了版本参数(如固定为1.32),用户升级时将会触发版本升级。其余情况将不会触发版本升级。

场景三:旧版本暴露版本参数,新版本也暴露版本参数

由于新版本暴露版本参数,因此升级时用户将可以选择版本。若用户选择的版本与当前不一致,将会触发版本升级。若不希望升级,则需告知用户不要修改版本号。

场景四:旧版本暴露版本参数,新版本无暴露版本参数

若新版本服务不暴露版本参数,且新模板中版本号固定,若与旧版本模板中不一致,将会触发版本升级。