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次のコマンドを実行して、ノードのステータスが
Ready,SchedulingDisabledであることを確認します。$ 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 を削除できます。ローカルデータはノードが drain される場合に削除されます。$ 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>