ノードの自動修復

このページでは、Google Kubernetes Engine(GKE)でノードの自動修復を構成する方法について説明します。

概要

GKE のノードの自動修復は、クラスタ内のノードの実行状態を正常に保つための機能です。この機能を有効にすると、GKE でクラスタ内の各ノードのヘルス状態が定期的にチェックされます。ノードが長期にわたって連続してヘルスチェックに失敗すると、GKE はそのノードの修復プロセスを開始します。

修復基準

GKE はノードのヘルス ステータスを使用して、ノードを修復する必要があるかどうかを判別します。Ready ステータスを報告しているノードは、正常と見なされます。しきい値として指定された時間の間、ノードが連続して異常ステータスを報告すると、GKE は修復アクションをトリガーします。 異常ステータスとは、次のような状況を意味します。

  • しきい値として指定された時間の間(約 10 分間)、ノードが連続して NotReady ステータスを報告する。
  • しきい値として指定された時間の間(約 10 分間)、ノードがステータスを何も報告しない。
  • ノードのブートディスクが長期間(約 30 分間)にわたり容量不足になっている。

ノードの修復プロセス

修復を必要とするノードが GKE によって検出されると、そのノードはドレインされ、再作成されます。GKE はドレインが完了するまで 1 時間待ちます。ドレインが完了しない場合、ノードはシャットダウンされ、新しいノードが作成されます。

複数のノードで修復が必要な場合、GKE はそれらのノードを並行して修復することもできます。GKE は、クラスタのサイズと障害が発生したノードの数に応じて修復の数を調整します。大規模なクラスタの場合、GKE はより多くのノードを並列して修復しますが、異常なノードの数が増えると並列で修復するノードの数が少なくなります。

修復プロセスの最中にノードの自動修復を無効にした場合、処理中の修復はキャンセルされず、その時点で修復の対象になっているすべてのノードの修復が行われます。

ノード修復履歴

GKE は、自動修復イベントのログエントリを生成します。ログを確認するには、gcloud container operations list コマンドを使用します。

ノードの自動修復を有効にする

ノードプール単位でノードの自動修復を有効にします。クラスタを作成する時点で、そのクラスタのデフォルト ノードプールの自動修復を有効にするか、無効にするかを選択できます。追加のノードプールを作成する場合、デフォルトのノードプールの自動修復設定とは独立して、そのノードプールでノードの自動修復を有効にするか、無効にするかを選択できます。

ノードの自動修復が有効になっているクラスタまたはノードプールを作成するには、gcloud ツールまたは Google Cloud Console を使用します。

ノードの自動修復が有効なクラスタを作成する

gcloud

gcloud container clusters create cluster-name --zone compute-zone \
  --enable-autorepair

Console

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

    Google Kubernetes Engine のメニューに移動

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

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

  4. ナビゲーション パネルで、変更するノードプールの下の [ノード] をクリックします。

  5. [自動修復を有効化] チェックボックスをオンにします。

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

自動修復が有効なノードプールを作成する

gcloud

gcloud container node-pools create pool-name --cluster cluster-name \
  --zone compute-zone \
  --enable-autorepair

Console

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

    Google Kubernetes Engine のメニューに移動

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

  3. [ノードプール] メニューから、[ノードプールを追加] をクリックします。

  4. 必要に応じてノードプールを構成します。ノードプールの [その他のオプション] をクリックします。

  5. [自動修復を有効化] をオンにします。

  6. [保存] をクリックしてノードプールの構成を保存します。

  7. もう一度 [保存] をクリックしてクラスタに変更を適用します。

既存のノードプールの自動修復を有効にする

gcloud

gcloud container node-pools update pool-name --cluster cluster-name \
  --zone compute-zone \
  --enable-autorepair

Console

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

    Google Kubernetes Engine のメニューに移動

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

  3. [ノードプール] メニューから、変更するノードプールの [その他のオプション] をクリックします。

  4. [自動修復を有効化] をオンにします。

  5. [保存] をクリックしてノードプールの構成を保存します。

  6. もう一度 [保存] をクリックしてクラスタに変更を適用します。

ノードの自動修復を無効にする

gcloud ツールまたは Google Cloud Console を使用して、既存のノードプールのノードの自動修復を無効にできます。

gcloud

gcloud container node-pools update pool-name --cluster cluster-name \
  --zone compute-zone \
  --no-enable-autorepair

Console

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

    Google Kubernetes Engine のメニューに移動

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

  3. [ノードプール] メニューから、変更するノードプールの [その他のオプション] をクリックします。

  4. [自動修復を有効化] をオフにします。

  5. [保存] をクリックしてノードプールの構成を保存します。

  6. もう一度 [保存] をクリックしてクラスタに変更を適用します。

次のステップ