ワーカーノードをノードプールまたは ACK クラスターから削除し、オプションで Pod をドレインしてインスタンスをリリースします。
ユースケース
-
[ECS インスタンスの置換]:既存の Elastic Compute Service (ECS) インスタンスをノードプールから削除し、新しいインスタンスを追加します。
-
ノードプール間でのノードの移動:現在のノードプールからノードを削除し、ターゲットのノードプールに追加します。
-
インスタンス設定または課金方法の変更:ノードを削除し、ECS コンソールで変更を加え、ノードをノードプールに再追加します。
-
ノードの異常の修正:ノードを削除して再追加することで、再初期化をトリガーします。この操作はシステムディスクを交換してノードをリセットするため、事前にシステムディスクのデータをバックアップしてください。
-
フリーノードの管理:ノードプール機能がリリースされる前に作成されたクラスターには、フリーノードが含まれている場合があります。これらを削除するか、ノードプールに移動して一元管理します。
-
スケールイン対象の制御:手動または自動スケールアウトが有効になっているノードプールをスケールインする際に、特定の ECS インスタンスを削除してコストを削減します。
前提条件
以下の点を確認してください。
-
クラスター内の他のノードに、退去する Pod をホストするための十分なリソースがあること。
-
Pod アフィニティルールとスケジューリングポリシーが、他のノードへの再スケジューリングを許可していること。
仕組み
ACK コンソールでノードを削除すると、システムは以下の処理を順に実行します。
-
ドレイン ([ノードのドレイン] が選択されている場合) :ACK は、PodDisruptionBudget (PDB) の設定に従って、他の利用可能なノードに Pod を退去させます。Pod のグレースフルシャットダウン期間は、
terminationGracePeriodSecondsに関係なく、最大 30 分です。この期間内に Pod が終了しない場合、ドレインは失敗し、後続のステップはスキップされるため、手動で再試行する必要があります。 -
削除:ノードがクラスターまたはノードプールから削除されます。
-
リリース ([ECS インスタンスのリリース] が選択されている場合) :ECS インスタンスとアタッチされたデータディスクがリリースされます。
[期待されるノード数] が設定されている場合、ノードプールは削除後に期待される数を維持するために自動的にスケールアウトします。
注意事項
-
ノードは ACK コンソールから削除してください。
kubectl delete node、ECS コンソール、Auto Scaling コンソール、または API を使用して ECS インスタンスを削除またはリリースしないでください。 -
サブスクリプションの ECS インスタンスは、有効期限が切れる前に更新してください。有効期限が切れたり、リリースされたりしたインスタンスは、ノードが停止し、ACK コンソールから削除される原因となります。
-
[期待されるノード数] が設定されている場合、ノードプールは削除後に期待される数を維持するために自動的にスケールアウトします。システムディスクとデータディスクのライフサイクルはノードに紐づいています。削除時にノードがリリースされると、アタッチされたディスクもリリースされ、すべてのデータは完全に削除され、復旧できません。ノードのライフサイクルを超えてデータを永続化するには、PersistentVolume (PV) を使用してください。
ノードプールからのノードの削除
ノードを削除すると、Pod が他のノードに移行するため、一時的にサービスが中断される可能性があります。ノードのデータをバックアップし、オフピーク時に削除を実行してください。
-
[クラスター] ページで、対象のクラスターをクリックします。左側メニューで、 [ノード] > [ノードプール] を選択します。
-
ノードを含むノードプールの名前をクリックします。 [ノード] タブで、削除するノードを選択し、ページ下部の [一括削除] をクリックします。
-
削除オプションを設定します。
-
[ノードのドレイン]:ACK は削除前に Pod を他のノードに退去させます。すでにノードをドレインした場合にのみ、このチェックボックスをオフにしてください。
Pod のグレースフルシャットダウン期間が 30 分を超える場合は、まず手動でノードをドレインし、次に [ノードのドレイン] のチェックボックスをオフにしてから続行してください。
kubectl drain <nodeName> [options]プレースホルダー
説明
例
<nodeName>ノード名 (
<region-id>.<instance-id>形式)cn-hangzhou.i-bp1asavedmte377c3****[options]オプションのドレインフラグ
--force --ignore-daemonsets --delete-local-dataすべてのオプションを確認するには、
kubectl drain --helpを実行してください。 -
[ECS インスタンスのリリース]:選択した場合、ECS インスタンスとアタッチされたデータディスクがリリースされます。この方法でリリースできるのは、従量課金のインスタンスのみです。選択しない場合、インスタンスは削除後も課金され続けます。サブスクリプションのインスタンスは、有効期限が切れると自動的にリリースされます。Auto Mode が有効なノードプールでは、システムが自動的にノードのライフサイクルを管理し、ワークロードの需要に基づいてノードをスケーリングし、ノードが削除されると基盤の ECS リソースも完全に削除されます。サブスクリプションのインスタンスを有効期限前にリリースするには、返金をリクエストするか、課金方法を従量課金に変更してからリリースしてください。
-
-
画面の指示に従って、削除を完了します。
-
ノードが削除されたことを確認します。
kubectl get nodes削除されたノードは出力に表示されなくなります。
クラスターからのノードの削除
ノードを削除すると、Pod が他のノードに移行するため、一時的にサービスが中断される可能性があります。ノードのデータをバックアップし、オフピーク時に削除を実行してください。
-
ACK コンソールにログインします。左側メニューで [クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスターをクリックします。左側メニューで、 [ノード] > [ノード] を選択します。
-
削除するノードを選択し、ページ下部の [一括削除] をクリックします。
-
削除オプションを設定します。
-
[ノードのドレイン]:ACK は削除前に Pod を他のノードに退去させます。すでにノードをドレインした場合にのみ、このチェックボックスをオフにしてください。
Pod のグレースフルシャットダウン期間が 30 分を超える場合は、まず手動でノードをドレインし、次に [ノードのドレイン] のチェックボックスをオフにしてから続行してください。
kubectl drain <nodeName> [options]プレースホルダー
説明
例
<nodeName>ノード名 (
<region-id>.<instance-id>形式)cn-hangzhou.i-bp1asavedmte377c3****[options]オプションのドレインフラグ
--force --ignore-daemonsets --delete-local-dataすべてのオプションを確認するには、
kubectl drain --helpを実行してください。 -
[ECS インスタンスのリリース]:選択した場合、ECS インスタンスとアタッチされたデータディスクがリリースされます。この方法でリリースできるのは、従量課金のインスタンスのみです。選択しない場合、インスタンスは削除後も課金され続けます。サブスクリプションのインスタンスは、有効期限が切れると自動的にリリースされます。サブスクリプションのインスタンスを有効期限前にリリースするには、返金をリクエストするか、課金方法を従量課金に変更してからリリースしてください。
-
-
画面の指示に従って、削除を完了します。
-
ノードが削除されたことを確認します。
kubectl get nodes削除されたノードは出力に表示されなくなります。
削除後、ノードをクラスターに再追加できます。
トラブルシューティング
ノード削除の失敗
ノードの削除は、通常、Pod が 30 分のグレースフルシャットダウン期間を超えた場合、または PodDisruptionBudget (PDB) が退去をブロックした場合に失敗します。
ノードを手動でドレインし、[ノードのドレイン] のチェックボックスをオフにしてから削除してください。
kubectl drain <nodeName> --force --ignore-daemonsets --delete-local-data
<nodeName> を <region-id>.<instance-id> 形式のノード名 (例: cn-hangzhou.i-bp1asavedmte377c3****) に置き換えます。
PDB がドレインをブロックする場合は、中断の許容範囲に合わせて PDB の設定を更新してから、再試行してください。
次のステップ
-
ノードをクラスターに再追加する: 既存の ECS インスタンスを ACK クラスターに追加するまたは ノードを自動的に追加する
-
期待されるノード数を調整してノードプールをスケーリングする: ノードプールを手動でスケーリングする
-
APIを介してノードを削除する: RemoveNodePoolNodes および DeleteClusterNodes
-
ノードのシステムディスクをリセットする: システムディスクを再初期化する