ノードの自動修復

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

概要

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

v1beta1 API を使用するように gcloud を設定する

この機能を gcloud と一緒に使用するには、gcloud 用の v1beta1 API サーフェスを有効にする必要があります。これによって、gcloud beta container clusters コマンドを実行できます。

v1beta1 API を使用するように gcloud コマンドライン ツールを設定するには、シェルまたはターミナル ウィンドウで次のいずれかのコマンドを実行します。

export CLOUDSDK_CONTAINER_USE_V1_API_CLIENT=false
または
gcloud config set container/use_v1_api false

修復基準

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

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

ノードの修復プロセス

修復を必要とするノードが Kubernetes Engine によって検出されると、そのノードはドレインされ、再作成されます。ノードが応答しない、またはドレイン コマンドを処理できないほどの異常が発生している場合、ドレインは成功しないことがあります。

複数のノードで修復が必要な場合、Kubernetes Engine はそれらを並列で修復できます。Kubernetes Engine は、クラスタのサイズ(大きなクラスタほど高い制限が加えられる)とクラスタ内の破損したノードの数(複数のノードが破損した場合は制限が下がる)に応じて修復数を制限します。修復プロセスの最中にノードの自動修復を無効にした場合、処理中の修復はキャンセルされず、その時点で修復の対象になっているすべてのノードの修復が行われます。

Kubernetes Engine は、すべての自動修復イベントに対してオペレーション ログにエントリを生成します。gcloud container operations list コマンドを使用してログを確認できます。

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

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

Console

デフォルト ノードプールのノードの自動修復を有効にしてクラスタを作成するには、次の手順を行います。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

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

  3. 必要に応じてクラスタを設定します。次に、[ノードの自動修復] プルダウン メニューから [有効] を選択します。
  4. [作成] をクリックします。

ノードの自動修復が有効なノードプールを作成するには、次の手順を行います。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. 目的のクラスタを選択します。

  3. [編集] をクリックします。
  4. [ノードプール] メニューから、[ノードプールを追加] をクリックします。
  5. 必要に応じてノードプールを設定します。次に、[ノードの自動修復] プルダウン メニューから [有効] を選択します。
  6. [保存] をクリックします。

既存のノードプールのノードの自動修復を有効にするには、次の手順を行います。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. 目的のクラスタを選択します。

  3. [編集] をクリックします。
  4. [ノードプール] メニューから、目的のノードプールの横にある編集アイコンをクリックします。
  5. [ノードの自動修復] プルダウン メニューから、[有効] を選択します。
  6. [保存] をクリックします。

gcloud

ノードの自動修復が有効なクラスタまたはノードプールを作成するには、gcloud コマンドライン ツールを使用してクラスタまたはノードプールを作成するときに --enable-autorepair オプションを指定します。

自動修復が有効なクラスタを作成するには、次のコマンドを実行します。

gcloud beta container clusters create [CLUSTER_NAME] --zone [COMPUTE_ZONE] \
--enable-autorepair

自動修復が有効なノードプールを作成するには、次のコマンドを実行します。

gcloud beta container node-pools create [POOL_NAME] --cluster [CLUSTER_NAME] \
--zone [COMPUTE_ZONE] --enable-autorepair

既存のノードプールの自動修復を有効にするには、次のコマンドを実行します。

gcloud beta container node-pools update [POOL_NAME] --cluster [CLUSTER_NAME] \
--zone [COMPUTE_ZONE] --enable-autorepair

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

Console

既存のノードプールのノードの自動修復を無効にするには、次の手順を行います。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. 目的のクラスタを選択します。

  3. [編集] をクリックします。
  4. [ノードプール] メニューから、目的のノードプールの横にある編集アイコンをクリックします。
  5. [ノードの自動修復] プルダウン メニューから [無効] を選択します。
  6. [保存] をクリックします。

gcloud

特定のノードプールの自動修復を無効にするには、次のコマンドを実行します。

gcloud beta container node-pools update [POOL_NAME] --cluster [CLUSTER_NAME] \
--zone [COMPUTE_ZONE] --no-enable-autorepair

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...