メンテナンスの時間枠と除外の構成

このページでは、メンテナンスの時間枠とメンテナンスの除外について説明します。これにより、自動アップグレードなどのクラスタの自動メンテナンスを Google Kubernetes Engine(GKE)クラスタで実行するタイミングを指定できるようになります。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. デフォルトの Compute Engine ゾーンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project project-id
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone compute-zone
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region compute-region
  • gcloud を最新バージョンに更新します。
    gcloud components update

メンテナンスの時間枠の構成

メンテナンスの時間枠を構成するには、メンテナンスの開始時間、期間、繰り返しの回数を構成します。たとえば、月曜日から金曜日まで毎週繰り返すメンテナンスの時間枠を構成できます。

メンテナンスの時間枠の構成には、Google Cloud Console または gcloud コマンドを使用します。

シンプルなメンテナンスの時間枠を設定したクラスタの作成

gcloud--maintenance-window フラグを指定して、シンプルなメンテナンスの時間枠を作成できます。このフラグを使用すると、毎日 4 時間のメンテナンスの時間枠を簡単な形式で指定できます。

シンプルなメンテナンスの時間枠を設定した新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create cluster-name \
  --maintenance-window start-time

ここで

  • cluster-name は、新しいクラスタの名前です。
  • start-time は、UTC 時間での 24 時間形式のタイムスタンプに設定します(例: 16:00)。

メンテナンスの時間枠は、start-time で指定された時刻から毎日 4 時間実行されます。

メンテナンスの時間枠を設定したクラスタの作成

メンテナンスの時間枠を設定した新しいクラスタを作成するには、gcloud ツールまたは Google Cloud Console を使用します。

gcloud

メンテナンスの時間枠を設定した新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

ここで

  • cluster-name は、新しいクラスタの名前です。
  • start-timeRFC-5545 DTSTART です。
  • end-timestart-time の形式で指定します。これは、メンテナンスの時間枠の期間の計算でのみ使用されます。end-time の値は、start-time より後の日時でなければなりません。
  • rrule は、RFC-5545 RRULE です。これは非常に柔軟な形式で、いくつかの方法で繰り返しルールを指定できます。

たとえば、次のコマンドを実行すると、2019 年 8 月 1 日の午前 2 時(UTC)に始まり、4 時間後に終了し、毎日実行されるメンテナンスの時間枠が設定された my-cluster というクラスタが作成されます。日付と時刻の形式について詳細をご確認ください。

gcloud container clusters create my-cluster \
  --maintenance-window-start 2019-08-01T02:00:00Z \
  --maintenance-window-end 2019-08-01T06:00:00Z \
  --maintenance-window-recurrence FREQ=DAILY

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [クラスタを作成] ボタンをクリックします。

  3. 必要に応じてクラスタを構成します。

  4. ナビゲーション パネルで、[クラスタ] の下の [自動化] をクリックします。

  5. [メンテナンスの時間枠を有効化] チェックボックスをオンにします。

  6. 開始時間と長さを選択し、メンテナンスの時間枠が発生する曜日を選択します。RRULE を直接編集するには、カスタム エディタに切り替えます。

  7. [作成] をクリックします。

既存のクラスタのメンテナンスの時間枠の構成

gcloud

既存のクラスタのメンテナンスの時間枠を作成または更新するには、次のコマンドを実行します。

gcloud container clusters update cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

ここで

  • cluster-name は、既存のクラスタの名前です。
  • start-timeRFC-5545 DTSTART です。
  • end-timestart-time の形式で指定します。これは、メンテナンスの時間枠の期間の計算でのみ使用されます。end-time の値は、start-time より後の日時でなければなりません。
  • rrule は、RFC-5545 RRULE です。これは非常に柔軟な形式で、いくつかの方法で繰り返しルールを指定できます。

Console

既存のクラスタのメンテナンスの時間枠を作成または変更するには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [メンテナンスの時間枠] セクションで開始時間と期間を選択し、メンテナンスの時間枠が発生する曜日を選択します。RRULE を直接編集するには、カスタム エディタに切り替えます。

  4. [保存] をクリックします。

未完了のメンテナンスを手動で終了する

アップグレードなどの自動メンテナンスがメンテナンスの時間枠よりも長くかかる場合、GKE は実行中のメンテナンス タスクを終了し、次のメンテナンスの時間枠の中でメンテナンス タスクを再開しようとします。自動アップグレードがキャンセルされ、ノードの自動アップグレードが有効になっている場合、ノードのバージョンが混在する可能性がありますが、クラスタは正常に動作します。

クラスタを手動でアップグレードするか、部分的なアップグレードをキャンセルまたはロールバックする場合は、クラスタの手動アップグレードをご覧ください。

メンテナンスの時間枠の削除

gcloud

クラスタからメンテナンスの時間枠を削除するには、次のコマンドを実行します。

gcloud container clusters update cluster-name --clear-maintenance-window

cluster-name は既存のクラスタの名前です。

Console

メンテナンスの時間枠を削除するには:

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [メンテナンスの時間枠] プルダウン リストから、[無効] を選択します。

  4. [保存] をクリックします。

メンテナンスの時間枠の例

次の例では、メンテナンスの時間枠を構成する方法をいくつか説明します。コマンドのフラグは、クラスタの新規作成や更新と同じ構文を使用するので、ここでは関連するフラグのみを示します。

毎週火曜日と水曜日(終日)、2019 年 8 月 27 日から開始

この例では、start と end のタイムスタンプの差が 1 日のため、メンテナンスの時間枠は 24 時間、火曜日と水曜日の両方で実行されます。

--maintenance-window-start 2019-08-27T00:00:00Z \
--maintenance-window-end 2019-08-28T00:00:00Z \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=TU,WE'
平日の午前 9 時から午後 5 時(UTC-4)

この例では、週末を除く、月曜日から金曜日までにメンテナンスの時間枠を設定しています。この例では、UTC 以外のタイムゾーンを指定しています。

--maintenance-window-start 2019-09-02T09:00:00-04:00 \
--maintenance-window-end 2019-09-02T17:00:00-04:00 \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR'
毎週午後 4 時から 8 時間(UTC-7)

--maintenance-window-start にタイムゾーンを指定しない場合、Google Cloud アカウントで構成されている現地時間が使用されます。Google Cloud Console は常に現地時間を使用しています。

--maintenance-window-start 2019-08-13T16:00:00-7:00 \
--maintenance-window-end 2019-08-14T00:00:00-7:00 \
--maintenance-window-recurrence FREQ=WEEKLY

メンテナンスの除外の構成

メンテナンスの除外を構成するには、名前(省略可)、開始時間、終了時間を構成します。メンテナンスの除外は、複数の日にまたがることがあります。

メンテナンスの除外では、32 日間のローリング ウィンドウ内で少なくとも 48 時間はメンテナンスが可能な状態にする必要があります。メンテナンスの時間枠の期間は、最大メンテナンスの除外に直接影響し、次の数式を使用して計算できます。

maximum maintenance exclusion (days) = 32-day rolling window - 48 hours maintenance availability / maintenance window hours per day

たとえば、通常のメンテナンスの時間枠が 4 時間の場合、最大メンテナンスの除外は 20 日間(32 - 48÷4 = 20)になります。

特定の時間に 1 つのクラスタに構成できるメンテナンス除外は 3 つまでです。発生したかどうかにかかわらず、メンテナンスの除外は手動で削除できます。

メンテナンスの除外を構成するには、Google Cloud Console または gcloud コマンドを使用します。

メンテナンスの除外を使用したクラスタの作成

既存のクラスタにメンテナンスの除外対象を作成または変更するには:

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [メンテナンスの除外] セクションで、[メンテナンスの除外を追加します] を選択します。開始時間と終了時間を選択します。

  4. [保存] をクリックします。

ブラック フライデーのメンテナンスの除外の例をご覧ください。

メンテナンスの除外の削除

1 つのクラスタに同時に設定できるメンテナンスの除外は 3 つまでです。これらの除外はアクティブで、継続期間内である必要があります。

gcloud

既存のメンテナンスの除外を削除するには、次のコマンドを実行します。

gcloud container clusters update cluster-name \
  --remove-maintenance-exclusion exclusion-name

ここで

  • cluster-name は、既存のクラスタの名前です。
  • exclusion-name は、削除するメンテナンスの除外の名前です。

Console

既存のクラスタからメンテナンスの除外を削除するには:

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [メンテナンスの除外] セクションで、削除する除外の横にある [X] をクリックします。

  4. [保存] をクリックします。

クラスタのメンテナンスの除外をすべて表示するには、クラスタのメンテナンス ポリシーを表示します。

メンテナンスの除外の例

次の例では、ブラック フライデーからサイバー マンデーまでの 4 日間にわたりメンテナンスを除外しています。多くの小売店にとって、この時期は 1 年で最も売り上げが見込める期間です。次の例は、今年のブラック フライデー(2019 年 11 月 29 日)からサイバー マンデー(2019 年 12 月 2 日)、東海岸の午前 0 時(UTC-5)から西海岸の 23:59:59(UTC-7)までの間、メンテナンスの時間枠の実行をブロックする方法を説明します。

gcloud container clusters update sample-cluster \
 --add-maintenance-exclusion-name black-friday \
 --add-maintenance-exclusion-start 2019-11-29T00:00:00-05:00 \
 --add-maintenance-exclusion-end 2019-12-02T23:59:59-07:00

クラスタのメンテナンス ポリシーの表示

クラスタのメンテナンス ポリシーを表示するには、次のコマンドを使用します。これにより、メンテナンス ポリシーにメンテナンスの時間枠が設定されているかどうかと、すべてのメンテナンスの除外も表示されます。

gcloud container clusters describe cluster-name

次のステップ