チュートリアル - Azure Kubernetes Service (AKS) クラスターのアップグレード

アプリケーションとクラスターのライフサイクルの一環として、使用可能な最新バージョンの Kubernetes にアップグレードすることができます。 Azure CLI、Azure PowerShell、または Azure portal を使って、Azure Kubernetes Service (AKS) クラスターをアップグレードできます。

このチュートリアルでは、AKS クラスターをアップグレードします。 以下の方法を学びます。

  • Kubernetes の現在のバージョンと使用可能なバージョンを識別します。
  • Kubernetes ノードをアップグレードします。
  • 正常なアップグレードを検証します。

開始する前に

前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、コンテナー イメージを Azure Container Registry (ACR) にアップロードしました。 また、AKS クラスターを作成し、それにアプリケーションをデプロイしました。 これらのステップを完了しておらず、順番に進めたい場合は、「チュートリアル 1 - AKS 用のアプリケーションを準備する」から始めます。

Azure CLI を使用する場合、このチュートリアルでは、Azure CLI バージョン 2.34.1 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

Azure PowerShell を使用する場合、このチュートリアルでは、Azure PowerShell バージョン 5.9.0 以降が必要です。 バージョンを確認するには、Get-InstalledModule -Name Az を実行します。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell のインストールに関するページをご覧ください。

AKS クラスターをアップグレードするには、Azure Kubernetes Service共同作成者ロールまたは同等のアクセス許可が必要です。

アップグレードする前に、 AKS リリース ノート で破壊的変更と非推奨の API を確認してください。 また、ワークロードのポッド中断予算 (PDB)、使用可能なコンピューティング クォータ、およびサージ ノードのサブネット IP 容量も検証します。 詳細については、「 AKS クラスターのアップグレード オプションと推奨事項」を参照してください。

Azure CLIを使用して使用可能なクラスター バージョンを取得する

アップグレードする前に、 az aks get-upgrades コマンドを使用して、クラスターで使用できる Kubernetes リリースを確認します。

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

次の出力例は、クラスターの現在のバージョンを示し、 upgradesの下に新しいバージョンを一覧表示します。

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Azure PowerShellを使用して使用可能なクラスター バージョンを取得する

  1. アップグレードする前に、 Get-AzAksCluster コマンドレットを使用して、クラスターの現在の Kubernetes のバージョンとリージョンを確認します。

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    次の出力例は、クラスターの現在のバージョンと場所を示しています。

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. Get-AzAksVersion コマンドレットを使用して、クラスターが存在するリージョンで使用可能な Kubernetes リリースを一覧表示します。

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    次の出力例は、 OrchestratorVersionのリージョン バージョンを示しています。

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    潜在的なアップグレード ターゲットを特定するには、クラスターの現在のバージョンより新しいバージョンを Kubernetes バージョンのアップグレード規則と比較します。 このコマンドレットは、リージョンの可用性を一覧表示し、特定のクラスターのアップグレード パスを検証しません。

Azure ポータルを使用して使用可能なクラスター バージョンを取得する

  1. Azure portal にサインインします。

  2. AKS クラスター リソースに移動します。

  3. サービス メニューの [設定] で、[ アップグレード] を選択します。

  4. Kubernetes のバージョンで、[バージョンのアップグレード] を選択します。

    Azure portal の [バージョンのアップグレード] オプションのスクリーンショット。

  5. [ Kubernetes バージョンのアップグレード ] ページで、 Kubernetes の [バージョン ] ドロップダウンを選択して、アップグレードに使用できる Kubernetes のバージョンを表示します。

    使用可能なアップグレード バージョンが表示された [バージョンのアップグレード ] 画面のスクリーンショット。

アップグレードが利用できない場合は、クラスターが既に利用可能な最新バージョンであるか、クラスターのバージョンがサポート期間外である可能性があります。 バージョンがサポートされておらず、AKS で復旧アップグレードが提供されていない場合は、サポートされている Kubernetes バージョンで新しいクラスターを作成し、ワークロードを移行します。 詳細については、 Kubernetes バージョンの AKS サポート ポリシーを参照してください。

AKS クラスターのアップグレード プロセス

実行中のアプリケーションが中断する可能性を最小限に抑えるため、AKS ノードは慎重に切断およびドレインされます。 このプロセスの間に、AKS は次の手順を実行します。

  • 指定された Kubernetes バージョンを実行するクラスターに 1 つの新しいバッファー ノード (または最大サージに構成されている数のノード) が追加されます。
  • 実行中のアプリケーションへの影響を最小限に抑えるため、古いノードの1つをコルドンしてドレインします。 最大サージを使用している場合は、指定されたバッファー ノードの数と同数のノードが同時に切断およびドレインされます。
  • 古いノードが完全にドレインされると、新しいバージョンを受け取るための再イメージ化が実行され、次にアップグレードされるノード用のバッファー ノードになります。
  • このプロセスは、クラスター内のすべてのノードがアップグレードされるまで繰り返されます。
  • プロセスの最後に、最後にバッファー ノードが削除され、既存のエージェント ノードの数とゾーン バランスが維持されます。

注記

パッチが指定されていない場合、クラスターは、指定されたマイナー バージョンの最新 GA パッチに自動的にアップグレードされます。 たとえば、--kubernetes-version1.28 に設定すると、クラスターは 1.28.9 にアップグレードされます。

詳細については、AKS でサポートされている Kubernetes マイナー バージョンのアップグレードに関する記事を参照してください。

クラスターを手動でアップグレードするか、クラスターの自動アップグレードを構成できます。 サポートされているバージョンの Kubernetes でクラスターを維持できるように、クラスターの自動アップグレードを構成します。

Azure CLIを使用してクラスターを手動でアップグレードする

az aks upgrade コマンドを使用してクラスターをアップグレードします。 この例では、クラスターをバージョン 1.34.10 にアップグレードします。

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

注記

サポートされている LTS 以外のクラスターは、マイナー バージョンごとに順番にアップグレードする必要があります。 たとえば、 1.33.x から 1.35.x にアップグレードするには、最初に 1.34.x にアップグレードします。 アップグレードがバージョン スキュー要件と検証チェックを満たしている場合、LTS クラスターは、AKS によって提供される上位の LTS バージョンに移行するときに、マイナー バージョンをスキップできます。 詳細については、 Kubernetes バージョンのアップグレード規則に関するセクションを参照してください。

次の出力例は、アップグレードの結果を示しています。 kubernetesVersion値は、コマンド例で指定したバージョンと一致するようになりました。

{
  ...
  "agentPoolProfiles": [
    {
      ...
      "count": 3,
      "currentOrchestratorVersion": "1.34.10",
      "maxPods": 110,
      "name": "nodepool1",
      "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202608.26.0",
      "orchestratorVersion": "1.34.10",
      "osType": "Linux",
      "upgradeSettings": {
        "drainTimeoutInMinutes": null,
        "maxSurge": "10%",
        "nodeSoakDurationInMinutes": null,
        "undrainableNodeBehavior": null
      },
      "vmSize": "Standard_DS2_v2",
      ...
    }
  ],
  ...
  "currentKubernetesVersion": "1.34.10",
  "dnsPrefix": "myAKSClust-myResourceGroup-12ab34",
  "enableRbac": false,
  "fqdn": "myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io",
  "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "kubernetesVersion": "1.34.10",
  "location": "westus2",
  "name": "myAKSCluster",
  "type": "Microsoft.ContainerService/ManagedClusters"
  ...
}

Azure PowerShellを使用してクラスターを手動でアップグレードする

Set-AzAksCluster コマンドレットを使用してクラスターをアップグレードします。 この例では、クラスターをバージョン 1.34.10 にアップグレードします。

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

注記

サポートされている LTS 以外のクラスターは、マイナー バージョンごとに順番にアップグレードする必要があります。 たとえば、 1.33.x から 1.35.x にアップグレードするには、最初に 1.34.x にアップグレードします。 アップグレードがバージョン スキュー要件と検証チェックを満たしている場合、LTS クラスターは、AKS によって提供される上位の LTS バージョンに移行するときに、マイナー バージョンをスキップできます。 詳細については、 Kubernetes バージョンのアップグレード規則に関するセクションを参照してください。

次の出力例は、アップグレードの結果を示しています。 KubernetesVersion値は、コマンドレット例で指定したバージョンと一致するようになりました。

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

Azure ポータルを使用してクラスターを手動でアップグレードする

  1. Azure portal で、ご使用の AKS クラスター リソースに移動します。

  2. サービス メニューの [設定] で、[ アップグレード] を選択します。

  3. Kubernetes のバージョンで、[バージョンのアップグレード] を選択します。

    Azure portal の [バージョンのアップグレード] オプションのスクリーンショット。

  4. [ Kubernetes バージョンのアップグレード ] ページで、 Kubernetes の [バージョン ] ドロップダウンを選択して、アップグレードに使用できる Kubernetes のバージョンを表示します。

    使用可能なアップグレード バージョンが表示された [バージョンのアップグレード ] 画面のスクリーンショット。

  5. アップグレードする Kubernetes のバージョンを選択し、[ 保存] を選択します。

アップグレード期間は、ノードの数、サージ設定、ワークロードの中断の制約、ドレイン タイムアウト、ノード のソーク期間などの要因によって異なります。 既定のドレイン タイムアウトはノードあたり 30 分で、5 分から 24 時間まで構成できます。 ノードのソーク期間は、ノードあたり 0 ~ 30 分を追加できます。 詳細については、「 ノード プールの急増と使用できない設定のカスタマイズ」を参照してください。

Azure CLIを使用してクラスターの自動アップグレードを構成する

Azure PowerShellを使用してクラスターの自動アップグレードを構成する

Azure ポータルを使用してクラスターの自動アップグレードを構成する

AKS 自動クラスターは stable チャネルを使用するため、チャネルを構成する必要はありません。 AKS Standard クラスターの場合は、バージョン ポリシーに基づいてチャネルを選択します。 stableチャネルとrapid チャネルは、Kubernetes のマイナー バージョンを進め、サポートされているバージョンウィンドウ内でクラスターを維持するのに役立ちます。 patch チャネルでは、現在のマイナー バージョンのパッチのみがインストールされ、クラスターが新しいマイナー バージョンに進むことはありません。

AKS Standard クラスターで、 az aks update コマンドを使用して自動アップグレード チャネルを設定します。 次の例では、 stable チャネルを使用します。

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

AKS Standard クラスターで、 Set-AzAksCluster コマンドレットを使用して自動アップグレード チャネルを設定します。 次の例では、 Stable チャネルを使用します。

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. Azure portal で、ご使用の AKS クラスター リソースに移動します。

  2. サービス メニューの [設定] で、[ アップグレード] を選択します。

  3. Kubernetes のバージョンで、[バージョンのアップグレード] を選択します。

    Azure portal の [バージョンのアップグレード] オプションのスクリーンショット。

  4. AKS Standard クラスターの場合、[ Kubernetes バージョンのアップグレード ] ページで、[ 自動アップグレード ] ドロップダウンを選択し、[ 安定した状態で有効] を選択して、[ 保存] を選択します。

    自動アップグレード チャネル オプションを示す [Kubernetes バージョンのアップグレード] ページのスクリーンショット。

詳細については、「Azure Kubernetes Service (AKS) クラスターの自動アップグレード」をご覧ください。

ノード イメージのアップグレード

AKS では、新しいノード イメージが定期的に提供されます。 Linux のノード イメージは毎週更新され、Windows のノード イメージは毎月更新されます。 最新の AKS 機能とセキュリティ更新プログラムを使用するために、ノード イメージを頻繁にアップグレードすることをお勧めします。 詳細については、「Azure Kubernetes Service (AKS) でのノード イメージのアップグレード」を参照してください。 ノード イメージの自動アップグレードを構成するには、「Azure Kubernetes Service (AKS) クラスター ノードのオペレーティング システム イメージの自動アップグレード」を参照してください。

アップグレード イベントを表示する

注記

クラスターをアップグレードすると、ノードで次の Kubernetes イベントが発生する可能性があります。

  • サージ: サージ ノードを作成します。
  • ドレイン: ノードからポッドを削除します。 AKS では、ノードを既定で 30 分ドレインできます。 ドレイン タイムアウトは、5 分から 24 時間まで構成できます。
  • 更新: ノードの更新は成功または失敗しています。
  • 削除: サージ ノードを削除します。

kubectl get コマンドをフィールド セレクターと共に使用して、既定の名前空間の AKS アップグレード イベントを表示します。

kubectl get events --field-selector source=upgrader

次の出力例は、アップグレード中に一覧表示された上記のイベントの一部を示しています。

LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
...
5m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
5m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Deleting node aks-nodepool1-12345678-vmss000000 from API server
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully reimaged node: aks-nodepool1-12345678-vmss000000
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully upgraded node: aks-nodepool1-12345678-vmss000000
4m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
...

Azure CLIを使用してアップグレードを検証する

az aks show コマンドを使用して、アップグレードが成功したことを確認します。

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

次の出力例は、AKS クラスターがターゲット Kubernetes バージョンを実行していることを示しています。

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Azure PowerShellを使用してアップグレードを検証する

Get-AzAksCluster コマンドレットを使用して、アップグレードが成功したことを確認します。

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

次の出力例は、AKS クラスターがターゲット Kubernetes バージョンを実行していることを示しています。

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Azure ポータルを使用してアップグレードを検証する

  1. Azure portal で、ご使用の AKS クラスター リソースに移動します。
  2. [ 概要 ] ページの [ 要点] で、 Kubernetes のバージョン を確認して、アップグレードが成功したことを確認します。

Azure CLIを使用してクラスターを削除する

Azure PowerShellを使用してクラスターを削除する

Azure ポータルを使用してクラスターを削除する

このチュートリアルはシリーズの最後の部分なので、Azure の料金が発生しないように AKS クラスターを削除することをお勧めします。

az group delete コマンドを使用して、リソース グループ、コンテナー サービス、およびすべての関連リソースを削除します。

az group delete --name myResourceGroup --yes --no-wait

Remove-AzResourceGroup コマンドレットを使用して、リソース グループ、コンテナー サービス、およびすべての関連リソースを削除します。

Remove-AzResourceGroup -Name myResourceGroup
  1. Azure portal で、ご使用の AKS クラスター リソースに移動します。
  2. [概要] ページで [削除] を選択します。
  3. [クラスターの削除の確認] ページで、[削除] を選択します。

注記

クラスターを削除しても、AKS クラスターで使用される Azure Active Directory サービス プリンシパルは削除されません。 サービス プリンシパルを削除する手順については、AKS のサービス プリンシパルに関する考慮事項と削除に関するページを参照してください。 マネージド ID を使った場合、その ID はプラットフォームによって管理されており、ユーザーがシークレットをプロビジョニングしたりローテーションしたりする必要はありません。

次のステップ

このチュートリアルでは、AKS クラスター内の Kubernetes をアップグレードしました。 以下の方法を学習しました。

  • Kubernetes の現在のバージョンと使用可能なバージョンを識別します。
  • Kubernetes ノードをアップグレードします。
  • 正常なアップグレードを検証します。

AKS の詳細については、AKS の概要に関するページを参照してください。 AKS で完全なソリューションを作成する方法のガイダンスについては、AKS ソリューションのガイダンスに関する記事をご覧ください。