Azure Kubernetes Fleet Manager を使用して、複数のクラスターで Kubernetes とノード イメージを更新する
- [アーティクル]
-
-
多数のクラスターを管理するプラットフォーム管理者は、安全かつ予測可能な方法で複数のクラスターの更新 (ノード OS イメージまたは Kubernetes のバージョンのアップグレードなど) をステージングする際に問題を抱えていることがよくあります。 この課題に対処するため、Azure Kubernetes Fleet Manager (Fleet) では、更新実行を使って、複数のクラスター間で更新を調整できます。
更新実行はステージ、グループ、戦略で構成され、手動で 1 回だけ適用するか、自動アップグレード プロファイルを使って継続的な定期更新を自動的に適用することができます。 すべての更新実行 (手動または自動) では、メンバー クラスターのメンテナンス期間が優先されます。
このガイドでは、更新実行を構成して手動で実行する方法について説明します。
前提条件
このガイドで参照されている更新の戦略、実行、ステージ、グループについては、この機能の概念の概要に関する記事をご覧ください。
1 つ以上のメンバー クラスターを含む Fleet リソースが必要です。 そうでない場合は、クイックスタートに従って Fleet リソースを作成し、Azure Kubernetes Service (AKS) クラスターをメンバーとして参加させます。
以下の環境変数を設定します。
export GROUP=<resource-group>
export FLEET=<fleet-name>
この記事の Azure CLI の手順に従って行う場合は、Azure CLI バージョン 2.58.0 以降がインストールされている必要があります。 インストールとアップグレードについては、「Azure CLI のインストール」を参照してください。
次のコマンドを実行してインストールできる fleet
Azure CLI 拡張機能も必要です。
az extension add --name fleet
リリースされている最新バージョンの拡張機能に更新するには、az extension update
コマンドを実行します。
az extension update --name fleet
更新実行の作成
更新実行では、クラスターのアップグレード シーケンスについて 2 つのオプションがサポートされています。
- 1 つずつ: クラスター アップグレード シーケンスの制御について注意する必要がない場合、
one-by-one
には、フリートのすべてのメンバー クラスターを一度に 1 つずつ順番にアップグレードする簡単な方法が用意されています。
- 更新グループとステージを使ってクラスターのシーケンスを制御する: クラスター アップグレード シーケンスを制御したい場合は、更新グループと更新ステージにメンバー クラスターを構成できます。 このシーケンスは、更新戦略の形式でテンプレートとして保存できます。 その後は、更新実行を作成する必要があるたびにシーケンスを定義するのではなく、更新戦略を使って更新実行を作成できます。
すべてのクラスターを 1 つずつ更新する
Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
サービス メニューの [設定] で、[複数のクラスターの更新]>[実行の作成] を選びます。
更新実行の名前を入力し、アップグレードの種類で [1 つずつ] を選びます。
[アップグレードのスコープ] で、次のいずれかのオプションを選びます。
- コントロール プレーンとノード プールの両方の Kubernetes バージョン
- クラスターのコントロール プレーンのみの Kubernetes バージョン
- ノード イメージのバージョンのみ
[ノード イメージ] で、次のいずれかのオプションを選びます。
- [最新のイメージ]: 更新実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで利用できる最新のイメージに更新します。
- [一貫したイメージ]: 更新実行では、AKS クラスターが複数のリージョンに存在し、それらで利用できる最新のノード イメージが異なる可能性があります (詳しくは、リリース トラッカーに関する記事をご覧ください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
[作成] を選んで更新実行を作成します。
az fleet updaterun create
コマンドを使い、--upgrade-type
と --node-image-selection
フラグの値を選んで、更新実行を作成します。 次のコマンドでは、そのリージョンで各クラスターに利用できる最新のノード イメージを使ってコントロール プレーンとノード プールの両方の Kubernetes バージョンをアップグレードする更新実行が作成されます。
--upgrade-type
フラグは、次の値をサポートします。
Full
は、コントロール プレーンの Kubernetes バージョンとノード プールと共にノード イメージをアップグレードします。
ControlPlaneOnly
は、クラスターのコントロール プレーンの Kubernetes バージョンのみをアップグレードします。
NodeImageOnly
は、ノード イメージのみをアップグレードします。
--node-image-selection
フラグは、次の値をサポートします。
Latest
: 更新実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで利用できる最新のイメージに更新します。
Consistent
: 更新実行では、AKS クラスターが複数のリージョンに存在し、それらで利用できる最新のノード イメージが異なる可能性があります (詳しくは、リリース トラッカーに関する記事をご覧ください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
az fleet updaterun create --resource-group $GROUP --fleet-name $FLEET --name run-1 --upgrade-type Full --kubernetes-version 1.26.0 --node-image-selection Latest
az fleet updaterun start
コマンドを使って更新実行を始めます。
az fleet updaterun start --resource-group $GROUP --fleet-name $FLEET --name run-1
更新実行を作成する場合、更新実行の範囲を制御できます。 --upgrade-type
フラグは、次の値をサポートします。
ControlPlaneOnly
は、クラスターのコントロール プレーンの Kubernetes バージョンのみをアップグレードします。
Full
は、コントロール プレーンの Kubernetes バージョンとノード プールと共にノード イメージをアップグレードします。
NodeImageOnly
は、ノード イメージのみをアップグレードします。
また、--node-image-selection
フラグは、次の値をサポートします。
- [Latest] (最新): 更新の実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで使用可能な最新のイメージに更新します。
- [Consistent] (一貫性): 更新の実行では、AKS クラスターが複数のリージョンに存在し、それらのリージョンでは利用可能な最新のノード イメージが異なる可能性があるためです (詳細については、リリース トラッカーを確認してください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
更新実行の開始:
更新実行を開始するには、次のコマンドを実行します。
az fleet updaterun start --resource-group $GROUP --fleet-name $FLEET --name <run-name>
クラスターを更新のグループとステージに割り当てる
更新のグループとステージを使用すると、クラスターを更新するときに更新の実行で従うシーケンスをより細かく制御できます。 更新ステージ内では、更新はすべての異なる更新グループに並列に適用されます。 更新グループ内では、メンバー クラスターが順番に更新されます。
次の 2 つの方法のいずれかで、メンバー クラスターを特定の更新グループに割り当てることができます。
フリートにメンバー クラスターを追加するときにグループに割り当てる
Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
サービス メニューの [設定] で、[メンバー クラスター]>[追加] を選びます。
追加するクラスターを選んでから、[次へ: 確認と追加] を選びます。
クラスターを割り当てる更新グループの名前を入力してから、[追加] を選びます。
az fleet member create
コマンドを使い、--update-group
フラグを更新グループの名前に設定して、メンバー クラスターをフリートに追加するときに、メンバー クラスターを更新グループに割り当てます。
az fleet member create --resource-group $GROUP --fleet-name $FLEET --name member1 --member-cluster-id $AKS_CLUSTER_ID --update-group group-1a
既存のフリート メンバーを更新グループに割り当てる
Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
サービス メニューの [設定] で、[メンバー クラスター] を選びます。
更新グループに割り当てる 1 つまたは複数のクラスターを選んでから、[更新グループの割り当て] を選びます
クラスターを割り当てる更新グループの名前を入力してから、[割り当て] を選びます。
Note
1 つのフリート メンバーを含めることができるのは 1 つの更新グループのみですが、1 つの更新グループには複数のフリート メンバーを含めることができます。
更新グループ自体は、別のリソースの種類ではありません。 更新グループは、単にフリート メンバーからの参照を表す文字列です。 そのため、共通の更新グループを参照しているすべてのフリート メンバーが削除されると、その特定の更新グループも存在しなくなります。
更新の実行とステージを定義する
更新ステージを使って更新実行を定義し、異なる更新グループに対する更新の適用の順序を指定できます。 たとえば、最初の更新ステージでテスト環境のメンバー クラスターを更新し、2 番目の更新ステージで運用環境のメンバー クラスターを更新します。 更新ステージ間の待機時間を指定することもできます。
Azure portal で、Azure Kubernetes Fleet Manager リソースに移動します。
サービス メニューの [設定] で、[複数のクラスターの更新]>[実行の作成] を選びます。
更新実行の名前を入力してから、更新シーケンスの種類として [ステージ] を選びます。
[ステージの作成] を選んでから、ステージの名前とステージ間の待ち時間を入力します。
このステージに含める更新グループを選びます。 更新グループを特定のシーケンスで更新する場合は、その順序を指定することもできます。 完了したら [作成] を選択します。
[アップグレードのスコープ] で、次のいずれかのオプションを選びます。
- コントロール プレーンとノード プールの両方の Kubernetes バージョン
- クラスターのコントロール プレーンのみの Kubernetes バージョン
- ノード イメージのバージョンのみ
[ノード イメージ] で、次のいずれかのオプションを選びます。
- [最新のイメージ]: 更新実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで利用できる最新のイメージに更新します。
- [一貫したイメージ]: 更新実行では、AKS クラスターが複数のリージョンに存在し、それらで利用できる最新のノード イメージが異なる可能性があります (詳しくは、リリース トラッカーに関する記事をご覧ください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
[作成] を選んで更新実行を作成します。
更新実行を作成するたびにステージとその順序を指定すると、繰り返し作業が複雑になる可能性があります。 更新戦略を使用すると、更新実行のためのテンプレートを保存できるため、このプロセスを簡略化できます。 詳細については、更新戦略の作成と使用に関する記事を参照してください。
[複数のクラスターの更新] メニューで、更新実行を選んでから、[開始] を選びます。
更新実行のステージとグループを定義する JSON ファイルを作成します。 ステージ ファイル (example-stages.json) からの入力の例を次に示します。
{
"stages": [
{
"name": "stage1",
"groups": [
{
"name": "group-1a"
},
{
"name": "group-1b"
},
{
"name": "group-1c"
}
],
"afterStageWaitInSeconds": 3600
},
{
"name": "stage2",
"groups": [
{
"name": "group-2a"
},
{
"name": "group-2b"
},
{
"name": "group-2c"
}
]
}
]
}
az fleet updaterun create
コマンドを使い、--stages
フラグを JSON ファイルの名前に設定し、--upgrade-type
と --node-image-selection
フラグで選んだ値を指定して、更新実行を作成します。 次のコマンドでは、そのリージョンで各クラスターに利用できる最新のノード イメージを使ってコントロール プレーンとノード プールの両方の Kubernetes バージョンをアップグレードする更新実行が作成されます。
--upgrade-type
フラグは、次の値をサポートします。
Full
は、コントロール プレーンの Kubernetes バージョンとノード プールと共にノード イメージをアップグレードします。
ControlPlaneOnly
は、クラスターのコントロール プレーンの Kubernetes バージョンのみをアップグレードします。
NodeImageOnly
は、ノード イメージのみをアップグレードします。
--node-image-selection
フラグは、次の値をサポートします。
Latest
: 更新実行内のすべての AKS クラスターを、そのリージョンのそのクラスターで利用できる最新のイメージに更新します。
Consistent
: 更新実行では、AKS クラスターが複数のリージョンに存在し、それらで利用できる最新のノード イメージが異なる可能性があります (詳しくは、リリース トラッカーに関する記事をご覧ください)。 更新の実行では、一貫性を実現するために、これらすべてのリージョンに共通の最新イメージが選択されます。
az fleet updaterun create --resource-group $GROUP --fleet-name $FLEET --name run-1 --upgrade-type Full --kubernetes-version 1.26.0 --node-image-selection Latest --stages example-stages.json
az fleet updaterun start
コマンドを使って更新実行を始めます。
az fleet updaterun start --resource-group $GROUP --fleet-name $FLEET --name run-1
更新戦略を使用して更新実行を作成する
更新実行を作成するには、ステージ、グループ、順序を毎回指定する必要があります。 更新戦略を使用すると、更新実行のためのテンプレートを保存できるため、このプロセスを簡略化できます。
Note
同じ更新戦略から、一意の名前を持つ複数の更新実行を作成できます。
更新戦略は、次のいずれかの方法を使って作成できます。
更新実行を作成するときに更新戦略を保存する
新しい更新戦略を作成し、更新実行を作成するときにそれを参照する
[複数のクラスターの更新] ページに移動し、[戦略]>[戦略の作成] を選びます。
更新戦略の詳細を構成してから、[作成] を選びます。
後で新しい更新実行を作成するときに、その更新戦略を参照します。
az fleet updatestrategy create
コマンドを使い、--stages
フラグを JSON ファイルの名前に設定して、新しい更新戦略を作成します。
az fleet updatestrategy create --resource-group $GROUP --fleet-name $FLEET --name strategy-1 --stages example-stages.json
az fleet updaterun create
コマンドを使い、--update-strategy-name
フラグを更新戦略の名前に設定して、更新実行を作成します。
az fleet updaterun create --resource-group $GROUP --fleet-name $FLEET --name run-5 --update-strategy-name strategy-1 --upgrade-type NodeImageOnly --node-image-selection Consistent
更新実行を管理する
以降のセクションでは、Azure portal と Azure CLI を使って更新実行を管理する方法について説明します。
Fleet リソースの [複数のクラスターの更新] ページで、[未開始] または [失敗] の状態の更新実行を [開始] できます。
Fleet リソースの [複数のクラスターの更新] ページで、現在 [実行中] の更新実行を [停止] できます。
[未開始]、[失敗]、または [実行中] 状態の更新実行では、任意の [ステージ] を選んでアップグレードを [スキップ] できます。
同様に、更新グループまたはメンバー クラスター レベルでアップグレードをスキップすることもできます。
詳しくは、実行、ステージ、グループでの更新実行の状態とスキップ動作の概念の概要に関する記事をご覧ください。
次のステップ
Azure Kubernetes Fleet Manager についてさらに詳しく学びます。