教程:升级由 Azure Arc 启用的 AKS 中的 Kubernetes

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

作为管理应用程序和群集生命周期的一部分,在使用由 Azure Arc 启用的 AKS 时,可能需要升级到 Kubernetes 的最新可用版本。

本教程第 7 部分(共 7 部分)介绍了如何升级 Kubernetes 群集。 将了解如何执行以下操作:

  • 确定 Kubernetes 的当前版本和可用版本
  • 升级 Kubernetes 节点的 Kubernetes 版本
  • 升级 Kubernetes 节点的 OS 版本
  • 将 Kubernetes 群集升级到最新版本
  • 验证升级是否成功
  • 删除 Kubernetes 群集

有哪些可用的更新选项?

有几种类型的更新,这些更新可以彼此独立进行,也可通过某些受支持的组合进行:

  • 将 AKS 主机更新 到最新版本。
  • 将 AKS 工作负载群集更新到新的 Kubernetes 版本。
  • 将 AKS 容器主机更新到较新版本的操作系统。
  • 组合更新操作系统和 Kubernetes 版本。

为了避免工作负载可用性中断,所有更新均在滚动流中完成。 当具有更新版本的新的 Kubernetes 工作器节点进入群集中时,资源将从旧节点移到新节点。 成功完成后,旧节点将解除授权并从群集中删除。

本教程中的示例假设工作负载群集 mycluster 目前采用 Kubernetes 版本 1.18.8,并使用一个发布时间已超过 30 天的操作系统版本。

在开始之前

在前面的教程中,你已了解如何将应用程序打包到容器映像中,将其上传到Azure 容器注册表,以及如何创建 Kubernetes 群集。 然后,你已将应用程序部署到群集。 如果尚未完成这些步骤,请先阅读教程 1 - 创建容器映像

更新工作负载群集的 Kubernetes 版本

在更新 Kubernetes 版本之前,必须先升级 PowerShell 模块和 AKS 主机。

重要

仅当当前操作系统版本支持目标 Kubernetes 版本时,将工作负载群集更新到较新版本的 Kubernetes 才有效。 若要查看受支持的操作系统和 Kubernetes 版本组合,请使用 Get-AksHciUpdates 命令。

按照以下步骤更新 Kubernetes 版本:

  1. 若要获取工作负载群集的当前版本,请运行以下命令:

    Get-AksHciCluster
    
    ProvisioningState     : provisioned
    KubernetesVersion     : v1.20.7
    NodePools             : linuxnodepool
    WindowsNodeCount      : 0
    LinuxNodeCount        : 0
    ControlPlaneNodeCount : 1
    Name                  : mycluster   
    
  2. 若要获取可用的 Kubernetes 版本,请运行以下命令:

    Get-AksHciKubernetesVersion
    
    OrchestratorType OrchestratorVersion OS      IsPreview
    ---------------- ------------------- --      ---------
    Kubernetes       v1.19.9             Linux       False
    Kubernetes       v1.19.11            Linux       False
    Kubernetes       v1.20.5             Linux       False
    Kubernetes       v1.20.7             Linux       False
    Kubernetes       v1.21.1             Linux       False
    Kubernetes       v1.19.9             Windows     False
    Kubernetes       v1.19.11            Windows     False
    Kubernetes       v1.20.5             Windows     False
    Kubernetes       v1.20.7             Windows     False
    Kubernetes       v1.21.1             Windows     False
    

    输出显示提供该版本的 Kubernetes 版本和操作系统。 可以看到,还有其他升级版本可用。 但是,升级群集时,不能跳过版本。 例如,允许从 v1.18.xx --> v1.19.xx,但不允许 v1.18.xx --> v1.20.xx。

  3. 启动 Kubernetes 版本更新

    若要更新 Kubernetes 版本,请运行以下命令:

    Update-AksHciCluster -name mycluster -kubernetesVersion v1.21.1
    

    注意

    此命令只会将 mycluster 工作负载群集中的现有群集节点更新到新版 Kubernetes。

仅更新操作系统版本

重要

可以在不更改 Kubernetes 版本的情况下将工作负载群集更新到较新版本的操作系统,但仅当新的操作系统版本不需要其他 Kubernetes 版本时,这才有效。

使用以下示例中的步骤更新 OS 版本:

  1. 若要获取可用的工作负载群集更新,请运行以下命令:

    Get-AksHciClusterUpdates -name mycluster
    
    details                             kubernetesversion                operatingsystemversion
    -------                             -----------------                ----------------------
    This is a patch kubernetes upgrade. (i.e v1.1.X  to v1.1.Y) v1.19.9  @{mariner=April 2021; windows=April 2021}
    This is a minor kubernetes upgrade. (i.e v1.X.1 to v1.Y.1)  v1.20.5  @{mariner=April 2021; windows=April 2021}
    
  2. 若要启动操作系统版本更新,请运行以下命令:

    Update-AksHciCluster -clusterName mycluster -kubernetesVersion v1.21.1 -operatingSystem
    

更新 OS 版本和 Kubernetes 版本

重要

支持将工作负载群集更新到较新版本的操作系统和 Kubernetes 版本。

以下示例假定有可用的新 Kubernetes 版本,当前版本号为 v1.20.7。

  1. 若要获取所有可用的工作负载群集更新,请运行以下命令:

    Get-AksHciClusterUpdates -name mycluster
    
    details                             kubernetesversion                  operatingsystemversion
    -------                             -----------------                  ----------------------
    This is a patch kubernetes upgrade. (i.e v1.1.X  to v1.1.Y) v1.19.9    @{mariner=April 2021; windows=April 2021}
    This is a minor kubernetes upgrade. (i.e v1.X.1 to v1.Y.1)  v1.20.5    @{mariner=April 2021; windows=April 2021}
    
  2. 若要启动工作负载群集更新,请运行以下命令:

    Update-AksHciCluster -name mycluster -kubernetesVersion v1.21.1
    

验证升级

使用 Get-AksHciCluster 命令确认升级成功,如下所示:

Get-AksHciCluster -name mycluster

以下示例输出显示群集运行 KubernetesVersion v1.21.1:

ProvisioningState     : provisioned
KubernetesVersion     : v1.21.1
NodePools             : linuxnodepool
WindowsNodeCount      : 0
LinuxNodeCount        : 0
ControlPlaneNodeCount : 1
Name                  : mycluster

删除群集

由于本教程是本系列的最后一部分,因此可能需要删除群集。 使用 Remove-AksHciCluster 命令删除资源组、容器服务和所有相关资源:

Remove-AksHciCluster -name mycluster

后续步骤

在本教程中,你升级了由 Arc 启用的 AKS 上的 Kubernetes 群集中的 Kubernetes。你已了解如何:

  • 确定 Kubernetes 的当前版本和可用版本
  • 升级 Kubernetes 节点的 Kubernetes 版本
  • 升级 Kubernetes 节点的 OS 版本
  • 将 Kubernetes 群集升级到最新版本
  • 验证升级是否成功

有关 Azure Arc 启用的 AKS 的详细信息,请参阅 AKS 概述 以及 群集和工作负载