2.9. Pod のノードからの退避
Pod を退避することで、すべての Pod または選択した Pod を 1 つの指定されたノードから移行できます。Pod の退避を実行するには、まずノードを スケジュール対象外としてマーク する必要があります。
レプリケーションコントローラー でサポートされる Pod のみを退避できます。レプリケーションコントローラーは他のノードで新規 Pod を作成し、既存の Pod を指定したノードから削除します。デフォルトで、ベア Pod (レプリケーションコントローラーでサポートされていない Pod) はこの影響を受けません。Pod セレクターを指定すると Pod のサブセットを退避できます。Pod セレクターはラベルをベースにしており、指定されたラベルのあるすべての Pod の退避が行われます。
ノードですべての Pod または選択した Pod を退避するには、以下を実行します。
$ oc adm drain <node> [--pod-selector=<pod_selector>]
--force
オプションを使用すると、ベア Pod の削除を強制的に実行できます。true
に設定されると、Pod がレプリケーションコントローラー、ReplicaSet、ジョブ、DeamonSet、または StatefulSet で管理されていない場合でも削除が続行されます。
$ oc adm drain <node> --force=true
--grace-period
を使用して、各 Pod を正常に終了するための期間 (秒単位) を設定できます。負の値の場合には、Pod に指定されるデフォルト値が使用されます。
$ oc adm drain <node> --grace-period=-1
--ignore-daemonsets
を使用し、これを true
に設定すると、Deamonset で管理された Pod を無視できます。
$ oc adm drain <node> --ignore-daemonsets=true
--timeout
を使用すると、中止する前の待機期間を設定できます。値 0
は無限の時間を設定します。
$ oc adm drain <node> --timeout=5s
--delete-local-data
を使用し、これを true
に設定すると、Pod が emptyDir (ノードがドレイン (解放) される場合に削除されるローカルデータ) を使用する場合でも削除が続行されます。
$ oc adm drain <node> --delete-local-data=true
退避を実行せずに移行するオブジェクトを一覧表示するには、--dry-run
オプションを使用し、これを true
に設定します。
$ oc adm drain <node> --dry-run=true
特定のノード名を指定する代わりに、--selector=<node_selector>
オプションを使用し、セレクターに一致するノードの Pod を退避することができます。