升级 Azure Kubernetes 服务 (AKS) 群集

适用于:Azure 本地版本 23H2

在管理应用程序和群集生命周期过程中,可能需要升级到最新版本的 Kubernetes。 升级涉及迁移到较新版本的 Kubernetes、应用操作系统(OS)版本更新(修补)或两者。 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.x 到 1.26.x 不允许使用 1.24.x1.26.x

注意

如果未指定补丁,群集会自动升级到指定的次要版本的最新 GA 补丁。 例如,设置为 --kubernetes-version 1.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"  
}

重要

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

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

更新操作系统 (OS) 版本

仅当新映像不需要其他 Kubernetes 版本时,才会将工作节点更新到较新版本的节点映像,而不更改 Kubernetes 版本。 目前,AKS Arc 不支持所有 Kubernetes 版本的仅节点映像更新。 如果需要更新节点映像,必须将群集升级到最新的 Kubernetes 版本,以确保合并所有节点映像更新。

重要

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

后续步骤