다음을 통해 공유

升级 AKS 中的操作系统 (OS) 版本

本文介绍可用于 Azure Kubernetes 服务(AKS)节点的 OS 版本,以及测试和升级 OS 版本的最佳做法。

谨慎

本文引用了 AKS 弃用的 Ubuntu OS 版本:

  • 2025 年 6 月 17 日开始,AKS 将不再支持 Ubuntu 18.04。 将删除现有节点映像,AKS 将不再提供安全更新。 你将无法再缩放节点池。 通过将 节点池升级到 受支持的 Kubernetes 版本,迁移到受支持的 Ubuntu 版本。 有关此停用的详细信息,请参阅 停用:AKS 上的 Ubuntu 18.04 节点池

  • 2027 年 3 月 17 日开始,AKS 将不再支持 Ubuntu 20.04。 将删除现有节点映像,AKS 将不再提供安全更新。 你将无法再缩放节点池。 通过将 节点池升级到 Kubernetes 版本 1.34+,迁移到受支持的 Ubuntu 版本。 有关此停用的详细信息,请参阅 停用:AKS 上的 Ubuntu 20.04 节点池

重要

2025 年 11 月 30 日开始,AKS 将不再支持或提供 Azure Linux 2.0 安全更新。 从 2026 年 3 月 31 日起,将删除节点映像,并且无法缩放节点池。 通过将 节点池 升级到受支持的 Kubernetes 版本或迁移到 osSku AzureLinux3,以迁移到受支持的 Azure Linux 版本。 有关详细信息,请参阅 停用:AKS 上的 Azure Linux 2.0 节点池

支持的操作系统版本

每个 节点映像 对应于可以使用 OS SKU 指定的 OS 版本。 创建群集和节点池时,可以指定以下参数:

  • --os-type:OS 类型,包括 Linux 或 Windows。 无法在群集创建或更新期间指定 Windows OS 类型。
  • --os-sku:用于指定 OS 版本或 OS 变体。 无法在群集创建或更新期间指定 Windows OS SKU。 有关支持的 OS SKU 选项的详细信息,请参阅 Azure AKS CLIAPI
  • --kubernetes-version:用于创建节点池或群集的 Kubernetes 版本。

最佳实践指南

默认 OS 版本是最新验证的版本。

  • 对于 Ubuntu,我们建议在指定 --os-type Linux--os-sku Ubuntu 时创建群集和节点池。 这将根据 Kubernetes 版本自动更新到最新的默认 Ubuntu 版本。
  • 对于 Azure Linux,我们建议在指定 --os-type Linux--os-sku AzureLinux 的同时创建群集和节点池。 这会根据 Kubernetes 版本自动更新到最新的默认 Azure Linux 版本。
  • 对于 Windows,我们建议在指定 --os-type Windows--os-sku Windows2022 时创建节点池。 当新 OS 版本发布时,您需要手动将节点池更新到该版本。
OS 类型 操作系统 SKU 支持的 Kubernetes 版本 默认版本化
Linux Ubuntu 所有 Kubernetes 版本都支持此 OS SKU。 此 OS SKU 的 OS 版本会根据 Kubernetes 版本进行更改。 Ubuntu 22.04 默认为 Kubernetes 版本 1.25 到 1.32。
Linux Ubuntu2404 此 OS SKU 仅在 Kubernetes 1.32 到 1.38 中受支持。 Ubuntu 24.04 现已提供预览版,可与 Kubernetes 1.32+ 一起使用 --os-sku Ubuntu2404。 如果要在不升级 Kubernetes 版本的情况下测试新的 OS 版本,建议使用此 OS SKU。
Linux Ubuntu2204 Kubernetes 版本 1.25 到 1.33 支持此 OS SKU。 使用--os-sku Ubuntu时,当前默认为 Ubuntu 22.04。 如果需要在测试 Ubuntu 24.04 后回滚到 Ubuntu 22.04,建议使用此 OS SKU。
Linux AzureLinux 所有 Kubernetes 版本都支持此 OS SKU。 此 OS SKU 的 OS 版本会根据 Kubernetes 版本进行更改。 Azure Linux 2.0 默认为 Kubernetes 版本 1.27 到 1.31。 Azure Linux 3.0 将默认为 Kubernetes 版本 1.32+。 当在 AKS 1.31 上启用AzureLinuxV3Preview特性标志时,--os-sku AzureLinux默认为 3.0。
Linux AzureLinux3 Kubernetes 1.28 到 1.36 支持此 OS SKU。 如果要在不升级 Kubernetes 版本的情况下测试新的 OS 版本,建议使用此 OS SKU。 还可以使用此 OS SKU 从 Azure Linux 2.0 迁移到 Azure Linux 3.0。
Windows操作系统 Windows2019 1.14-1.32 Kubernetes 版本 1.14 到 1.24 中的 Windows OS 类型默认值。
Windows操作系统 Windows2022 1.23 到 1.34 Kubernetes 版本 1.25 到 1.33 中的 Windows OS 类型默认值。

迁移到新的 OS 版本

在 AKS 上发布新的 OS 版本时,它会在预览版中得到支持,直到它成为一般可用和默认版本。 建议使用新的 OS 版本测试非生产工作负荷(在预览版中可用)。 若要访问预览函数,请确保已安装预览扩展。 可以使用命令安装扩展 az extension add --name aks-preview

更新现有节点池上的操作系统 SKU

使用 os-sku 命令更新现有节点池上的 az aks nodepool update。 如果预览版中提供了新的 OS 版本,此功能允许你将节点池迁移到新的 OS 版本,而无需升级 Kubernetes 版本。

注释

节点池更新命令不支持以下值:

  • --os-sku Windows2019
  • --os-sku Windows2022

相反,需要创建群集或向群集添加节点池,其中包含要使用的相应 --os-sku

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --os-type Linux \
    --os-sku Ubuntu \
    --name $NODE_POOL_NAME \
    --node-count 1

可以使用 az aks nodepool update 命令在任何受支持的 Linux os-sku之间迁移。 如果目标操作系统没有支持您使用的 Kubernetes 版本、虚拟机大小或 FIPS 启用功能的节点映像,该命令可能会失败。

迁移到 Ubuntu 24.04(预览版)

Ubuntu 24.04 通过指定 --os-sku Ubuntu2404提供预览版。

注释

迁移到 --os-sku Ubuntu2404时,请记住以下信息:

  • --os-sku Ubuntu2404 不支持 FIPS
  • Kubernetes 版本 1.32 到 1.38 支持 Ubuntu 24.04。
  • 在将 Kubernetes 版本升级到 1.39+ 之前,需要将 OS SKU 更新为受支持的 OS 选项。 --os-sku Ubuntu2404 是一个选项,用于测试新的 OS Linux 版本,而无需升级 Kubernetes 版本。
  • 需要安装并配置 Azure CLI 18.0.0b5 或更高版本。 若要查找 CLI 版本,请运行 az --version。 如果需要安装或升级,请参阅 安装 Azure CLI

安装 aks-preview 扩展

  1. 使用 aks-preview 命令安装 az extension add Azure CLI 扩展。

    重要

    AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

    az extension add --name aks-preview
    
  2. 使用 az extension update 命令更新到扩展的最新版本。 Ubuntu 24.04 至少需要 18.0.0b5

    az extension update --name aks-preview
    

注册 Ubuntu2404Preview 功能标志

  1. 使用 Ubuntu2404Preview 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "Ubuntu2404Preview"
    
  2. 使用 az feature show 命令验证注册状态。 几分钟后,状态将显示为“已注册”

    az feature show --namespace Microsoft.ContainerService --name Ubuntu2404Preview
    
  3. 当状态反映为已注册时,使用 命令刷新 az provider register 资源提供程序的注册。

    az provider register --namespace Microsoft.ContainerService
    

更新节点池以使用 Ubuntu 24.04

使用--os-sku Ubuntu2404命令更新现有节点池中的az aks nodepool update

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --os-type Linux \
    --os-sku Ubuntu2404 \
    --kubernetes-version 1.32.0 \
    --name $NODE_POOL_NAME \
    --node-count 1

迁移到 Azure Linux 3.0

在 Kubernetes 版本 1.32-1.36 中,Azure Linux 3.0 是 --os-sku AzureLinux 的默认版本。 还可以通过指定 --os-sku AzureLinux3来使用 Azure Linux 3.0。

注释

迁移到 --os-sku AzureLinux3时,请记住以下信息:

  • Kubernetes 版本 1.28 到 1.36 支持 --os-sku AzureLinux3
  • --os-sku AzureLinux3 旨在迁移到 Azure Linux 3.0,而无需升级 Kubernetes 版本。 在将 Kubernetes 版本升级到 1.37+ 之前,需要将 OS SKU 更新为受支持的 OS 选项。
  • 对于预览版,需要安装和配置 Azure CLI 版本 18.0.0b36 或更高版本;对于正式版,需要安装和配置 2.78.0 版或更高版本。 若要查找 CLI 版本,请运行 az --version。 如果需要安装或升级,请参阅 安装 Azure CLI

更新节点池以使用 Azure Linux 3.0

使用--os-sku AzureLinux3命令更新现有节点池中的az aks nodepool update

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --os-type Linux \
    --os-sku AzureLinux3 \
    --kubernetes-version 1.30.0 \
    --name $NODE_POOL_NAME \
    --node-count 1

回滚您的操作系统版本

在支持多个 OS 版本的 Kubernetes 版本中,可以使用 az aks nodepool update 该命令回滚到以前的 OS 版本。

在以下情况下,您可以考虑回滚 OS 版本:

  • 如果测试新操作系统版本时遇到问题。
  • 升级到支持将新操作系统版本设为默认版本的 Kubernetes 版本后,您可能需要回滚到默认的 UbuntuAzureLinux OS SKU。 这样,就可以在 Kubernetes 升级过程中获取将来的 OS 版本,而无需更新节点池。

将 OS 版本回滚到默认 OS SKU

可以使用 az aks nodepool update 命令更新现有节点池上的 os-sku。 如果您的 Kubernetes 版本支持早期的 OS 版本,则此功能可以让您回滚到之前的 OS 版本。

注释

节点池更新命令不支持以下值:

  • --os-sku Windows2019
  • --os-sku Windows2022
操作系统 SKU 默认 OS 版本
Ubuntu 如果 Kubernetes 版本为 1.25-1.34,并且 OS SKU Ubuntu,则 Ubuntu 22.04 是默认的操作系统版本。 Ubuntu 24.04 是 Kubernetes 1.35-1.37 中 Ubuntu 的默认值。
AzureLinux 如果您具有 OS SKU AzureLinux,在 Kubernetes 1.26-1.31 中,Azure Linux 2.0 是 Azure Linux 的默认版本。 Azure Linux 3.0 是 Kubernetes 1.32-1.36 中 AzureLinux 的默认值。

将 OS SKU 更新到现有节点池上的 Ubuntu

在将您的节点池更新为使用 OS SKU Ubuntu 时,您将基于 Kubernetes 版本获得默认的 OS 版本。 如果在节点池更新命令期间 OS 版本发生更改,这可能会触发自动重置映像。

使用 --os-sku Ubuntu 命令更新现有节点池上的 az aks nodepool update

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --os-type Linux \
    --os-sku Ubuntu \
    --name $NODE_POOL_NAME \
    --node-count 1

可以使用 az aks nodepool update 命令在任何受支持的 Linux os-sku之间迁移。 如果目标操作系统没有支持您使用的 Kubernetes 版本、虚拟机大小或 FIPS 启用功能的节点映像,该命令可能会失败。

在现有节点池上将 OS SKU 更新为 Azure Linux

在将您的节点池更新为使用 OS SKU AzureLinux 时,您将基于 Kubernetes 版本获得默认的 OS 版本。 如果在节点池更新命令期间 OS 版本发生更改,这可能会触发自动重置映像。

使用--os-sku AzureLinux命令更新现有节点池中的az aks nodepool update

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --os-type Linux \
    --os-sku AzureLinux \
    --name $NODE_POOL_NAME \
    --node-count 1

回滚到 Ubuntu 22.04

注释

迁移到 --os-sku Ubuntu2404时,请记住以下信息:

  • --os-sku Ubuntu2204 不支持 FIPS
  • Kubernetes 版本 1.25 到 1.33 支持 Ubuntu 24.04。
  • --os-sku Ubuntu2204 用于将当前 Kubernetes 版本回滚至 Ubuntu 22.04。 需要将 OS SKU 更新为受支持的 OS 选项,将 Kubernetes 版本升级到 1.34+。

使用--os-sku Ubuntu2204命令将现有节点池还原到az aks nodepool update

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --os-type Linux \
    --os-sku Ubuntu2204 \
    --kubernetes-version 1.32.0 \
    --name $NODE_POOL_NAME \
    --node-count 1

后续步骤

若要详细了解 AKS 上的节点映像、节点池升级和节点配置,请参阅以下资源: