升级 Azure Kubernetes 服务 (AKS) 群集

适用于:Azure Stack HCI 版本 23H2

作为管理应用程序和群集生命周期的一部分,可能需要升级到 Kubernetes 的最新可用版本。 升级涉及迁移到较新版本的 Kubernetes、应用操作系统 (操作系统) 版本更新 (修补) ,或同时应用两者。 AKS Arc 支持使用最新的 OS 和运行时更新升级 (或修补工作负载群集中的) 节点。

所有升级都以连续、滚动的方式执行,以确保工作负载不间断地可用。 当具有更新版本的新的 Kubernetes 工作器节点进入群集中时,资源将从旧节点移到新节点。 成功完成后,旧节点将解除授权并从群集中删除。

准备阶段

如果使用 Azure CLI,本文需要 Azure CLI 2.34.1 或更高版本。 运行 az --version 即可查找版本。 如果需要安装或升级 CLI,请参阅 安装 Azure CLI

检查可用升级

使用以下命令检查哪些 Kubernetes 版本可用于群集:

az aksarc get-upgrades --resource-group myResourceGroup --name myAKSCluster

以下示例输出将当前版本显示为 1.24.11, 并列出 下的 upgrades可用版本:

{  
  "agentPoolProfiles": [  
    {  
      "kubernetesVersion": "1.24.11",  
      "upgrades": [  
        {  
          "kubernetesVersion": "1.25.7"  
        }  
      ]  
    }  
  ],  
  "controlPlaneProfile": {  
    "kubernetesVersion": "1.24.11",  
    "name": "aksarc-testupgrade",  
    "osType": "Linux",  
    "upgrades": [  
      {  
        "kubernetesVersion": "1.25.7"  
      }  
    ]  
  },  
  ...  
  "provisioningState": "Succeeded",  
  ...  
}

升级 Kubernetes 版本

升级支持的 AKS 群集时,不能跳过 Kubernetes 次要版本。 必须按主版本号按顺序执行所有升级。 例如,允许从 1.24.x 升级到 1.25.x1.25.x1.26.x 。 不允许使用 1.24.x1.26.x

注意

如果未指定修补程序,群集会自动升级到指定次要版本的最新 GA 修补程序。 例如,将 设置为 --kubernetes-version1.25 会导致群集升级到 1.25.7

可以使用以下命令升级群集:

az aksarc upgrade \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --kubernetes-version <KUBERNETES_VERSION>

使用 show 命令确认升级成功:

az aksarc show --resource-group myResourceGroup --name myAKSCluster

以下示例输出显示群集现在运行 1.25.7

{  
"extendedLocation": {  
  "name":
"/subscriptions/<subscription>/resourcegroups/<resource group>/providers/microsoft.extendedlocation/customlocations/<custom
location>",  
  "type": "CustomLocation"  
},  
"id": "/subscriptions/<subscription>/resourceGroups/<resource group>/providers/Microsoft.Kubernetes/connectedClusters/aksarc-testupgrade/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default",  
"name": "default",  
"properties": {  
  "agentPoolProfiles": [  
    {  
    }  
  ],  
  "controlPlane": {  
    "availabilityZones": null,  
    "controlPlaneEndpoint": {  
      "hostIp": null,  
      "port": null  
    },  
    "count": 1,  
    "linuxProfile": {  
      "ssh": {  
        "publicKeys": null  
      }  
    },  
    "name": null,  
    "nodeImageVersion": null,  
    "osSku": "CBLMariner",  
    "osType": "Linux",  
    "vmSize": "Standard_A4_v2"  
  },  
  "kubernetesVersion": "1.25.7",  
...  
  "provisioningState": "Succeeded",  
  ...  
},  
....  
"type": "microsoft.hybridcontainerservice/provisionedclusterinstances"  
}

重要

从跳过两个或更多次要版本的不受支持的版本执行升级时,升级无法保证正常运行。 如果版本明显过期,建议改为重新创建群集。

在升级操作期间, provisioningStatecurrentState 指示器都显示 “正在升级 ”消息,以反映正在进行的过程。 但是,如果操作超时, provisioningState 则显示 “失败”,同时 currentState 在后台继续升级时继续显示“ 升级 ”。 无需执行任何操作;升级会一直持续到完成。

更新操作系统 (操作系统) 版本

仅当新映像不需要其他 Kubernetes 版本时,在不更改 Kubernetes 版本的情况下,将工作器节点更新到较新版本的节点映像才有效。 目前,AKS Arc 不支持跨所有支持的 Kubernetes 版本仅节点映像更新。 如果需要更新节点映像,必须将群集升级到最新的 Kubernetes 版本,以确保包含所有节点映像更新。

重要

尝试使用 node-image-only 标志时,会收到一条消息,指示此功能尚不受支持。

后续步骤