このページでは、ノードの自動修復の仕組みと、Standard Google Kubernetes Engine(GKE)クラスタでこの機能を使用する方法について説明します。
ノードの自動修復は、GKE クラスタ内のノードの実行状態を正常に保つための機能です。この機能を有効にすると、GKE でクラスタ内の各ノードのヘルス状態が定期的にチェックされます。ノードが長期にわたって連続してヘルスチェックに失敗すると、GKE はそのノードの修復プロセスを開始します。
Autopilot と Standard の設定
Autopilot クラスタは常にノードを自動で修復します。この設定は無効にできません。
Standard クラスタでは、新しいノードプールに対するノードの自動修復は、デフォルトで有効になっています。既存のノードプールに対する自動修復を無効にすることはできますが、デフォルト構成のままにしておくことをおすすめします。
修復基準
GKE はノードのヘルス ステータスを使用して、ノードを修復する必要があるかどうかを判別します。Ready
ステータスを報告しているノードは、正常と見なされます。しきい値として指定された時間の間、ノードが連続して異常ステータスを報告すると、GKE は修復アクションをトリガーします。
異常ステータスとは、次のような状況を意味します。
- しきい値として指定された時間の間(約 10 分間)、ノードが連続して
NotReady
ステータスを報告する。 - しきい値として指定された時間の間(約 10 分間)、ノードがステータスを何も報告しない。
- ノードのブートディスクが長期間(約 30 分間)にわたり容量不足になっている。
ノードのヘルスシグナルは、kubectl get nodes
コマンドを使用して、いつでも手動で確認できます。
ノードの修復プロセス
修復を必要とするノードが GKE によって検出されると、そのノードはドレインされ、再作成されます。GKE はドレインが完了するまで 1 時間待ちます。ドレインが完了しない場合、ノードはシャットダウンされ、新しいノードが作成されます。
複数のノードで修復が必要な場合、GKE はそれらのノードを並行して修復することもできます。GKE は、クラスタのサイズと障害が発生したノードの数に応じて修復の数を調整します。大規模なクラスタの場合、GKE はより多くのノードを並列して修復しますが、異常なノードの数が増えると並列で修復するノードの数が少なくなります。
修復プロセスの最中にノードの自動修復を無効にした場合、処理中の修復はキャンセルされず、修復の対象になっているすべてのノードの修復が引き続き行われます。
ノード修復履歴
GKE は、自動修復イベントのログエントリを生成します。ログを確認するには、次のコマンドを実行します。
gcloud container operations list
TPU スライスノードでのノードの自動修復
マルチホスト TPU スライス ノードプール内の TPU スライスノードが異常で、自動修復が必要な場合、ノードプール全体が再作成されます。TPU スライスノードの状態の詳細については、TPU スライスノードの自動修復をご覧ください。
既存の Standard ノードプールの自動修復を有効にする
ノードの自動修復は、ノードプール単位で有効にします。
Standard クラスタの既存のノードプールで自動修復が無効になっている場合は、次の手順で有効にします。
gcloud
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--region=COMPUTE_REGION \
--enable-autorepair
次のように置き換えます。
POOL_NAME
: ノードプールの名前。CLUSTER_NAME
: Standard クラスタの名前。COMPUTE_REGION
: クラスタの Compute Engine のリージョン。ゾーンクラスタの場合は、--zone COMPUTE_ZONE
オプションを使用します。
コンソール
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
クラスタのリストで、変更するクラスタの名前をクリックします。
[ノード] タブをクリックします。
[ノードプール] で、変更するノードプールの名前をクリックします。
[ノードプールの詳細] ページで、[edit 編集] をクリックします。
[管理] で、[自動修復を有効化] チェックボックスをオンにします。
[保存] をクリックします。
Standard ノードプールでノードの自動修復が有効になっていることを確認する
ノードの自動修復は、ノードプール単位で有効になります。クラスタのノードプールでノードの自動修復が有効になっていることは、Google Cloud CLI または Google Cloud コンソールで確認できます。
gcloud
ノードプールの詳細を取得します。
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
ノードの自動修復が有効になっている場合、コマンドの出力には次の行が含まれます。
management:
...
autoRepair: true
コンソール
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
Google Kubernetes Engine ページで、検査するノードプールのクラスタ名をクリックします。
[ノード] タブをクリックします。
[ノードプール] で、検査するノードプールの名前をクリックします。
[管理] の [自動修復] フィールドで、自動修復が有効になっていることを確認します。
ノードの自動修復を無効にする
Standard クラスタでは、gcloud CLI または Google Cloud コンソールを使用して、既存のノードプールに対するノードの自動修復を無効にできます。
gcloud
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--region=COMPUTE_REGION \
--no-enable-autorepair
次のように置き換えます。
POOL_NAME
: ノードプールの名前。CLUSTER_NAME
: Standard クラスタの名前。COMPUTE_REGION
: クラスタの Compute Engine のリージョン。ゾーンクラスタの場合は、--zone COMPUTE_ZONE
オプションを使用します。
コンソール
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
クラスタのリストで、変更するクラスタの名前をクリックします。
[ノード] タブをクリックします。
[ノードプール] で、変更するノードプールの名前をクリックします。
[ノードプールの詳細] ページで、[edit 編集] をクリックします。
[管理] で、[自動修復を有効化] チェックボックスをオフにします。
[保存] をクリックします。