すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:クラスタまたはノードプールからノードを削除する

最終更新日:Feb 27, 2025

ワーカーノードが不要になった場合は、Container Service for Kubernetes(ACK)コンソールで、ノードが属するノードプールまたはクラスタからノードを削除できます。このトピックでは、ノードプールまたはクラスタからノードを削除する方法と、関連する使用上の注意について説明します。オフピーク時にノードを削除することをお勧めします。

シナリオ

  • ノードプール機能がリリースされる前に作成されたクラスタには、フリーノードが存在します。クラスタからフリーノードを削除する必要がある場合があります。また、クラスタ内のノードプールにフリーノードを再度追加する必要がある場合もあります。ノードプールは、ノード管理を容易にします。

  • ノードプール内の既存の Elastic Compute Service(ECS)インスタンスを、新しく購入した ECS インスタンスに置き換えたい場合。

  • ノードプールに対して手動スケールアウトまたは自動スケールアウトを有効にしており、スケールインアクティビティ中に指定された ECS インスタンスを削除してコストを削減したい場合。

  • ノードをノードプールから別のノードプールに移動したい場合。この場合、元のノードプールからノードを削除してから、別のノードプールにノードを追加する必要があります。

  • ECS インスタンスの構成を変更したい場合。この場合、ノードプールからノードを削除し、ECS コンソールでインスタンス構成を変更してから、ノードをノードプールに再度追加する必要があります。

  • ECS インスタンスの課金方法を変更したい場合。たとえば、ECS インスタンスの課金方法を従量課金からサブスクリプションに変更したい場合。この場合、ノードプールからノードを削除し、ECS コンソールで課金方法を変更してから、ノードをノードプールに再度追加する必要があります。

  • ノードの例外を修正したい場合。この場合、クラスタからノードを削除してから、クラスタにノードを再度追加して初期化する必要があります。

    この操作は、ノードをリセット(システムディスクの置き換え)することによって実行されます。この操作を実行する前に、システムディスクのデータをバックアップしてください。

使用上の注意

  • ノードを削除する場合は、Container Service コンソール にログインし、このトピックで説明されている手順を実行します。kubectl delete node コマンドを実行してノードを削除しないでください。

  • ECS コンソールまたは Auto Scaling コンソールで、あるいは API 操作を呼び出すことによって、ECS インスタンスをリリースまたは削除しないでください。サブスクリプションの ECS インスタンスは、有効期限が切れる前に更新してください。ECS インスタンスがリリースまたは有効期限切れになると、インスタンスにデプロイされているノードは実行を停止し、ACK コンソールから削除されます。

    ノードプールに「予想ノード数」パラメータが構成されている場合、ノードプールは予想される ECS インスタンス数を維持するために自動的にスケーリングされます。

  • ノードを削除すると、ノード上のポッドは他のノードに移行されます。これにより、サービス中断が発生する可能性があります。オフピーク時にノードを削除することをお勧めします。ノードを削除すると、予期しないリスクが発生する可能性があります。ノードを削除する前に、ノード上のデータをバックアップすることをお勧めします。

  • ノードを削除すると、システムはノードをドレインします。クラスタ内の他のノードが、削除するノードからエビクトされたポッドをホストするのに十分なリソースを提供できることを確認してください。

  • 削除するノード上のポッドを他のノードに正常にスケジュールできるように、ポッドのノードアフィニティルールとスケジューリングポリシーが要件を満たしているかどうかを確認することをお勧めします。

機能の説明

1 つ以上のワーカーノードをノードプールまたはクラスタから削除できます。ノードプールに [予想ノード数] パラメータが構成されている場合、ノードプールは予想される ECS インスタンス数を維持するために自動的にスケーリングされます。

クラスタからノードを削除した後、クラスタにノードを再度追加できます。詳細については、「ノードを自動または手動で追加する」をご参照ください。

ACK コンソールでノードを削除するときに、「ノードのドレイン」チェックボックスと「ECS インスタンスのリリース」チェックボックスを選択またはクリアできます。「ノードのドレイン」チェックボックスは、ノードを自動的にドレインする(ポッドを他のノードにエビクトする)かどうかを指定します。「ECS インスタンスのリリース」チェックボックスは、ECS インスタンスをリリースする(インスタンスとインスタンスにアタッチされているデータディスクをリリースする)かどうかを指定します。

ノードのドレイン

[ノードのドレイン] チェックボックスを選択すると、システムはノードをドレインしてポッドを他のノードにエビクトします。これにより、サービス中断を防ぎます。ノードをドレインする前に、クラスタ内の他のノードが、削除するノードからエビクトされたポッドをホストするのに十分なリソースを提供できることを確認してください。次の点に注意してください。

  • 安全停止期間:ノードの削除中、ポッドのデフォルトの安全停止期間は 30 分です。ポッドの安全停止期間(terminationGracePeriodSeconds)を 30 分より大きい値(例:40 分)に設定した場合、デフォルトの安全停止期間(30 分)が優先されます。ポッドが 30 分以内に安全にシャットダウンされない場合、ドレインプロセスは停止し、失敗とみなされます。この場合、システムは後続のノード削除操作を実行しません。ドレインプロセスを手動で再試行する必要があります。

    ビジネスポッドの安全停止期間に対する要件が高い場合は、kubectl drain <nodeName> [options] コマンドを実行してノードを手動でドレインしてから、ノードを削除することをお勧めします。すべてのビジネスポッドがノードからエビクトされた後、[ノードのドレイン] をクリアしてから、ノードを削除します。

    クリックしてコマンドの説明を表示

    • <nodeName>値を <your-region-name>.<node-id> 形式で設定します。

      <your-region-name>:クラスタのリージョン名に設定します。<node-id>:削除するノードの ECS インスタンス ID に設定します。例:cn-hangzhou.i-i-bp1asavedmte377c3****。

    • options:このパラメータはオプションです。例:--force --ignore-daemonsets --delete-local-data。ノードドレインの構成方法の詳細については、kubectl drain --help コマンドを実行してください。

  • PodDisruptionBudget(PDB) 構成:ドレインプロセス中、ACK はポッドに構成されている PDB に基づいて、ノードから他の使用可能なノードにポッドをエビクトします。ドレインプロセス中の問題を防ぐために、実際のニーズに基づいて PDB を確認および変更することをお勧めします。

ECS インスタンスのリリース

[ECS インスタンスのリリース] チェックボックスを選択すると、ノードの削除時に ECS インスタンスとインスタンスにアタッチされているデータディスクがリリースされます。この場合、最初にノード上のデータをバックアップすることをお勧めします。「ECS インスタンスのリリース」チェックボックスをオフにした場合、ノードを削除した後もインスタンスの課金は継続されます。

  • 対応するノードが削除されたときにリリースできるのは、従量課金の ECS インスタンスとインスタンスにアタッチされているデータディスクのみです。リリースされていない ECS インスタンスについては、引き続き課金されます。

  • サブスクリプションの ECS インスタンスは、サブスクリプションの有効期限が切れると自動的にリリースされます。有効期限前にサブスクリプションの ECS インスタンスをリリースするには、サブスクリプション期間が終了する前に 払い戻しをリクエスト してください。また、インスタンスの課金方法をサブスクリプションから従量課金に変更 してから、インスタンスをリリースすることもできます。

手順

ノードプールからノードを削除する

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. ノードが属するノードプールの名前をクリックします。[ノード] タブで、削除するノードを選択し、ページの下部にある [一括削除] をクリックします。

  4. [ノードのドレイン][ECS インスタンスのリリース] を選択またはクリアします。使用上の注意を読んで理解し、画面の指示に従ってノードを削除します。

    [ノードのドレイン][ECS インスタンスのリリース] ダイアログボックスの詳細については、「機能の説明」をご参照ください。

クラスタからノードを削除する

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. 削除するノードを選択し、ページの下部にある [一括削除] をクリックします。

  4. [ノードのドレイン][ECS インスタンスのリリース] を選択またはクリアします。使用上の注意を読んで理解し、画面の指示に従ってノードを削除します。

    [ノードのドレイン][ECS インスタンスのリリース] ダイアログボックスの詳細については、「機能の説明」をご参照ください。

よくある質問

ノードの削除に失敗した場合はどうすればよいですか?

ノードの削除に失敗する原因として、ノード上のポッドに構成されている安全停止期間と PDB が考えられます。詳細については、「機能の説明」をご参照ください。この場合、kubectl drain <nodeName> [options] コマンドを実行してノードを手動でドレインしてから、ノードを削除することをお勧めします。すべてのビジネスポッドがノードからエビクトされた後、ノードを削除します。

  • <nodeName>値を <your-region-name>.<node-id> 形式で設定します。

    <your-region-name>:クラスタのリージョン名に設定します。<node-id>:削除するノードの ECS インスタンス ID に設定します。例: cn-hangzhou.i-i-bp1asavedmte377c3****。

  • options:このパラメータはオプションです。例:--force --ignore-daemonsets --delete-local-data。ノードドレインの構成方法の詳細については、kubectl drain --help コマンドを実行してください。

関連情報