Azure Kubernetes Service (AKS)のノード プール バージョンロールバック機能を使用すると、Kubernetes のアップグレード後に予期しない動作から回復できます。 問題が発生した場合は、以前の Kubernetes バージョンとノード イメージの組み合わせにノード プールをロールバックして、ビジネス継続性を確保し、ダウンタイムを最小限に抑えることができます。 この記事では、ロールバック機能を使用するタイミングと方法、その機能と制限事項、ロールバック後のアクションのベスト プラクティスについて説明します。
[前提条件]
- バージョン 2.88.0 以降をAzure CLIします。
az --versionコマンドを使用して、バージョンを検索します。 インストールまたはアップグレードする必要がある場合は、「Install Azure CLIを参照してください。aks-preview拡張機能は必要ありません。 - API バージョン
2026-04-01以降。
ノード プール バージョンのロールバックでサポートされる機能
ノード プール バージョンのロールバック機能では、次の機能がサポートされています。
| 特徴 | Description |
|---|---|
| バージョンを元に戻す | Kubernetes とノード イメージの両方のバージョンを以前の状態に復元します。 |
| 手動トリガー、自動実行 | ロールバックには手動による開始が必要ですが、トリガーされると、システムはそれ以上の介入なしにロールバック プロセス全体を自動的に処理します。 |
| ノード プールの互換性 | 仮想マシン (VM) プールと Virtual Machine Scale Sets (VMSS) ベースのノード プールの両方を含むすべての種類のノード プールで動作します。 |
| オペレーティング システムのサポート | Ubuntu、Azure Linux、Windows プールを含むすべてのオペレーティング システム (OS) ストック 保持ユニット (SKU) と互換性があります。 |
| 簡略化されたプロセス | スナップショット管理は必要ありません。 |
ノード プールのロールバックの制限事項と考慮事項
ノード プールのロールバック機能を使用する場合は、次の制限事項に注意してください。
- バージョンの変更のみに限定されます。 その他のノード プールの変更は元に戻されません。
- ロールバック中に同時操作は許可されません。
- ロールバックする前に、Kubernetes 自動アップグレード チャネルを無効にする必要があります。 ノード OS アップグレード チャネルが有効になっている場合、Kubernetes バージョンのロールバックは続行できますが、前のノード イメージが復元されない可能性があります。 Kubernetes バージョンとノード イメージの両方をロールバックする必要がある場合は、ノード OS アップグレード チャネルを無効にします。
- アップグレード完了後 7 日間のみ使用できます。
- 複数のバージョンに戻るために連続ロールバックを実行することはできません。
- ロールバックでは、OS SKU の変更を元に戻すことはできません。 ノード プールの OS SKU (たとえば、Ubuntu から Azure Linux) を変更した場合、ロールバックは、別の OS SKU に属し、拒否される以前のノード イメージ バージョンの復元を試みます。 OS SKU の変更を元に戻すには、代わりに
az aks nodepool update --os-skuコマンドを使用します。
ノード プールのロールバックを使用する場合は、次の考慮事項に注意してください。
| セキュリティへの影響 | 運用上の考慮事項 |
|---|---|
| * 脆弱性の公開: ロールバックすると、新しいバージョンからセキュリティ パッチと更新プログラムが削除されます。 そのため、問題の解決中にロールバックを一時的にのみ使用してから、できるだけ早く再アップグレードすることをお勧めします。 |
*
サービスの中断: ロールバック プロセスによって、一時的なワークロードの中断が発生する可能性があります。 * リソースの可用性: ロールバック操作に十分な容量を確保します。 * テスト要件: アップグレードを再試行する前に、基になる問題を修正することを計画します。 |
ロールバックを使用する理由
ロールバックは、運用環境に重要な復旧メカニズムを提供します。
- ビジネス継続性: アップグレードによって予期しない問題が発生した場合のダウンタイムを最小限に抑える
- リスク軽減: 複雑な復旧手順なしで既知の適切な構成をすばやく復元する
- 簡単な復旧: 手動による介入やバックアップからのクラスターの再構築を回避する
ノード プールのロールバックを使用するタイミング
次のシナリオでは、ロールバックを復旧オプションとして検討してください。
- アップグレードエラーが発生する: インフラストラクチャの問題、リソースの制約、または互換性の問題により、アップグレードが正常に実行されません。
- アプリケーションの中断: ワークロードでは、新しい Kubernetes バージョンで重大なエラーまたはデータの破損が発生します。
- パフォーマンスが低下する: 新しいバージョンでは、許容できない待機時間、スループットの問題、またはリソースの消費が発生します。
- テストのギャップが生じる: 運用前のテスト中にキャッチされなかった運用環境で問題が発生します。
ノード プールのロールバック ワークフロー
次の図は、ノード プールのロールバック ワークフローを示しています。
ロールバック プロセスでは、ノード プール内のすべてのノードが以前のバージョンの状態に復元されます。 ワークフローの主な側面は次のとおりです。
- すべてまたは何もしない方法: ロールバックが正常に完了するには、すべてのノードが正常に以前のバージョンに戻す必要があります。 いずれかのノードがロールバックに失敗した場合、アップグレード操作と同様に、クラスターの状態を明確に伝えるために操作全体が失敗します。
- Progress の追跡: Azureアクティビティ ログを使用してロールバックの状態を監視し、操作履歴をリアルタイムで更新する操作状態 API を使用します。
ノード プールのバージョンをロールバックする
Important
ノード プールのバージョンをロールバックするときは、次の情報に注意してください。
- 古いバージョンを長期的に使用すると、セキュリティ リスクが高まり、最終的にはバージョン スキューの制限によるアップグレードが妨げる可能性があります。 ロールバックは、永続的なソリューションではなく、一時的な復旧メカニズムとして扱います。
- ロールバックはノード プール内のノードを置き換え、ワークロードを一時的に中断する可能性があります。 開始する前に、ワークロードに十分な容量があり、ポッド中断予算によって必要なノードの中断が許可されていることを確認します。
- REST API を使用する場合は、 エージェント プール - Get Upgrade Profile API を最初に呼び出して、最近使用したバージョンを取得できます。 この情報を使用して、ロールバック要求のターゲット バージョンを指定します。
Azure CLIロールバック コマンドは、最後に記録されたバージョン (N-1 とも呼ばれます) を自動的に選択します。 コマンドを使用して任意の Kubernetes またはノード イメージバージョンを選択することはできません。また、連続するロールバックを実行して複数の以前のバージョンを移動することはできません。
クラスターの自動アップグレード構成を確認します。
az aks show \ --name myAKSCluster \ --resource-group myResourceGroup \ --query autoUpgradeProfileロールバックする前に、Kubernetes 自動アップグレード チャネルを無効にします。 前のノード イメージを復元する必要がある場合は、ノード OS アップグレード チャネルも無効にします。
az aks nodepool get-rollback-versionsコマンドを使用して、使用可能なロールバック ターゲットを確認します。az aks nodepool get-rollback-versions \ --name myNodePool \ --resource-group myResourceGroup \ --cluster-name myAKSClusterコマンドからバージョンが返されない場合、ノード プールには、対象となるロールバック ターゲットがありません。 ノード プールは過去 7 日以内にアップグレードされている必要があり、記録された Kubernetes バージョンは引き続き AKS でサポートされている必要があります。
az aks nodepool rollbackコマンドを使用してノード プールをロールバックします。az aks nodepool rollback \ --name myNodePool \ --resource-group myResourceGroup \ --cluster-name myAKSClusterロールバックの完了後に、Kubernetes のバージョン、ノード イメージのバージョン、プロビジョニングの状態を確認します。
az aks nodepool show \ --name myNodePool \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --query '{provisioningState:provisioningState,kubernetesVersion:currentOrchestratorVersion,nodeImageVersion:nodeImageVersion}'ロールバックが成功すると、
provisioningStateのSucceededが返され、記録された Kubernetes とノード イメージのバージョンが表示されます。
ロールバック前にクラスターの自動アップグレード設定を変更した場合は、アップグレードの問題を調査して解決した後、目的の設定を復元します。
ノード プールのロールバック状態を監視する
次のメソッドを使用して、ノード プールのロールバック操作の状態を監視し、正常なロールバックを検証できます。
- クラスターの アクティビティ ログ を検索します。
- クラスターで特定 のアップグレード関連イベント を検索します。
- Azure Event Grid を使用して
AKS イベントをサブスクライブします。 - 自動アップグレード チャネルをサブスクライブする場合は、アップグレード通知に AKS Communication Manager を使用できます。
ノード プールのロールバックのトラブルシューティング
次の表では、ロールバックに関する一般的な問題とその解決方法について説明します。
| 問題点 | 原因と解決策 |
|---|---|
| ロールバック バージョンは返されません。 | ノード プールにアップグレードが記録されていないか、7 日間のロールバック ウィンドウが期限切れになったか、以前の Kubernetes バージョンがサポートされなくなった可能性があります。 ノード プールのアップグレード履歴と AKS Kubernetes バージョンのサポート ポリシーを確認します。 |
| AKS は、別の操作が進行中であることを報告します。 | ロールバックを再試行する前に、現在のクラスターまたはノード プールの操作が完了するまで待ちます。 操作を停止する必要がある場合は、 az aks nodepool operation-abort コマンドを使用します。 |
| Kubernetes バージョンはロールバックしますが、ノード イメージはロールバックしません。 | ノード OS アップグレード チャネルが有効になっている可能性があります。 前のノード イメージを復元する必要がある場合は、チャネルを無効にします。 |
| AKS は、以前のノード イメージ バージョンを拒否します。 | ノード プールの OS SKU は、記録されたバージョン以降に変更されている可能性があります。 ロールバックでは、OS SKU の変更を元に戻すことはできません。 代わりに、 az aks nodepool update --os-sku を使用して OS SKU を元に戻します。 |
| AKS は以前の Kubernetes バージョンを拒否します。 | 記録されたバージョンはサポートされなくなった可能性があります。 AKS Kubernetes バージョンのサポート ポリシーを確認します。 |
ロールバック後のベスト プラクティス
ノード プールが正常にロールバックされたら、次のベスト プラクティスを使用して安定性とセキュリティを確保します。
- 根本原因を調査する: 別のアップグレードを試みる前に、アップグレードが失敗した理由を特定します。 アプリケーション ログ、リソース メトリック、互換性の要件を確認します。
- 非運用環境でのテスト: 運用環境を再度アップグレードする前に、開発環境またはステージング環境で新しいバージョンを検証し、問題を再現して解決します。
-
再アップグレードを計画する: ロールバックされたバージョンを無期限に維持しないでください。 セキュリティ パッチとサポートを維持するために、再アップグレードをスケジュールします。
- 重大なセキュリティの問題の場合: 修正が検証された後、数日以内に再アップグレードします。
- アプリケーションの互換性の問題の場合: コードの調整後数週間以内に再アップグレードします。
- 推奨される最大期間: セキュリティの脆弱性の蓄積を回避するために 30 日間。
よく寄せられる質問 (FAQ)
ノード プールのロールバック中に他の操作を実行できますか?
いいえ。ロールバックは、他の操作を開始する前に完了する必要があります。 異なる操作を実行するには、最初にロールバックを中止します。
ノード プールのロールバックでは、Kubernetes のバージョンとノード イメージの両方が元に戻されますか?
はい。ロールバックは、最近使用した Kubernetes バージョンとそれに対応するノード イメージに戻ります。 両方のコンポーネントが変更された場合、システムはそのバージョンの最後の互換性のあるノード イメージを使用して以前の Kubernetes バージョンを復元します。
ノード プールのバージョンを変更せずにノード イメージのみをロールバックできますか?
はい。過去 7 日以内にノード イメージの更新のみを実行した場合 (ノード プールのバージョンをアップグレードせずに)、ロールバックによって以前の仮想ハード ディスク (VHD) イメージが復元され、同じ Kubernetes バージョンが維持されます。
サポート対象外のバージョンにロールバックできますか?
いいえ。AKS でサポートされなくなった Kubernetes バージョンにロールバックすることはできません。 たとえば、ノード プールがバージョン 1.27.9 (現在はサポート対象外) で、1.28.5 にアップグレードした場合、1.27.9 はサポートされているバージョン一覧に含まれなくなったため、ロールバックできません。 バージョンの可用性を確認するには、 AKS Kubernetes バージョンサポート ポリシー を常に確認してください。
ノード プールのロールバックを実行する前に、自動アップグレードを無効にする必要がありますか?
はい。ロールバックを実行する前に、Kubernetes 自動アップグレード チャネルを無効にする必要があります。 ノード OS アップグレード チャネルのみを有効にした場合、Kubernetes バージョンのロールバックは続行できますが、前のノード イメージが復元されない可能性があります。 Kubernetes バージョンとノード イメージの両方をロールバックする必要がある場合は、ノード OS アップグレード チャネルを無効にします。
クラスターが Azure Kubernetes Fleet Manager 自動アップグレード プロファイルの更新グループに含まれている場合は、ロールバックを実行する前に、更新グループからクラスターを削除する必要もあります。 そうしないと、ロールバックが完了した後に、自動アップグレード プロセスによってノード プールが自動的にアップグレードされる可能性があります。
OS SKU を変更した後 (たとえば、Ubuntu から Azure Linux に) ロールバックできますか?
No. ノード プールのロールバックはバージョンの変更に限定され、OS SKU の変更は元に戻しません。 ある OS SKU から別の OS SKU (Ubuntu から Azure Linux など) に移行した後、以前のノード イメージのバージョンは古い OS SKU に属し、現在の構成と互換性がありません。 ロールバック操作では、次のようなエラーで以前のイメージ バージョンが拒否されます。
NodeImageVersion 'AKSUbuntu-2204gen2containerd-202602.13.5' is not accepted. NodeImageVersion can only be current version 'AKSAzureLinux-V3gen2-202602.13.5' or 'latest'
OS SKU を元に戻すには、az aks nodepool update パラメーターで --os-sku コマンドを使用します。 詳細については、「 OS バージョンのロールバック」を参照してください。
関連するコンテンツ
AKS でのノード プールのアップグレードの詳細については、次の記事を参照してください。