Azure Kubernetes Fleet Manager を使用して、複数のクラスター全体で更新を調整する

多数のクラスターが含まれる Kubernetes フリートを管理するプラットフォーム管理者は、多くの場合、複数のクラスター間で安全かつ予測可能な方法で更新プログラムをステージングするという問題に直面します。 この問題点に対処するために、Kubernetes Fleet Manager (フリート) では、更新実行、ステージ、グループ、戦略を使って複数のクラスター間で更新を調整できます。

フリート リソースに関する Azure portal のペインのスクリーンショット。メンバー クラスターの Kubernetes バージョンと、メンバー クラスターのすべてのノード プールで使用中のノード イメージが示されています。

前提条件

  • このドキュメントの、更新戦略、実行、ステージ、およびグループ参照の説明を示す、「この機能の概念の概要」を参照してください。

  • 1 つ以上のメンバー クラスターを持つフリート リソースが存在する必要があります。 そうでない場合は、クイックスタートに従って Fleet リソースを作成し、Azure Kubernetes Service (AKS) クラスターをメンバーとして参加させます。 このチュートリアルでは、例として 5 つの AKS メンバー クラスターを含むフリート リソースを示します。

  • 以下の環境変数を設定します。

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    
  • この記事の Azure CLI の手順に従っている場合は、Azure CLI バージョン 2.53.1 以降がインストールされている必要があります。 インストールとアップグレードについては、「Azure CLI のインストール」を参照してください。

  • 次のコマンドを実行してインストールできる fleet Azure CLI 拡張機能も必要です。

    az extension add --name fleet
    

    次のコマンドを実行して、リリースされた最新バージョンの拡張機能に更新します:

    az extension update --name fleet
    

Note

更新実行では、ユーザーが AKS クラスター レベルで設定した計画メンテナンス期間が優先されます。 詳細については、計画メンテナンス期間が構成されているメンバー クラスターが更新実行で処理される方法について説明している「複数のメンバー クラスターを対象とする計画メンテナンス」をご覧ください。

更新実行では、クラスターをアップグレードするシーケンスに対して 2 つのオプションがサポートされています。

  • 1 つずつ: クラスターをアップグレードするシーケンスの制御について注意する必要がない場合、one-by-one には、フリートのすべてのメンバー クラスターを 1 つずつアップグレードする簡単なアプローチが用意されています。
  • 更新グループとステージを使用してクラスターのシーケンスを制御する - クラスターをアップグレードするシーケンスを制御したい場合は、更新グループと更新ステージ内のメンバー クラスターを構成できます。 また、このシーケンスは、更新戦略の形でテンプレートとして保存できます。 更新実行は、ステージに基づいて更新実行を作成する必要があるたびにシーケンスを定義するのではなく、後で更新戦略から作成できます。

すべてのクラスターを 1 つずつ更新する

  1. Azure Kubernetes Fleet Manager リソースのページで、[Multi-cluster update] (マルチクラスター更新) メニューに移動し、[作成] を選択します。

  2. [1 つずつ選択] を選択すると、シーケンス内のフリートのすべてのメンバー クラスターが 1 つずつアップグレードされます。

    Azure Kubernetes Fleet Manager でクラスターを 1 つずつ更新する更新実行を作成するための Azure portal のペインのスクリーンショット。

  3. アップグレード スコープの場合は、次の 3 つのオプションのいずれかを選択できます。

    • コントロール プレーンとノード プールの両方の Kubernetes バージョン
    • クラスターのコントロール プレーンのみの Kubernetes バージョン
    • ノード イメージのバージョンのみ

    更新実行を作成するための Azure portal のペインのスクリーンショット。[アップグレード スコープ] セクションが表示されます。

    ノード イメージの場合は、次のオプションを使用できます。

    • [Latest] (最新): 更新の実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで使用可能な最新のイメージに更新します。
    • [Consistent] (一貫性): 更新の実行では、AKS クラスターが複数のリージョンに存在し、それらのリージョンでは利用可能な最新のノード イメージが異なる可能性があるためです (詳細については、リリース トラッカーを確認してください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。

特定の順序でクラスターを更新する

更新のグループとステージを使用すると、クラスターを更新するときに更新の実行で従うシーケンスをより細かく制御できます。 更新ステージ内では、更新はすべての異なる更新グループに並列で適用されます。更新グループ内では、メンバー クラスターが順番に更新されます。

クラスターを更新グループに割り当てる

次の 2 つの方法のいずれかで、メンバー クラスターを特定の更新グループに割り当てることができます。

  • フリートにメンバー クラスターを追加するときにグループに割り当てる。 次に例を示します。
  1. Azure Kuberntes Fleet Manager リソースのページで、[Member clusters] (メンバー クラスター) に移動します。

    Azure Kubernetes Fleet Manager メンバー クラスターに関する Azure portal のページのスクリーンショット。

  2. メンバー クラスターが属する更新グループを指定します。

    Azure Kubernetes Fleet Manager にメンバー クラスターを追加してそれらをグループに割り当てるための Azure portal のページのスクリーンショット。

  • 2 番目の方法は、既存のフリート メンバーを更新グループに割り当てることです。 次に例を示します。
  1. Azure Kuberntes Fleet Manager リソースのページで、[Member clusters] (メンバー クラスター) に移動します。 目的のメンバー クラスターを選択し、[Assign update group] (更新グループの割り当て) を選択します。

    既存のメンバー クラスターをグループに割り当てるための Azure portal のページのスクリーンショット。

  2. グループ名を指定し、[割り当て] を選択します。

    メンバー クラスターのグループを更新するためのフォームが示されている、メンバー クラスターに関する Azure portal のページのスクリーンショット。

Note

すべてのフリート メンバーは 1 つの更新グループの一部にのみなることができますが、更新グループには複数のフリート メンバーを含めることができます。 更新グループ自体は、別のリソースの種類ではありません。 更新グループは、単にフリート メンバーからの参照を表す文字列です。 そのため、共通の更新グループを参照しているすべてのフリート メンバーが削除されると、その特定の更新グループも存在しなくなります。

更新の実行とステージを定義する

更新プログラムの実行を更新ステージを使用して定義すると、更新プログラムの適用をさまざまな更新グループに順番に並べることができます。 たとえば、最初の更新ステージでテスト環境のメンバー クラスターを更新し、2 番目の更新ステージで運用環境のメンバー クラスターを更新します。 更新ステージ間の待機時間を指定することもできます。

  1. Azure Kubernetes Fleet Manager リソースのページで、[マルチクラスター更新] に移動します。 [実行] タブで、[作成] を選択します。

  2. 更新実行の名前を指定し、更新シーケンスの種類として [ステージ] を選択します。

    更新実行内でステージ モードを選択するための Azure portal ページのスクリーンショット。

  3. [ステージの作成] を選択します。 ここで、ステージ名と各ステージの後の待機期間を指定できます。

    ステージを作成して待ち時間を定義するための Azure portal のページのスクリーンショット。

  4. このステージに含める更新グループを選択します。

    アップグレード グループの選択が示されている、ステージ作成のための Azure portal のページのスクリーンショット。

  5. すべてのステージを定義した後、[上へ移動] および [下へ移動] コントロールを使用してそれらを並べ替えることができます。

  6. アップグレード スコープの場合は、次の 3 つのオプションのいずれかを選択できます。

    • コントロール プレーンとノード プールの両方の Kubernetes バージョン
    • クラスターのコントロール プレーンのみの Kubernetes バージョン
    • ノード イメージのバージョンのみ

    更新実行を作成するための Azure portal のペインのスクリーンショット。[アップグレード スコープ] セクションが表示されます。

    ノード イメージの場合は、次のオプションを使用できます。

    • [Latest] (最新): 更新の実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで使用可能な最新のイメージに更新します。
    • [Consistent] (一貫性): 更新の実行では、AKS クラスターが複数のリージョンに存在し、それらのリージョンでは利用可能な最新のノード イメージが異なる可能性があるためです (詳細については、リリース トラッカーを確認してください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
  7. ページの下部にある [作成] をクリックし、更新実行を作成します。 更新実行を作成するたびにステージとその順序を指定すると、繰り返し作業が複雑になる可能性があります。 更新戦略を使用すると、更新実行のためのテンプレートを保存できるため、このプロセスを簡略化できます。 詳細については、更新戦略の作成と使用に関する記事を参照してください。

  8. [Multi-cluster update] (マルチクラスター更新) メニューで、更新実行を選択し、[開始] を選択します。

更新戦略を使用して更新実行を作成する

更新実行を作成するには、ステージ、グループ、およびそれらの順序を毎回指定する必要がありました。 更新戦略を使用すると、更新実行のためのテンプレートを保存できるため、このプロセスを簡略化できます。

Note

同じ更新戦略から、一意の名前を持つ複数の更新の実行を作成できます。

更新戦略を作成する: 更新戦略を作成するには、次の 2 つの方法があります。

  • アプローチ 1: 更新実行の作成時に更新戦略を保存できます。

    更新戦略として保存されている更新実行ステージを示す Azure portal のスクリーンショット。

  • アプローチ 2: [マルチクラスター更新] に移動し、[戦略] タブの [作成] を選択できます。

    更新戦略の作成を示す Azure portal のスクリーンショット。

更新戦略を使用して更新実行を作成する: 作成した更新戦略は、後で新しい更新の実行を作成するときに参照できます。

新しい更新実行の作成を示す Azure portal のスクリーンショット。[既存の戦略からコピー] ボタンが強調されています。

更新実行を管理する

更新実行を管理するアカウントを管理するためのオプションは次のとおりです。

  • フリート リソースの [マルチクラスター更新] タブで、[未開始] 状態または [失敗] 状態の更新実行を [開始] できます。

    [未開始] 状態の更新実行を開始する方法を示す Azure portal のスクリーンショット。

  • フリート リソースの [マルチクラスター更新] タブで、現在 [実行中] の更新実行を [停止] できます。

    [実行中] 状態の更新実行を停止する方法を示す Azure portal のスクリーンショット。

  • [未開始][失敗]、または [実行中] 状態の更新実行では、任意の [ステージ] を選択し、アップグレードを [スキップ] できます。

    更新実行の特定のステージのアップグレードをスキップする方法を示す Azure portal のスクリーンショット。

    同様に、更新グループまたはメンバー クラスター レベルでアップグレードをスキップすることもできます。

    詳細については、更新実行状態と実行/ステージ/グループのスキップ動作の概念の概要を参照してください。