教程:在 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 概述群集和工作负载