チュートリアル - Azure Kubernetes Service (AKS) クラスターのアップグレード
アプリケーションとクラスターのライフサイクルの一環として、使用可能な最新バージョンの Kubernetes にアップグレードすることができます。 Azure CLI、Azure PowerShell、または Azure portal を使って、Azure Kubernetes Service (AKS) クラスターをアップグレードできます。
このチュートリアルでは、7 部構成の 7 番目で 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 のインストールに関するページをご覧ください。
使用可能なクラスターのバージョンを取得する
アップグレードの前にご使用のクラスターに利用できる Kubernetes リリースを確認するには、
az aks get-upgrades
コマンドを使用します。az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
次の出力例では、現在のバージョンが 1.28.9 として示され、使用できるバージョンが
upgrades
の下に一覧表示されます。{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.28.9", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.29.4" }, { "isPreview": null, "kubernetesVersion": "1.29.2" } ] }, ... }
AKS クラスターのアップグレード
実行中のアプリケーションが中断する可能性を最小限に抑えるため、AKS ノードは慎重に切断およびドレインされます。 このプロセスの間に、AKS は次の手順を実行します。
- 指定された Kubernetes バージョンを実行するクラスターに 1 つの新しいバッファー ノード (または最大サージに構成されている数のノード) が追加されます。
- 実行中のアプリケーションの中断を最小限に抑えるために、古いノードを 1 つ切断およびドレインします。 最大サージを使用している場合は、指定されたバッファー ノードの数と同数のノードが同時に切断およびドレインされます。
- 古いノードが完全にドレインされると、新しいバージョンを受け取るための再イメージ化が実行され、次にアップグレードされるノード用のバッファー ノードになります。
- このプロセスは、クラスター内のすべてのノードがアップグレードされるまで繰り返されます。
- プロセスの最後に、最後にバッファー ノードが削除され、既存のエージェント ノードの数とゾーン バランスが維持されます。
Note
パッチが指定されていない場合、クラスターは、指定されたマイナー バージョンの最新 GA パッチに自動的にアップグレードされます。 たとえば、--kubernetes-version
を 1.28
に設定すると、クラスターは 1.28.9
にアップグレードされます。
詳細については、AKS でサポートされている Kubernetes マイナー バージョンのアップグレードに関する記事を参照してください。
クラスターを手動でアップグレードするか、クラスターの自動アップグレードを構成できます。 クラスターが常に最新バージョンの Kubernetes を実行するように、クラスターの自動アップグレードを構成することをお勧めします。
クラスターを手動でアップグレードする
az aks upgrade
コマンドを使用してクラスターをアップグレードします。az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version KUBERNETES_VERSION
アップグレード操作を確認し、コントロール プレーン "および" すべてのノード プールを選択したバージョンの Kubernetes にアップグレードするかどうかを確認するプロンプトが表示されます。
Are you sure you want to perform this operation? (y/N): y Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
Note
一度に 1 つのマイナー バージョンのみをアップグレードできます。 たとえば、1.14.x から 1.15.x にアップグレードすることはできますが、1.14.x から 1.16.x に直接アップグレードすることはできません。 1.14.x から 1.16.x にアップグレードするには、最初に 1.14.x から 1.15.x にアップグレードした後、1.15.x から 1.16.x にもう一度アップグレードする必要があります。
次の出力例には、1.29.2 にアップグレードした結果が示されています。
kubernetesVersion
が 1.29.2 として表示されていることがわかります。{ ... "agentPoolProfiles": [ { ... "count": 3, "currentOrchestratorVersion": "1.29.2", "maxPods": 110, "name": "nodepool1", "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202405.27.0", "orchestratorVersion": "1.29.2", "osType": "Linux", "upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "10%", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": null }, "vmSize": "Standard_DS2_v2", ... } ], ... "currentKubernetesVersion": "1.29.2", "dnsPrefix": "myAKSClust-myResourceGroup-19da35", "enableRbac": false, "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io", "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster", "kubernetesVersion": "1.29.2", "location": "eastus", "name": "myAKSCluster", "type": "Microsoft.ContainerService/ManagedClusters" ... }
クラスターの自動アップグレードを構成する
patch
に設定されている--auto-upgrade-channel
パラメータを含むaz aks update
コマンドを使用して、クラスターにアップグレード チャネルを設定します。az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
詳細については、「Azure Kubernetes Service (AKS) クラスターの自動アップグレード」をご覧ください。
AKS ノード イメージをアップグレードする
AKS では、新しいノード イメージが定期的に提供されます。 Linux のノード イメージは毎週更新され、Windows のノード イメージは毎月更新されます。 最新の AKS 機能とセキュリティ更新プログラムを使用するために、ノード イメージを頻繁にアップグレードすることをお勧めします。 詳細については、「Azure Kubernetes Service (AKS) でのノード イメージのアップグレード」を参照してください。 ノード イメージの自動アップグレードを構成するには、「Azure Kubernetes Service (AKS) クラスター ノードのオペレーティング システム イメージの自動アップグレード」を参照してください。
アップグレード イベントの表示
Note
クラスターをアップグレードすると、ノードで次の Kubernetes イベントが発生する可能性があります。
- サージ: サージ ノードを作成します。
- ドレイン: ノードからポッドを削除します。 各ポッドには、削除完了までに 5 分間のタイムアウトが設定されます。
- 更新: ノードの更新は成功または失敗しています。
- 削除: サージ ノードを削除します。
kubectl get events
コマンドを使用して、既定の名前空間のアップグレード イベントを表示します。kubectl get events --field-selector source=upgrader
次の出力例では、上記のイベントの一部がアップグレード中に一覧表示されています。
LAST SEEN TYPE REASON OBJECT MESSAGE ... 5m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 5m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Deleting node aks-nodepool1-96663640-vmss000000 from API server 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully reimaged node: aks-nodepool1-96663640-vmss000000 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully upgraded node: aks-nodepool1-96663640-vmss000000 4m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 ...
アップグレードを検証する
az aks show
コマンドを使用して、アップグレードが成功したことを確認します。az aks show --resource-group myResourceGroup --name myAKSCluster --output table
次の出力例は、AKS クラスターで KubernetesVersion 1.27.3 が実行されていることを示しています。
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------------ ------------------- ---------------------------------------------------------------- myAKSCluster eastus myResourceGroup 1.29.2 1.29.2 Succeeded myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
クラスターを削除する
このチュートリアルはシリーズの最後の部分なので、Azure の料金が発生しないように AKS クラスターを削除することをお勧めします。
az group delete
コマンドを使用して、リソース グループ、コンテナー サービス、すべての関連リソースを削除します。az group delete --name myResourceGroup --yes --no-wait
Note
クラスターを削除しても、AKS クラスターで使用される Azure Active Directory サービス プリンシパルは削除されません。 サービス プリンシパルを削除する手順については、AKS のサービス プリンシパルに関する考慮事項と削除に関するページを参照してください。 マネージド ID を使った場合、その ID はプラットフォームによって管理されており、ユーザーがシークレットをプロビジョニングしたりローテーションしたりする必要はありません。
次のステップ
このチュートリアルでは、AKS クラスター内の Kubernetes をアップグレードしました。 以下の方法を学習しました。
- Kubernetes の現在のバージョンと使用可能なバージョンを識別します。
- Kubernetes ノードをアップグレードします。
- 正常なアップグレードを検証します。
AKS の詳細については、AKS の概要に関するページを参照してください。 AKS で完全なソリューションを作成する方法のガイダンスについては、AKS ソリューションのガイダンスに関する記事をご覧ください。
Azure Kubernetes Service