Azure Kubernetes Service (AKS)でのブルーグリーン ノード プールのアップグレード (プレビュー)

青緑色のアップグレードを使用すると、既存のノード プールに更新された構成 (Kubernetes とノード イメージ バージョン) を持つ新しい 緑 のノードを追加することで、AKS ノード プールをアップグレードできますが、元の 青い ノードは引き続き実行されます。 この方法では、新しいバージョンにコミットする前に新しい構成をテストして検証し、問題が発生した場合にすばやくロールバックすることができます。

この記事では、ブルーグリーン アップグレードを使用するタイミング、プロセスのしくみ、構成オプション、およびこのアップグレード戦略を使用するための考慮事項について説明します。

青緑色のアップグレードを使用する場合

注

青緑色のアップグレードでは、アップグレード プロセス中にノードの容量が 2 倍必要になり、コストとリソース要件が増加する可能性があることに注意してください。

次の場合は、青緑色のアップグレードを検討してください。

  • ワークロードの詳細なテストと検証をバッチごとに実施する必要があります。
  • 運用トラフィックを切り替える前に、新しいノード構成を検証する必要があります。
  • ノードを再プロビジョニングせずに、即時ロールバック機能が必要です。
  • 中断を許容できない重要な運用ワークロードをアップグレードしています。
  • 新しい Kubernetes バージョンとのアプリケーションの互換性をテストする必要があります。

現在、ノード プールのアップグレードに手動の青緑色のデプロイ プロセスを使用していて、このワークフローを自動化する場合は、代わりに AKS ブルーグリーン ノード プールのアップグレードを使用することを検討してください。 青緑色の手動アップグレード プロセスの詳細については、「手動による 青緑ノード プールのアップグレード」を参照してください。

標準のローリング アップグレードを使用する場合

次のシナリオでは、標準のローリング アップグレードの方が適している場合があります。

  • ダウンタイム許容度を備えた開発環境またはテスト環境。
  • 一時的な二重化がコストをかけすぎるために禁止されているような、コストに敏感な展開。
  • 優れた中断処理を備えたシンプルなステートレス アプリケーション。
  • 使用可能なクォータまたは容量が制限されている環境。

[前提条件]

  • ノード プールの容量を 2 倍にするための十分なクォータ。
  • Azure CLI バージョン 2.64.0 以降が必要です。 az --version コマンドを使用してバージョンを検索します。 インストールまたはアップグレードする必要がある場合は、「Install Azure CLIを参照してください。
  • aks-preview Azure CLI 拡張機能インストールされ、最新バージョンに更新されます。
  • API バージョン 2025-08-02-preview 以降。
  • クラスター オートスケーラーが 構成されました (推奨されますが、必須ではありません)。

aks-preview Azure CLI 拡張機能をインストールする

Important

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。

aks-previewコマンドとaz extension add コマンドを使用して、az extension update拡張機能をインストールまたは更新します。

# Install the aks-preview extension
az extension add --name aks-preview

# Update the aks-preview extension
az extension update --name aks-preview

ブルーグリーン アップグレードでサポートされている機能

現在、青緑色のアップグレードでは、次の機能がサポートされています。

青緑色のアップグレードの制限事項と考慮事項

現在、青緑色のアップグレードでは、次の機能はサポートされていません。

青緑色のアップグレードを使用する場合は、次の点に注意してください。

リソース要件 複雑さの考慮事項 時間要因
* アップグレード プロセス中にノード容量が 2 倍必要となり、インフラストラクチャ コストが増加します。
* ノードの一時的な 2 倍に対応するには、Azure サブスクリプションに追加のコンピューティング クォータが必要です。
* ピーク使用期間中にリージョンの容量制限が発生する場合があります。
* 移行中にデータの一貫性を確保するために、ステートフル ワークロードを慎重に計画する必要があります。
* 移行期間中は、青と緑の両方のノードに対して追加の監視が必要です。
* インプレース アップグレードと比較して、全体的なアップグレード期間が長くなります。
* 検証期間は、最終移行の前に追加の時間を設けます。

青緑色のアップグレード ワークフロー

青緑色のアップグレード プロセスでは、ノード プールのバージョン間を安全に切り替える並列環境が作成されます。 検証後に新しい緑色のプールにアップグレードしてコミットするか、問題が発生した場合はアップグレードして元の青いプールにロールバックすることができます。

アップグレードとコミットのシナリオ

次の図は、アップグレードとコミットのワークフローを示しています。

アップグレードとコミットシナリオのワークフローを示す図。

アップグレードとコミットのプロセスは次のとおりです。

  1. Cordon blue ノード: 既存の blue ノードは、スケジュール不可としてマークされます。
  2. 緑のノードを追加する: 構成が更新された新しい緑のノードが既存のノード プールに追加されます。
  3. 並列操作: 青 と 緑 の両方のノードが同じノード プール内で同時に実行されます。
  4. 段階的な移行: ワークロードは 青い ノードから段階的にドレインされ、バッチで 緑色 のノードに再スケジュールされます。
  5. 緑色のノードを検証する: 移行中に新しいノードのワークロードを監視してテストします。
  6. 完全な切り替え: 最終的な検証期間が経過すると、 青い ノードが削除され、 緑の ノードがプライマリになります。

アップグレードとロールバックのシナリオ

次の図は、アップグレードとロールバックのワークフローを示しています。

アップグレードとロールバックシナリオのワークフローを示す図。

アップグレードとロールバックのプロセスは次のとおりです。

  1. Cordon blue ノード: 既存の blue ノードは、スケジュール不可としてマークされます。
  2. 緑のノードを追加する: 構成が更新された新しい緑のノードが既存のノード プールに追加されます。
  3. 並列操作: 青 と 緑 の両方のノードが同じノード プール内で同時に実行されます。
  4. 問題の検出: 緑の ノードでの検証中に問題を特定します。
  5. ロールバックの実行: 青い ノードを削除し、 緑の ノードをドレインし、ワークロードを 青色 のノードに移行します。
  6. 復元状態: 緑の ノードが削除され、ノード プールが元の構成に戻ります。

アップグレード戦略を選択する

AKS ノード プールを作成またはアップグレードするときに、使用するアップグレード戦略 (upgradeStrategy) を指定できます。 使用可能な戦略は次のとおりです。

戦略 Description
Rolling (既定値) ノードが 1 つずつ更新される標準のローリング アップグレード。
BlueGreen 元の青いノードを実行したまま、更新された構成を持つ新しい緑のノードを既存のノード プールに追加します。

進行中のアップグレード中、AKS では BlueGreen から Rollingへの切り替えがサポートされますが、 Rolling から BlueGreenへの切り替えはサポートされていません。

青緑色のアップグレード プロパティをカスタマイズする

次の青緑色のアップグレード プロパティ (NodePoolBlueGreenUpgradeSettings) をカスタマイズできます。

プロパティ Description 使用できる値 既定値
drainBatchSize アップグレード中に各バッチで排出するノードの数または割合。 割合は、アップグレードの開始時の青いノードの合計数から計算されます。 小数点以下のノードは切り上げられます。 整数 (たとえば、 5) またはパーセンテージ (たとえば、 50%)。 0 以外の値である必要があります。 10%
drainTimeoutInMinutes アップグレードに失敗する前に各ノードでポッドが正常に終了するのを待機する最大時間 (分)。 この待機時間中は、ポッド中断の予算を遵守します。 超過した場合、アップグレードは失敗します。 1から1440までの整数 (24 時間)。 30 分
batchSoakDurationInMinutes 観察と検証を可能にするために、ノードのバッチをドレインする間の時間 (分単位) を一時停止します。 0から1440までの整数 (24 時間)。 約 15 分
finalSoakDurationInMinutes 古いノードを削除する前にすべてのノードがドレインされた後の待機時間 (分単位)。 アップグレードにコミットする前の最後の検証期間を提供します。 ロールバック操作は、この最後のソーク期間中にのみ使用できます。 この期間が経過し、青いプールが削除されると、ロールバックできなくなります。 0から10080までの整数 (7 日間)。 約 60 分

既定の青緑色のアップグレード設定でノード プールを作成する

  • az aks nodepool add パラメーターを --upgrade-strategy に設定した bluegreen コマンドを使用して、既定の青緑色のアップグレード戦略と設定を使用してノード プールを作成します。 次の例では、リソース グループ myNodePool内の AKS クラスター myAKSClusterに myResourceGroup という名前の新しいノード プールを作成します。

    az aks nodepool add \
        --name myNodePool \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup \
        --upgrade-strategy bluegreen
    

青緑色のカスタム アップグレード設定を使用してノード プールを作成する

  • az aks nodepool add パラメーターを--upgrade-strategyに設定し、必要な青緑色のアップグレード設定を設定して、bluegreen コマンドを使用して、カスタムの青緑色のアップグレード設定を使用してノード プールを作成します。 次の例では、myNodePoolという名前の新しいノード プールをリソース グループ myAKSCluster内の AKS クラスター myResourceGroupに作成し、青緑色のカスタム アップグレード設定を使用します。

    az aks nodepool add \
        --name myNodePool \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup \
        --upgrade-strategy bluegreen \
        --drain-timeout-bg 5 \
        --batch-soak-duration 5 \
        --drain-batch-size 50% \
        --final-soak-duration 180
    

既存のノード プールの青緑色のアップグレードを開始する

Important

一時停止中のアップグレードを再開すると、青緑色の設定を更新できますが、Kubernetes のバージョンを変更することはできません。 進行中の青緑のアップグレードをローリング戦略に切り替えることができますが、進行中のローリング アップグレードをブルーグリーンに切り替えることはできません。

  • az aks nodepool upgrade パラメーターを目的のバージョンに設定して、--kubernetes-version コマンドを使用して、既存のノード プールの青緑色のアップグレードを開始します。 ブルーグリーン戦略を既に使用しているノード プール、またはブルーグリーン戦略でまだ構成されていないノード プールに対して、青緑のアップグレードを開始できます。 次の例は、両方のシナリオを示しています。

    # Start a blue-green upgrade for an existing node pool already using blue-green strategy
    az aks nodepool upgrade \
        --name myNodePool \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup \
        --kubernetes-version <kubernetes-version>
    
    # Start a blue-green upgrade for an existing node pool not yet using blue-green strategy
    az aks nodepool upgrade \
        --name myNodePool \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup \
        --kubernetes-version <kubernetes-version> \
        --upgrade-strategy bluegreen
    

青緑色のアップグレードを一時停止またはキャンセルする

  • az aks nodepool operation-abort コマンドを使用して、進行中の青緑色のアップグレードを一時停止またはキャンセルします。 次の例では、リソース グループ myNodePool内の AKS クラスターmyAKSClustermyResourceGroupという名前のノード プールの青緑色のアップグレードを一時停止または取り消します。

    az aks nodepool operation-abort \
        --name myNodePool \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup
    

進行中の青緑色のアップグレードをローリングに切り替える

ノード プールのプロパティの変更でノードの再イメージ化が必要になるため、進行中のブルーグリーン アップグレードを再開できない場合は、ノード プールのアップグレード戦略をローリングに切り替えることができます。 AKS では、青緑色のアップグレード保護が削除され、ローリング アップグレード動作を使用してクリーンアップが続行されます。

az aks nodepool update \
    --name myNodePool \
    --cluster-name myAKSCluster \
    --resource-group myResourceGroup \
    --upgrade-strategy Rolling

青緑色のアップグレードをロールバックする

進行中の青緑色のアップグレードが取り消されると、 az aks nodepool rollback コマンドを使用してロールバックを開始できます。

ロールバックは、 finalSoakDurationInMinutes プロパティで説明されているように、最終的なソーク期間中にのみ使用できます。

次の例では、リソース グループ myNodePool内の AKS クラスターmyAKSClustermyResourceGroupという名前のノード プールに対して、ブルーグリーン アップグレードのロールバックを実行します。

az aks nodepool rollback \
    --name myNodePool \
    --cluster-name myAKSCluster \
    --resource-group myResourceGroup

よく寄せられる質問 (FAQ)

青緑色のアップグレードでは、 maxUnavailable の設定はサポートされていますか?

いいえ。 maxUnavailable 設定は、青緑色のアップグレードには適用されません。 新しい 緑色 のノードは、既存の 青い ノードと共に既存のノード プールに追加され、アップグレード プロセス中にすべての元のノードを引き続き使用できます。

Kubernetes とノード イメージのバージョンを超えるノード プールの更新には、青緑色のアップグレードを使用できますか?

いいえ。現在、青緑色のアップグレード戦略では、Kubernetes とノード イメージバージョンのアップグレードのみがサポートされています。 証明書のローテーションや kubelet、OS 構成の変更など、他の変更にはこの戦略を使用できません。 青緑色のアップグレードの進行中にノードの再イメージ化をトリガーする変更を適用する必要がある場合は、ノード プールをローリング アップグレード戦略に切り替えるか、再試行する前にプロパティの変更を元に戻します。

青緑色のアップグレードと互換性のある Kubernetes バージョンはどれですか?

青緑色のアップグレードは、API バージョン 以降を使用している限り、コミュニティでサポートされているバージョンと長期サポート (LTS) バージョンの両方を含む、2025-08-02-preview バージョンで動作します。

青緑色のアップグレードで自動セキュリティ パッチ チャネルを使用できますか?

はい。ノード プールのアップグレード戦略が青緑色を使用するように構成されている限り。 構成すると、セキュリティ パッチは、既定のローリング 更新メカニズムではなく、青緑色のアップグレード プロセスに従います。

ブルーグリーンアップグレード中の永続ボリュームはどうなりますか?

永続ボリュームには引き続きアクセスできます。 ポッドは適切にドレインされ、再スケジュールされますが、ボリュームアタッチメントは維持されます。

複数のノード プール間でブルーグリーン アップグレードを同時に実行できますか?

はい。異なるノード プールでは、ブルーグリーン アップグレードを並列で実行できますが、各プールでアクティブなアップグレードを行うことができるのは 1 つだけです。 現在、複数のプール間でのアップグレードの順序を制御することはできません。

青緑色のアップグレードでは、テイントやラベルなどのノード固有の構成をどのように処理しますか?

テイント、ラベル、注釈を含むすべてのノード構成は、 自動的に緑 のプールにレプリケートされます。

ブルーグリーンアップグレードのコストへの影響は何ですか?

アップグレード期間中は、元の 青い ノードと新しい 緑色 のノードの両方に対して課金されるため、移行期間中に一時的なコストが 2 倍になる予定であることを確認してください。

容量障害時はどうなりますか?

緑のノードを追加するときに容量エラーが発生した場合、アップグレードは失敗し、青いノードは影響を受けません。 十分な容量が使用可能になったらアップグレードを再試行するか、ロールバックを選択できます。

ロールバック中はどうなりますか?

ロールバックが開始されたときに緑色のノードの数が青色のノードの数以下の場合、緑色のノードは削除され、青色のノードはコードが解除されて復活し、通常の操作を再開します。

AKS でのノード プールのアップグレードの詳細については、次の記事を参照してください。