Azure Kubernetes Service (AKS) ノード イメージをアップグレードする

Azure Kubernetes Service (AKS)は定期的に新しいノード イメージを提供するため、最新の AKS 機能を使用するようにノード イメージを頻繁にアップグレードします。 Linux ノード イメージは毎週更新され、Windowsノード イメージは毎月更新されます。 AKS リリース ノートには、イメージアップグレードのお知らせが含まれています。 これらの更新プログラムがすべてのリージョンに展開されるまでに最大 2 週間かかる場合があります。 ロールアウトの状態については、 リリース トラッカー を参照してください。 また、ノード イメージのアップグレードを自動的に実行し、計画メンテナンスを使用してスケジュールを設定することもできます。 詳細については、「 ノード OS イメージを自動的にアップグレードする」を参照してください。

AKS では 、ノード OS の自動アップグレード チャネルが推奨されています。これは、Kubernetes のバージョンを変更せずに、メンテナンス期間中にノード イメージを自動的にアップグレードしたり、セキュリティ パッチを適用したりします。 ノード イメージを手動でアップグレードする場合は、この記事の手順に従います。 この記事では、AKS クラスター ノード イメージをアップグレードする方法と、Kubernetes バージョンをアップグレードせずにノード プール イメージを更新する方法について説明します。 お使いのクラスターの Kubernetes バージョンのアップグレードの詳細については、「AKS クラスターのアップグレード」をご覧ください。

重要

2025 年 11 月 30 日から、Azure Kubernetes Service (AKS) は、Azure Linux 2.0 のセキュリティ更新プログラムをサポートまたは提供しなくなりました。 Azure Linux 2.0 ノード イメージは、 202512.06.0 リリースでフリーズします。 2026 年 3 月 31 日以降、ノード イメージは削除され、ノード プールをスケーリングできなくなります。 サポートされている Azure Linux バージョンに移行するには、ノード プールをサポートされている Kubernetes バージョンにアップグレードするか、osSku AzureLinux3 に移行します。 詳細については、 廃止に関する GitHub の問題Azure 更新プログラムの提供終了に関するお知らせを参照してください。 お知らせや更新情報を常に把握するには、AKS リリース ノートに従ってください。

ノード自動プロビジョニング (NAP) を使用するクラスターでは、新しいイメージが使用可能になると、ノード イメージが自動的に更新されます。 NAP が新しいイメージを取得するタイミングを制御するようにメンテナンス期間を構成できますが、ウィンドウによって既存のノードが中断されるタイミングが必ずしも決まるわけではありません。 NAP のドリフト ロジック、Karpenter ノード中断予算、ポッド中断予算は、中断が発生する方法とタイミングを制御します。 詳細については、「 NAP のノード イメージの更新」を参照してください。

ノード イメージ バージョン (AKSUbuntu-2404 から AKSUbuntu-2204AKSUbuntu-2404-202601.27.0 から AKSUbuntu-2404-202601.13.0 など) をダウングレードすることはできません。

前提条件

  • 既存の AKS クラスターとノード プール。
  • Azure CLIがインストールされ、Azure アカウントにサインインします。
  • クラスターの資格情報を取得し、AKS クラスターとノード プールの読み取りと更新を行うアクセス許可。
  • Bash シェル。 この記事のコマンドでは、Bash 環境変数の構文を使用します。

次のコマンドで使用するリソース グループ、クラスター、ノード プール名の環境変数を設定します。

export AKS_RESOURCE_GROUP="<resource-group-name>"
export AKS_CLUSTER="<cluster-name>"
export AKS_NODEPOOL="<node-pool-name>"

AKS クラスターに接続する

  1. az aks get-credentials コマンドを使用して AKS クラスターに接続します。

    az aks get-credentials \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER
    

使用可能なノード イメージのアップグレードを確認する

  1. az aks nodepool get-upgrades コマンドを使用して、使用可能なノード イメージのアップグレードを確認します。

    az aks nodepool get-upgrades \
        --nodepool-name $AKS_NODEPOOL \
        --cluster-name $AKS_CLUSTER \
        --resource-group $AKS_RESOURCE_GROUP
    
  2. 出力で、latestNodeImageVersion の値を見つけてメモします。 この値は、ノード プールで使用できる最新のノード イメージ バージョンです。

  3. az aks nodepool show コマンドを使用して、現在のノード イメージ バージョンを確認して最新のバージョンと比較します。

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion
    
  4. nodeImageVersion の値が latestNodeImageVersion と異なる場合は、ノード イメージをアップグレードできます。

すべてのノード プールのすべてのノード イメージをアップグレードする

  1. az aks upgrade フラグを指定した --node-image-only コマンドを使用して、クラスター内のすべてのノード プール内のすべてのノード イメージをアップグレードします。

    az aks upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --node-image-only \
        --yes
    
  2. kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。

    このコマンドは、お使いのシェルによって若干異なる場合があります。 Windowsおよび PowerShell 環境の詳細については、Kubernetes JSONPath のドキュメントを参照してください。 このコマンドは、ノードの現在のイメージ バージョンを識別する kubernetes.azure.com/node-image-version ラベルの値と共に、各ノードの名前を一覧表示します。

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. アップグレードが完了したら、az aks show コマンドを使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

    az aks show \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER  \
        --query "agentPoolProfiles[].{Name:name, NodeImageVersion:nodeImageVersion}"
    

特定のノード プールのアップグレード

  1. az aks nodepool upgrade フラグを指定した --node-image-only コマンドを使用して、Kubernetes クラスターをアップグレードせずにノード プールの OS イメージを更新します。

    az aks nodepool upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --node-image-only
    
  2. kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。

    このコマンドは、お使いのシェルによって若干異なる場合があります。 Windowsおよび PowerShell 環境の詳細については、Kubernetes JSONPath のドキュメントを参照してください。 このコマンドは、ノードの現在のイメージ バージョンを識別する kubernetes.azure.com/node-image-version ラベルの値と共に、各ノードの名前を一覧表示します。

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. アップグレードが完了したら、az aks nodepool show コマンドを使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion
    

ノード サージを使用したノード イメージのアップグレード

この手順では、クラスター内のすべてのノード プールではなく、特定のノード プールのノード イメージをアップグレードします。 既定では、AKS は 1 つの追加ノードを使ってアップグレードを構成します。 ノード イメージのアップグレード プロセスを高速化するには、カスタマイズ可能なノード サージ値を使用してノード イメージをアップグレードします。

  1. --max-surge フラグを指定した az aks nodepool update コマンドを使用して、ノード プールのサージ ノードの数を構成します。 この設定は、以降のアップグレードでも保持されます。

    さまざまな --max-surge 設定のトレードオフの詳細については、「カスタマイズノードサージアップグレード」を参照してください。

    az aks nodepool update \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --max-surge 33%
    
  2. --node-image-only フラグを指定して az aks nodepool upgrade コマンドを使用してノード イメージをアップグレードします。

    az aks nodepool upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --node-image-only
    
  3. kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。 このコマンドは、ノードの現在のイメージ バージョンを識別する kubernetes.azure.com/node-image-version ラベルの値と共に、各ノードの名前を一覧表示します。

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  4. az aks nodepool show コマンドを使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion