你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

升级 Azure Kubernetes 服务中的节点池(AKS)

本文介绍如何升级单节点池,以及如何升级 Azure Kubernetes 服务(AKS)中多个节点池的群集控制平面。

注释

最佳做法是将 AKS 群集中的所有节点池升级到相同的 Kubernetes 版本。 [az aks upgrade][az-aks-upgrade] 的默认行为是将所有节点池与控制平面一起升级,以实现这种对齐。 升级单个节点池的功能允许你执行滚动升级,并在节点池之间调度 Pod,以维持应用程序正常运行时间。

升级单个节点池

注释

节点池操作系统(OS)映像版本与群集的 Kubernetes 版本绑定。 只有在群集升级后,才会获得 OS 映像升级。

  1. 使用 [az aks get-upgrades][az-aks-get-upgrades] 命令检查是否有可用的升级。

    az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name>
    
  2. 使用 [az aks nodepool upgrade][az-aks-nodepool-upgrade] 命令升级特定节点池。

    az aks nodepool upgrade \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --kubernetes-version <kubernetes-version> \
        --no-wait
    
  3. 使用 [az aks nodepool list][az-aks-nodepool-list] 命令检查节点池的状态。

    az aks nodepool list --resource-group <resource-group-name> --cluster-name <cluster-name>
    

    以下示例输出显示节点池处于 升级 状态:

    [
      {
        ...
        "count": 3,
        ...
        "name": "<node-pool-name>",
        "orchestratorVersion": "<kubernetes-version>",
        ...
        "provisioningState": "Upgrading",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "<node-pool-name-2>",
        "orchestratorVersion": "<kubernetes-version-2>",
        ...
        "provisioningState": "Succeeded",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

    将节点升级到指定的版本需要花费几分钟时间。 升级完成后,节点池将 provisioningState 更改为 “成功”。

升级包含多个节点池的群集控制平面

AKS 群集具有两个与 Kubernetes 版本关联的群集资源对象:群集控制平面 Kubernetes 版本和具有 Kubernetes 版本的节点池。

控制平面和节点池的升级行为

控制平面映射到一个或多个节点池。 升级作的行为取决于所使用的 Azure CLI 命令和指定的标志:

  • az aks upgrade 将群集的控制平面和所有节点池升级到相同的 Kubernetes 版本。
  • 带有 --control-plane-only 标志的 az aks upgrade 仅升级群集控制平面,所有节点池保持不变。
  • az aks nodepool upgrade 仅将目标节点池升级到指定的 Kubernetes 版本。

升级验证规则

注释

Kubernetes 使用标准的语义化版本控制方案。 版本号以 x.y.z 表示,其中,x 是主要版本,y 是次要版本,z 是补丁版本。 例如,在版本 1.12.6 中, 1 是主要版本, 12 是次要版本, 6 是修补程序版本。 控制平面和初始节点池的 Kubernetes 版本是在群集创建过程中设置的。 将其他节点池添加到群集时,将为其设置 Kubernetes 版本。 不同节点池的 Kubernetes 版本可能不同,节点池与控制平面的 Kubernetes 版本也可能不同。

使用以下规则集对群集控制平面和节点池的 Kubernetes 升级进行验证:

  • 节点池升级的有效版本规则

    • 节点池版本的主要版本必须与控制平面相同。
    • 节点池的次要版本必须在控制平面版本的两个次要版本范围内。
    • 节点池版本不能大于控制平面的 major.minor.patch 版本。
  • 提交升级操作的规则

    • 无法降级控制平面或节点池的 Kubernetes 版本。
    • 如果未指定节点池的 Kubernetes 版本,则行为由客户端决定。 在 Azure 资源管理器(ARM)模板中,声明回退到为节点池定义的现有版本。 如果没有设置任何参数,它将回退到控制平面的版本。
    • 不能在单个控制平面或节点池资源上同时提交多个操作。 可在给定时间升级或缩放控制平面或节点池。

后续步骤:在 AKS 中管理节点池

若要详细了解如何在 AKS 中管理节点池,请参阅在 Azure Kubernetes 服务(AKS)中管理节点池