このページでは、ロールアウト シーケンスを使用して GKE クラスタのアップグレードを管理する方法について説明します。詳細については、ロールアウト シーケンスを使用したクラスタのアップグレードについてをご覧ください。
始める前に
作業を始める前に、次のことを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
- フリートに必要な API が有効になっていることを確認します。あらゆる種類のロールアウト シーケンスを作成するには、フリート ホスト プロジェクトでこれらの API を有効にする必要があります。
- プロジェクトでチームベースのロールアウト シーケンス(プレビュー版)を作成する場合は、フリート ホスト プロジェクトで GKE Enterprise が有効になっていることを確認します。
- Terraform の場合は、
google
プロバイダのバージョン 5.13.0 以降を使用してください。
必要なロール
- クラスタ登録に必要な IAM 権限があることを確認します。次の権限を付与する必要があります。
- フリート ホスト プロジェクトのクラスタ登録権限。
- 登録する GKE クラスタに対するクラスタ管理者権限。
- 別のプロジェクトのフリートに GKE クラスタを登録するためのプロジェクト間のクラスタ登録権限。
ロールアウト シーケンスを構成する
このドキュメントでは、フリートまたはチームスコープで編成されたクラスタのグループを使用して、ロールアウト シーケンスを作成する方法について説明します。このドキュメントでは、フリートとチームスコープの両方を「グループ」という用語で表します。ロールアウト シーケンスは、どちらのグループ化の方法でも作成できるためです。
最大 3 つのクラスタのグループのシーケンスを作成できます。1 つのグループ内でクラスタのアップグレードが完了した後のソークテスト時間(最大 30 日)を選択できます。 これには Autopilot クラスタと Standard クラスタの両方を含めることができます。
ロールアウト シーケンスを作成するには、クラスタをフリートまたはチームスコープのグループに編成する必要があります。クラスタの編成方法については、コミュニティ バンクの例をご覧ください。クラスタがグループに編成されたら、アップストリーム グループの関係と各グループのソーク時間を定義することで、ロールアウト シーケンスを作成できます。ロールアウト シーケンスにおいて、アップストリームは前のグループを指し、ダウンストリームは次のグループを指します。
クラスタをグループに編成する
ロールアウト シーケンスでは、すべてのグループ内のすべてのクラスタが同じリリース チャンネルに登録されており、同じマイナー バージョンであることが必要です。これらの要件が満たされておらず、クラスタ間でバージョンの不一致がある場合は、バージョンのロールアウトで問題が発生する可能性があります。詳しくは、ロールアウトの適格性をご覧ください。
フリート間のロールアウト シーケンス、またはチームのチームスコープ間のロールアウト シーケンス(プレビュー版)を作成できます。
ロールアウト シーケンスを使用したクラスタのアップグレードについてで説明したように、チームスコープは、フリート クラスタのサブセットを特定のアプリケーション チームに関連付けるためのエンタープライズ フリートレベルの構成です。チームスコープを使用するには、GKE Enterprise を有効にする必要があります。ロールアウト シーケンスにチームスコープを使用または作成する場合は、次の制限が適用されます。
チームベースのシーケンスには、単一テナンシー クラスタが必要です。つまり、個々のクラスタは 1 つのチームにのみ関連付けられます。共有クラスタ(一般的なフリートチーム管理でサポート)は、ロールアウト シーケンスではサポートされていません。
ロールアウト シーケンスを作成するには、チームスコープがそれぞれ異なるフリートに属している必要があります。同じフリート内の異なるチームスコープ間でロールアウト シーケンスを作成することはできません。
すでにクラスタをグループに編成している場合は、次の手順をスキップしてロールアウト シーケンスを作成するに進むことができます。
フリート
フリートベースのロールアウト シーケンスを作成するには、まずクラスタをフリートにグループ化する必要があります。フリートベースのロールアウト シーケンスの例に示すように、テスト、ステージング、本番環境などのデプロイ環境ごとにクラスタを編成できます。
選択したグループ化に基づいて、各クラスタをフリートに登録します。
チーム
チームベースのロールアウト シーケンスを作成するには、クラスタをチームスコープにグループ化する必要があります。これを行うには、まず、スコープベースのロールアウト シーケンスの例に示すように、テスト、ステージング、本番環境などのデプロイ環境ごとにクラスタをフリートに編成します。その後、クラスタをさまざまなチームのクラスタのスコープにさらに細分化できます。
- シーケンスの各クラスタについて、クラスタをフリートに登録します。このクラスタのチームスコープを作成するプロジェクトのフリートにクラスタを登録する必要があります。クラスタを別のホスト プロジェクトのフリートに登録する場合は、プロジェクト間の登録に必要な権限が設定されていることを確認してください。
2~3 個のチームスコープを作成して、クラスタを整理します。各スコープを、チームの各フリートのホスト プロジェクトに作成します。ロールアウト シーケンスには最大 3 つのチームスコープを設定できます。
フラグの全一覧については、
gcloud container fleet scopes create
のリファレンスをご覧ください。ロールアウト シーケンスを作成する手順で、これらのフラグをcreate
コマンドで使用できます。
ロールアウト シーケンスを作成する
ロールアウト シーケンスは、最大 3 つの要素を持つリンクされたリストとして編成されます。
ロールアウト シーケンスを作成するときは、クラスタのグループ(フリートまたはチームスコープ)ごとに次のプロパティを設定します。
- アップストリーム グループ: ダウンストリーム グループの新しいバージョンの対象となるアップストリーム フリートまたはチームスコープ。シーケンスの最初のグループにアップストリーム グループは設定しません。
- ソーク時間: グループのソーク時間は、アップグレードの完了(または 30 日後のロールアウト)から、ダウンストリーム グループでアップグレードが開始されるまでの時間です。詳細については、ロールアウト シーケンスでのバージョン認定の仕組みをご覧ください。
フリート - gcloud
次の手順では gcloud container fleet clusterupgrade update
コマンドを使用しますが、gcloud container fleet clusterupgrade create
コマンドでも同じプロパティを設定できます。
次の各コマンドで、SOAK_TIME
は更新するフリートのソーク時間に置き換えます。
ロールアウト シーケンスを作成します。
シーケンスの最初のフリートのソーク時間を設定します。
gcloud container fleet clusterupgrade update \ --default-upgrade-soaking=SOAK_TIME \ --project=FIRST_FLEET_PROJECT_ID
FIRST_FLEET_PROJECT_ID
は、フリート ホスト プロジェクトのプロジェクト ID に置き換えます。シーケンスの 2 番目のフリートのアップストリーム フリートとソーク時間を設定します。
gcloud container fleet clusterupgrade update \ --upstream-fleet=FIRST_FLEET_PROJECT_ID \ --default-upgrade-soaking=SOAK_TIME \ --project=SECOND_FLEET_PROJECT_ID
FIRST_FLEET_PROJECT_ID
は、最初のフリートのホスト プロジェクトのプロジェクト ID に置き換え、SECOND_FLEET_PROJECT_ID
は、フリートのホスト プロジェクトのプロジェクト ID に置き換えます。省略可: ロールアウト シーケンスで 3 つのフリートが必要な場合は、シーケンスの 3 番目のフリートのアップストリーム フリートを設定します。
gcloud container fleet clusterupgrade update \ --upstream-fleet=SECOND_FLEET_PROJECT_ID \ --default-upgrade-soaking=SOAK_TIME \ --project=THIRD_FLEET_PROJECT_ID
SECOND_FLEET_PROJECT_ID
は、2 番目のフリートのホスト プロジェクトのプロジェクト ID に置き換え、THIRD_FLEET_PROJECT_ID
は、フリートのホスト プロジェクトのプロジェクト ID に置き換えます。
フリート - コンソール
Google Cloud コンソールの [ロールアウトの順序付け] ページに移動します。
[ロールアウト シーケンスを作成] をクリックします。
[ロールアウト順序を作成する] ペインで、シーケンスの最初の 2 つのフリートを選択します。
- [フリート 1] セクションで、シーケンスの最初のフリートを選択します。
- [アップストリーム フリートのソーク時間] セクションで、[日]、[時間]、[分] の各フィールドを使用して、最初のフリートのソーク時間を設定します。
- [フリート 2] セクションで、シーケンス内の 2 番目のフリートを選択します。
- [作成] をクリックします。
省略可: このロールアウト シーケンスで 3 つのフリートを使用する場合は、次の追加手順を実施します。
- [ロールアウト グラフ] で、2 番目のフリートの要素をクリックします。
- [ ダウンストリーム フリートを追加] をクリックします。
- [アップストリーム フリートのソーク時間] セクションで、[日]、[時間]、[分] の各フィールドを使用して、2 番目のフリートのソーク時間を設定します。
- [シーケンス内の次のフリート] セクションで、シーケンス内の 3 番目のフリートを選択します。
- [保存] をクリックします。
フリート - Terraform
このセクションでは、Terraform を使用してフリートベースのシーケンスを作成する方法について説明します。このリソースを使用してシーケンスを更新することもできます。詳細については、google_gke_hub_feature
のリファレンス ドキュメントをご覧ください。
次の各コマンドで、SOAK_TIME
は更新するフリートのソーク時間に置き換えます。
ロールアウト シーケンスを作成します。
Terraform 構成に次のブロックを追加して、シーケンスの最初のフリートのソーク時間を設定します。
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = [] post_conditions { soaking = "SOAK_TIME" } } } project = "FIRST_FLEET_PROJECT_ID" }
FIRST_FLEET_PROJECT_ID
は、フリート ホスト プロジェクトのプロジェクト ID に置き換えます。次のブロックを Terraform 構成に追加して、シーケンスの 2 番目のフリートのアップストリーム フリートとソーク時間を設定します。
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = ["FIRST_FLEET_PROJECT_ID"] post_conditions { soaking = "SOAK_TIME" } } } project = "SECOND_FLEET_PROJECT_ID" }
FIRST_FLEET_PROJECT_ID
は、最初のフリートのホスト プロジェクトのプロジェクト ID に置き換え、SECOND_FLEET_PROJECT_ID
は、フリートのホスト プロジェクトのプロジェクト ID に置き換えます。省略可: ロールアウト シーケンスで 3 つのフリートが必要な場合は、Terraform 構成に次のブロックを追加して、シーケンス内のフリートにアップストリーム フリートを設定します。
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = ["SECOND_FLEET_PROJECT_ID"] post_conditions { soaking = "SOAK_TIME" } } } project = "THIRD_FLEET_PROJECT_ID" }
SECOND_FLEET_PROJECT_ID
は、2 番目のフリートのホスト プロジェクトのプロジェクト ID に置き換え、THIRD_FLEET_PROJECT_ID
は、フリートのホスト プロジェクトのプロジェクト ID に置き換えます。
チーム - gcloud
これらのプロパティは、チームスコープを作成または更新するときに設定できます。次の手順では gcloud container fleet scopes update
コマンドを使用しますが、gcloud container fleet scopes create
コマンドを使用してチームスコープを作成するときに、同じプロパティを設定できます。
これらの各コマンドで、次のように置き換えます。
- 変数を、それぞれのチームスコープの名前またはチームスコープのフリート ホスト プロジェクト ID に置き換えます。
SOAK_TIME
は、更新するチーム スコープのソーク時間に置き換えます。
ロールアウト シーケンスを作成します。
シーケンスの最初のスコープのソーク時間を設定します。
gcloud container fleet scopes update projects/FIRST_SCOPE_PROJECT_ID/locations/global/scopes/FIRST_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=FIRST_SCOPE_PROJECT_ID
シーケンスの 2 番目のスコープのアップストリーム スコープとソーク時間を設定します。
gcloud container fleet scopes update projects/SECOND_SCOPE_PROJECT_ID/locations/global/scopes/SECOND_SCOPE_NAME \ --upstream-scope=projects/FIRST_SCOPE_PROJECT_ID/locations/global/scopes/FIRST_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=SECOND_SCOPE_PROJECT_ID
省略可: ロールアウトのシーケンスで 3 つのチームスコープを使用する場合は、シーケンスの 3 番目のスコープにアップストリーム スコープを設定します。
gcloud container fleet scopes update projects/THIRD_SCOPE_PROJECT_ID/locations/global/scopes/THIRD_SCOPE_NAME \ --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=THIRD_SCOPE_PROJECT_ID
ロールアウト シーケンスのステータスを確認します
ロールアウト シーケンスのステータスは、次のいずれかの方法で確認できます。
- Google Cloud コンソールでロールアウト順序の視覚的な表現をモニタリングします(プレビュー版、フリートベースのロールアウト順序のみ)。
- gcloud CLI または GKE Hub API を使用して、ロールアウト順序のステータスを確認します。
Google Cloud コンソールでロールアウト順序をモニタリングする
Google Cloud コンソールの [ロールアウトの順序付け] ページに移動します。
ロールアウト シーケンスのモニタリングのセクションでシーケンスを表示します。ロールアウト順序が表示されない場合は、別のロールアウト順序に切り替えるか、まだ作成していない場合はロールアウト順序を作成します。
コンソールを使用してロールアウト順序をモニタリングする方法
このページでは、プロジェクトのフリートと関連付けられているロールアウト順序を確認できます。ロールアウト順序の進行状況を確認するには、次の操作を行います。
- ロールアウト シーケンス全体を表示したり、個々のフリートとそのフリート内のクラスタのステータスや、フリート間のソーク時間を表示したりできます。シーケンスの構成を確認する場合は、アクティブなアップグレードがないシーケンスも表示できます。
- アップグレード タイプ(コントロール プレーンまたはノードのアップグレード)と特定のバージョン(1.31.6-gke.500 など)でフィルタします。
GKE がシーケンス内のすべてのクラスタをアップグレードする間、ロールアウト シーケンス全体を視覚的にモニタリングできます。本番環境クラスタをアップグレードする前に、環境全体で新しいバージョンの適格性を確認できます。モニタリング中に、gcloud CLI を使用してロールアウト順序を管理し、必要に応じて変更できます。
別のロールアウト順序に切り替える
Google Cloud コンソールでアクティブなプロジェクトが、ロールアウト シーケンスに登録されているフリートのフリート ホスト プロジェクトである場合、このページにはフリートベースのロールアウト順序が表示されます。
別のロールアウト順序を表示するには、ページ上部のプロジェクト選択ツールから、別のロールアウト順序に関連付けられているフリート ホスト プロジェクトを選択します。
gcloud CLI を使用する
次のセクションでこれらのコマンドを使用して、ロールアウト シーケンスでアップグレードの進行状況を確認します。提供される詳細情報については、ロールアウト シーケンスのステータス情報をご覧ください。
これらのコマンドを実行するには、各フリート ホスト プロジェクトに必要な権限が付与されていることを確認してください。たとえば、シーケンスが異なるフリートにプロジェクト間スコープがある場合、シーケンスを記述するために、各プロジェクトの権限が必要です。
次のコマンドで、シーケンス内の 1 つのフリートまたはスコープに関する情報のみが必要な場合は、--show-linked-cluster-upgrade
フラグを --show-cluster-upgrade
に置き換えます。
フリート
フリートベースのロールアウト シーケンスのステータスを確認します。
gcloud container fleet clusterupgrade describe \
--show-linked-cluster-upgrade --project=FLEET_PROJECT_ID
FLEET_PROJECT_ID
は、シーケンスの任意のフリートのホスト プロジェクトのプロジェクト ID に置き換えます。
フラグの全一覧については、gcloud container fleet clusterupgrade
describe
のリファレンスをご覧ください。
チーム
チームベースのロールアウト シーケンスのステータスを確認します。
gcloud container fleet scopes describe SCOPE_NAME \
--show-linked-cluster-upgrade
--project=SCOPE_PROJECT_ID
SCOPE_NAME
はロールアウト シーケンスの任意のスコープ名に置き換え、SCOPE_PROJECT_ID
はこのチームスコープのプロジェクト ID に置き換えます。
フラグの全一覧については、gcloud container fleet scopes
describe
のリファレンスをご覧ください。
フリートまたはチームスコープ内の個別のクラスタのステータスを確認するには、フリート ホスト プロジェクトで次のコマンドを実行して、membershipStates
セクションを表示します。
gcloud container fleet features describe clusterupgrade
ロールアウト シーケンスのステータス情報
バージョンのロールアウトのステータスをチェックすると、各グループとグループ内のクラスタの進捗状況を確認できます。
クラスタまたはグループの想定されるステータスについては、次の表をご覧ください。
ステータス | 単一クラスタの場合 | グループ(フリートまたはチームのスコープ)の場合 |
---|---|---|
不適格 | このクラスタはこのアップグレードの対象ではありません | このグループ内の 1 つ以上のクラスタはこのアップグレードの対象外です。 |
保留中 | アップグレードが開始していないか、クラスタのアップグレードが進行中です。 | グループ内のどのクラスタでもアップグレードが開始されていません。 |
IN_PROGRESS | 該当なし | アップグレードが少なくとも 1 つのクラスタで開始されていますが、一部のクラスタで完了していません。 |
ソーク処理 | アップグレードはクラスタで完了し、ソーク処理がまだ完了していません。 | アップグレードはすべてのクラスタで終了し、ソーキングはまだ完了していません。 |
FORCED_SOAKING | アップグレードに最長アップグレード時間(30 日間)を超える期間を要していたため、アップグレードを強制的にソークフェーズに移行しました。アップグレードはクラスタ内で続行できます。 | アップグレードに最長アップグレード時間(30 日間)を超える期間を要していたため、アップグレードを強制的にソークフェーズに移行しました。アップグレードはクラスタ内で続行できます。 |
完了 | アップグレードは「完了」として扱われます。つまり、このクラスタではアップグレードにおけるソーク処理が完了しています。 | アップグレードは「完了」として扱われ、ダウンストリーム グループで使用できます。つまり、アップグレードにおけるソーク処理が完了しています。 |
これらのコマンドの出力では、clusterUpgrade(s).spec
属性と clusterUpgrade(s).state
属性に、ソーク処理時間、クラスタのアップグレード オーバーライド、アップグレード ステータスなど、クラスタのアップグレードに関する追加情報が含まれます。
ロールアウト シーケンスを管理する
以下の各セクションで説明するように、ロールアウト シーケンスを使用してクラスタの自動アップグレードを制御する方法はいくつかあります。
グループのソーク時間を変更する
グループのデフォルトのソーク時間や、そのグループが特定のバージョンにアップグレードするソーク時間を変更できます。最大 30 日です。
デフォルトのソーク時間を更新する
デフォルトのソーク時間を更新するには、Google Cloud コンソール(プレビュー版、フリートベースのロールアウト順序のみ)または gcloud CLI を使用します。
gcloud
グループのデフォルトのソーク時間を変更するには、ロールアウト シーケンスを作成するの手順の gcloud CLI コマンドを使用して、アップストリーム グループを設定するフラグを省略します。
フリート - コンソール
Google Cloud コンソールの [ロールアウトの順序付け] ページに移動します。
ロールアウト シーケンスのモニタリングのセクションでシーケンスを表示します。ロールアウト順序が表示されない場合は、別のロールアウト順序に切り替えるか、まだ作成していない場合はロールアウト順序を作成します。
[ロールアウト グラフ] で、ソーク時間を更新するフリートの要素の後に [ソーク時間] 要素をクリックします。
[ソーク時間を編集] をクリックします。
[新しいソーク時間を設定] セクションで、[日]、[時間]、[分] の各フィールドを使用して、新しいソーク時間を入力します。
設定を保存するには、[保存] をクリックします。
デフォルトのソーク時間をオーバーライドする
特定のバージョン ロールアウトのソーク時間を、グループのデフォルトのソーク時間とは異なるものに変更できます。たとえば、すでに新しいバージョンを認定しており、次のグループでアップグレードを開始する準備ができている場合、ソーク時間を 0 に設定できます。また、デフォルトのソーク時間を長くして特定のバージョンを認定する場合にも使用できます。
ソーク時間はグループ単位で設定されるため、このシーケンスの他のグループのソーク時間をオーバーライドする場合は、同じコマンドを使用して、シーケンスのタイプに応じてフリートまたはスコープ名を置き換えて更新します。
このセクションの手順では、次の変数を置き換えます。
SOAK_TIME
: デフォルト以外で使用するソーク時間(例: 1 つのバージョンのロールアウトのソーク時間をスキップする場合は「0d」)。UPGRADE_NAME
: アップグレードのタイプ。コントロール プレーンのアップグレードの場合はk8s_control_plane
、ノードのアップグレードの場合はk8s_node
です。VERSION
: バージョン(1.25.2-gke.400 など)がこのグループにロールアウトされた後、デフォルトのソーク時間をオーバーライドする GKE バージョン。
フリート - gcloud
特定のバージョンのバージョン ロールアウトに使用されるソーク時間をオーバーライドするフリートのホスト プロジェクトで、次のコマンドを実行します。
フリートのソーク時間を変更します。
gcloud container fleet clusterupgrade update
--add-upgrade-soaking-override=SOAK_TIME \
--upgrade-selector=name=UPGRADE_NAME,version=VERSION
フリート - Terraform
Terraform 構成の clusterupgrade
ブロック内に次の gke_upgrades_overrides
ブロックを追加して、特定のバージョンのバージョン ロールアウトに使用されるソーク時間をオーバーライドします。
gke_upgrade_overrides {
upgrade {
name = "UPGRADE_NAME"
version = "VERSION"
}
post_conditions {
soaking = "SOAK_TIME"
}
}
チーム - gcloud
このコマンドは、チームスコープのフリートのホスト プロジェクトで実行します。SCOPE_NAME
は、特定のバージョンのバージョン ロールアウトに使用されるソーク時間をオーバーライドするチームスコープの名前に置き換えます。
チームスコープのソーク時間を変更します。
gcloud container fleet scopes update SCOPE_NAME \
--add-upgrade-soaking-override=SOAK_TIME \
--upgrade-selector=name=UPGRADE_NAME,version=VERSION
ロールアウト順序でグループを更新する
既存のロールアウト シーケンスを更新して、シーケンス内のグループを追加、削除、並べ替えることができます。これらの変更を行うには、グループ間の関連付けを更新します。
これらの手順は、Google Cloud コンソール(プレビュー版、フリートベースのロールアウト順序のみ)または gcloud CLI で実行できます。
フリート - gcloud
アップストリーム フリートを追加または変更するには、--upstream-fleet
フラグを指定して gcloud container fleet clusterupgrade update
コマンドを使用します。アップストリーム フリートを取り消すには、--reset-upstream-fleet
フラグを使用します。
次のような操作を行うことができます。
- シーケンスの最初のフリートにアップストリーム フリートを追加して、ロールアウト シーケンスの先頭に別のフリートを追加します。
- アップストリーム フリートの関連付けを変更して、ロールアウト シーケンス内のフリートの順序を変更します。
- 2 番目のフリートのアップストリーム フリートを削除して、ロールアウト シーケンスの最初のフリートを削除します。
フリート - コンソール
Google Cloud コンソールの [ロールアウトの順序付け] ページに移動します。
ロールアウト シーケンスのモニタリングのセクションでシーケンスを表示します。ロールアウト順序が表示されない場合は、別のロールアウト順序に切り替えるか、まだ作成していない場合はロールアウト順序を作成します。
[ロールアウト グラフ] で、既存のフリートのエレメントを順番にクリックします。これらの要素をクリックすると、次の操作のいずれかを行って変更できます。
- [ ダウンストリーム フリートを追加] をクリックします。
- [ アップストリーム フリートを追加] をクリックします。
- [フリートを削除] をクリックします。
次のような操作を行うことができます。
- シーケンスの最後のフリートにダウンストリーム フリートを追加して、ロールアウト シーケンスの最後に別のフリートを追加します。
- シーケンスの最初のフリートにアップストリーム フリートを追加して、ロールアウト シーケンスの先頭に別のフリートを追加します。
- フリートを削除してから、別のアップストリームまたはダウンストリーム フリートと組み合わせてフリートを追加し直すことで、ロールアウト順序でフリートの順序を変更します。
- ロールアウト順序の最初のフリートを削除します。
- ロールアウト順序の最後のフリートを削除します。
- ロールアウト順序の最初のフリートまたは最後のフリートを削除した後、ロールアウト順序の中央のフリートを取り除きます。
チーム - gcloud
アップストリーム チーム スコープを追加または変更するには、--upstream-scope
フラグを指定して gcloud container fleet scopes update
コマンドを使用します。アップストリーム チーム スコープを削除するには、--reset-upstream-scope
フラグを使用します。
次のような操作を行うことができます。
- シーケンスの最初のチームスコープにアップストリーム チームスコープを追加して、ロールアウト シーケンスの先頭に別のチームスコープを追加します。
- アップストリームのチームスコープの関連付けを変更して、ロールアウト シーケンス内のチームスコープの順序を変更します。
- 2 番目のチームスコープのアップストリーム チームスコープを削除して、ロールアウト シーケンスの最初のチームスコープを削除します。
グループのバージョン ロールアウトの完了を遅らせる
スコープがクラスタへの新しいバージョンのロールアウトを完了することを一時的に防止する必要がある場合は、メンテナンスの除外をターゲット バージョンにアップグレードされていないクラスタに追加できます。これにより、グループがソーク時間またはダウンストリーム グループに進むのを、最長 30 日間停止できます。30 日後にグループのソーク処理が開始されます。
そのグループのソーク時間を 30 日に変更することもできます。これにより、次のグループに進む前に、ロールアウト シーケンスの待機時間を最大化できます。
次のグループでアップグレードの開始をさらに遅らせる必要がある場合は、次のグループのクラスタにメンテナンスの除外を使用します。
フリートベースとチームベースのロールアウト シーケンスを切り替える
フリートベースのシーケンスからチームベースのシーケンスに、またはチームベースのシーケンスからフリートベースのシーケンスに切り替えることができます。以下の手順は、サンプル図に示されているように、シーケンス間を移動していることを前提としています。
フリートからチーム
クラスタをフリートベースのロールアウト シーケンスからチームベースのロールアウト シーケンスに変更するには、次の手順を行います。
- 各フリートのすべてのクラスタにメンテナンスの除外を構成し、構成の変更中にアップグレードが実施されないようにします。
- フリート ホスト プロジェクトで GKE Enterprise が有効になっていることを確認します。
- 各フリートで、フリート内のクラスタのグループを分割する 1 つ以上のチームスコープを作成します。
- 各フリートの一致するチームスコープ間に 1 つ以上のロールアウト シーケンスを作成します。
- クラスタを新しいチームスコープに追加します。
- この変更に構成したメンテナンスの除外を削除します。
チームからフリート
クラスタをチームベースのロールアウト シーケンスからフリートベースのロールアウト シーケンスに変更するには、次の手順を行います。
- 各フリートのすべてのクラスタにメンテナンスの除外を構成し、構成の変更中にアップグレードが実施されないようにします。
- フリート間のロールアウト シーケンスを作成します。
- クラスタをチームスコープから削除します。これで、これらのクラスタは、前のステップでロールアウト シーケンスに参加したスコープのそれぞれのフリートにのみ登録されます。
- チームスコープを削除します。
- この変更に構成したメンテナンスの除外を削除します。
シーケンスを削除する
シーケンスを削除するには、2 番目と 3 番目のグループのアップストリームの関連付けを削除します(ロールアウト シーケンスに 3 つのグループがある場合)。
これらの手順は、Google Cloud コンソール(プレビュー版、フリートベースのロールアウト順序のみ)または gcloud CLI で実行できます。
フリート - gcloud
ロールアウト シーケンスの 2 番目のフリートと 3 番目のフリートのフリート ホスト プロジェクトで次のコマンドを実行します。
gcloud container fleet clusterupgrade update --reset-upstream-fleet
フリート - コンソール
Google Cloud コンソールの [ロールアウトの順序付け] ページに移動します。
ロールアウト シーケンスのモニタリングのセクションでシーケンスを表示します。ロールアウト順序が表示されない場合は、別のロールアウト順序に切り替えるか、まだ作成していない場合はロールアウト順序を作成します。
[ロールアウト グラフ] で、3 つ目のフリートの要素をクリックします。
[フリートを削除] をクリックします。
フリートを取り消すには、[削除] をクリックします。
2 番目のフリートに対して、前の 3 つの手順を繰り返します。
チーム - gcloud
ロールアウト シーケンスの 2 番目のスコープと 3 番目のチームスコープのフリート ホスト プロジェクトで次のコマンドを実行します。
gcloud container fleet scopes update SCOPE_NAME --reset-upstream-scope
SCOPE_NAME
は、それぞれ 2 番目と 3 番目のスコープの名前に置き換えます。
トラブルシューティング
ロールアウトの適格性に関するトラブルシューティング
ロールアウト シーケンス内のすべてのクラスタでアップグレード ターゲットが同じでない場合、GKE はクラスタのアップグレードを続行できない可能性があります。アップストリーム グループがダウンストリーム グループに渡す 1 つのアップグレード ターゲットに認定されない場合、自動アップグレードを続行できません。アップストリーム グループ内のクラスタがダウンストリーム グループのクラスタに対して無効なアップグレード ターゲットになった場合も、自動アップグレードを続行できません。
ロールアウト シーケンスにロールアウトの適格性の問題があるかどうかを確認するには、ロールアウト シーケンスのステータスを確認します。グループが適格でない場合は、手順に従って、グループ内の個々のクラスタのステータスを確認します。
クラスタのアップグレードをすぐに進めるには、部分的に適格なロールアウトを進めるの手順に従って、INELIGIBLE
ステータスのクラスタを削除します。
グループ内の適格性を修正する
グループ内で、クラスタが以前のバージョンであるために不適格である場合(たとえば、グループ内のほとんどのクラスタが 1.23 から 1.24 にアップグレードされ、クラスタがバージョン 1.22 である場合)、手動でクラスタを 1.24 にアップグレードし、バージョンの不一致を解決します。
グループ内で、クラスタが以降のバージョンであるために不適格である場合(たとえば、グループ内のほとんどのクラスタが 1.23 から 1.24 にアップグレードされ、クラスタがバージョン 1.25 の場合)、バージョンの不一致を解決するためにクラスタを手動でダウングレードできないため、クラスタを削除する必要があります。
グループ間の適格性を修正する
グループ間で、ダウンストリーム グループが新しいバージョンであるアップグレード ターゲットで不一致がある場合(たとえば、アップストリーム グループが 1.23 から 1.24 にアップグレードされ、ダウンストリーム グループのクラスタが 1.25 の場合)、アップストリーム グループ内のクラスタを 1.25 に手動でアップグレードして、アップグレードを確実に続行します。
グループ間で、ダウンストリーム グループが以前のバージョンであるアップグレード ターゲットで不一致がある場合(たとえば、アップストリーム グループが 1.24 から 1.25 にアップグレードされ、ダウンストリーム グループのクラスタが 1.23 の場合)、ダウンストリーム グループ内のクラスタを 1.24 または 1.25 に手動でアップグレードして、アップグレードを確実に続行します。
部分的に適格なロールアウトを進める
ロールアウトの適格性に関する問題(たとえばグループ内のバージョンの違いなど)のために、グループ内のクラスタ アップグレードが完了しない場合は、グループのアップグレード ターゲットに不適格なクラスタをグループから削除し、バージョンのロールアウトを完了し、ソーク時間を開始するか、ロールアウト シーケンス内の次のグループに進みます。また、他の理由(たとえば、このクラスタの使用状況がグループ内の他のクラスタに関連していない場合)のために、グループからクラスタを削除することもできます。
ロールアウト シーケンスの種類に応じて、フリートからクラスタの登録を解除する、またはチームスコープからクラスタを削除するの手順に沿って操作します。
グループのバージョンのロールアウトが完了しない原因となっているクラスタをすべて削除すると、グループのバージョンのロールアウトが完了します。バージョンのロールアウトのステータスを確認するの手順に沿って、これを確認します。