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

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

この記事では、AKS クラスター ノード イメージをアップグレードする方法と、Kubernetes バージョンをアップグレードせずにノード プール イメージを更新する方法について説明します。 お使いのクラスターの Kubernetes バージョンのアップグレードの詳細については、「AKS クラスターのアップグレード」をご覧ください。

Note

AKS クラスターでは、ノードに仮想マシン スケール セットを使用する必要があります。

ノード イメージのバージョン (例えば AKSUbuntu-2204 を AKSUbuntu-1804 に、または AKSUbuntu-2204-202308.01.0 を AKSUbuntu-2204-202307.27.0 に) ダウングレードしたりすることはできません。

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

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

az aks nodepool get-upgrades \
    --nodepool-name mynodepool \
    --cluster-name myAKSCluster \
    --resource-group myResourceGroup

出力では、次の例のように latestNodeImageVersion が示されます。

{
  "id": "/subscriptions/XXXX-XXX-XXX-XXX-XXXXX/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/mynodepool/upgradeProfiles/default",
  "kubernetesVersion": "1.17.11",
  "latestNodeImageVersion": "AKSUbuntu-1604-2020.10.28",
  "name": "default",
  "osType": "Linux",
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.ContainerService/managedClusters/agentPools/upgradeProfiles",
  "upgrades": null
}

出力例は、latestNodeImageVersion として AKSUbuntu-1604-2020.10.28 を示しています。

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

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --query nodeImageVersion

出力は次の例のようになります。

"AKSUbuntu-1604-2020.10.08"

この例では、バージョン AKSUbuntu-1604-2020.10.08 からバージョン AKSUbuntu-1604-2020.10.28 への使用可能なノード イメージ バージョンのアップグレードがあります。

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

--node-image-only フラグを指定した az aks upgrade コマンドを使用して、ノード イメージをアップグレードします。

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-image-only

kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。

注意

このコマンドは、お使いのシェルによって若干異なる場合があります。 Windows および PowerShell 環境の詳細については、Kubernetes JSONPath のドキュメントを参照してください。

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

アップグレードが完了したら、az aks show コマンドを使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster

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

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

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-image-only

kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。

注意

このコマンドは、お使いのシェルによって若干異なる場合があります。 Windows および PowerShell 環境の詳細については、Kubernetes JSONPath のドキュメントを参照してください。

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

アップグレードが完了したら、az aks nodepool show コマンドを使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

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

ノード イメージのアップグレード プロセスを高速化するために、カスタマイズ可能なノード サージ値を使用して、ノード イメージをアップグレードすることができます。 既定では、AKS は 1 つの追加ノードを使ってアップグレードを構成します。

アップグレードの速度を上げる場合は、--max-surge フラグを指定した az aks nodepool update コマンドを使用して、アップグレードに使用するノードの数を構成します。 さまざまな --max-surge 設定のトレードオフの詳細については、「--max-surge」を参照してください。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --max-surge 33% \
    --no-wait

kubectl get nodes コマンドを使用して、ノード イメージの状態を確認できます。

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

az aks nodepool show を使用して、更新されたノード プールの詳細を取得します。 現在のノード イメージが nodeImageVersion プロパティに表示されます。

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

次のステップ