6.2. ノードの使用
管理者は、複数のタスクを実行して、クラスターを効率化できます。
6.2.1. Pod のノードからの退避 リンクのコピーリンクがクリップボードにコピーされました!
特定のノードから Pod を削除 (退避) することができます。Pod の退避機能を使用すると、すべての Pod または選択した Pod を他のノードに移行できます。
レプリケーションコントローラーによってバックアップされている Pod のみを退避させることができます。レプリケーションコントローラーは、他のノードに新しい Pod を作成し、指定されたノードから既存の Pod を削除します。
ベア Pod、つまりレプリケーションコントローラーが管理していない Pod はデフォルトで影響を受けません。Pod セレクターを指定することで、一部の Pod を退避させることができます。Pod セレクターはラベルに基づいて動作するため、指定されたラベルを持つすべての Pod が空にされます。
手順
Pod の退避を実行する前に、ノードをスケジュール不可としてマークしてください。
次のコマンドを実行して、ノードをスケジュール対象外としてマークします。
$ oc adm cordon <node1>出力例
node/<node1> cordoned次のコマンドを実行して、ノードの状態が
準備完了、スケジューリング無効になっていることを確認してください。$ oc get node <node1>出力例
NAME STATUS ROLES AGE VERSION <node1> Ready,SchedulingDisabled worker 1d v1.29.4
以下のいずれかの方法を使用して、Pod から避難してください。
oc adm drainコマンドを実行して、1 つまたは複数のノード上のすべての Pod または選択した Pod を退避させます。$ oc adm drain <node1> <node2> [--pod-selector=<pod_selector>]oc adm drainコマンドに--forceオプションを使用することで、ベア Pod の削除を強制できます。trueに設定すると、レプリケーションコントローラー、レプリカセット、ジョブ、デーモンセット、またはステートフルセットによって管理されていない Pod が存在する場合でも、削除が続行されます。$ oc adm drain <node1> <node2> --force=trueoc adm drainコマンドで--grace-periodオプションを使用することで、各 Pod が正常に終了するまでの時間を秒単位で設定できます。負の値の場合には、Pod に指定されるデフォルト値が使用されます。$ oc adm drain <node1> <node2> --grace-period=-1oc adm drainコマンドで--ignore-daemonsets=trueオプションを使用すると、デーモンセットによって管理されている Pod を無視できます。$ oc adm drain <node1> <node2> --ignore-daemonsets=trueoc adm drainコマンドの--timeoutオプションを使用して、処理を諦めるまでの待機時間を設定します。値が0の場合は、無限の時間を表します。$ oc adm drain <node1> <node2> --timeout=5soc adm drainコマンドで--delete-emptydir-data=trueオプションを設定することで、emptyDirボリュームを使用している Pod が存在する場合でも Pod を削除できます。ノードがドレインされると、ローカルデータは削除されます。$ oc adm drain <node1> <node2> --delete-emptydir-data=trueoc adm drainコマンドで--dry-run=trueオプションを使用することで、実際に避難処理を実行せずに移行されるオブジェクトをリスト表示します。$ oc adm drain <node1> <node2> --dry-run=true特定のノード名 (例:
<node1> <node2>) を指定する代わりに、oc adm drainコマンドで--selector=<node_selector>オプションを使用すると、選択したノード上の Pod を退避させることができます。
完了したら、以下のコマンドを使用してノードをスケジュール可能としてマークしてください。
$ oc adm uncordon <node1>