Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

2.9. 撤离节点上的 pod

通过撤离 pod,您可以迁移给定节点中的所有或选定 pod。节点必须首先 标记为不可调度,才能执行 pod 撤离。

只有由 复制控制器 支持的 pod 可以撤离;复制控制器在其他节点上创建新 pod,并从指定节点移除现有的 pod。裸机 pod(即不由复制控制器支持的 pod)默认情况下不受影响。您可以通过指定 pod 选择器来撤离一小部分 pod。pod 选择器基于标签,因此具有指定标签的所有 pod 将被撤离。

撤离节点上的所有或选定 pod:

$ oc adm drain <node> [--pod-selector=<pod_selector>]

您可以使用 --force 选项强制删除裸机 pod。设为 true 时,即使存在不由复制控制器、ReplicaSet、作业、daemonset 或 StatefulSet 管理的 pod,也会继续执行删除:

$ oc adm drain <node> --force=true

您可以使用 --grace-period 设置一个期限(以秒为单位),以便每个 pod 能够安全终止。如果为负,则使用 pod 中指定的默认值:

$ oc adm drain <node> --grace-period=-1

您可以使用 --ignore-daemonset 并将其设置为 true 以忽略 daemonset-managed pod:

$ oc adm drain <node> --ignore-daemonsets=true

您可以使用 --timeout 来设置放弃前要等待的时长。值为 0 时设定无限时长:

$ oc adm drain <node> --timeout=5s

您可以使用 --delete-local-data 并将其设置为 true 以继续删除,即使存在使用 emptyDir 的 pod(在节点排空时会删除本地数据):

$ oc adm drain <node> --delete-local-data=true

要列出将要迁移的对象而不实际执行撤离,请使用 --dry-run 选项并将其设置为 true

$ oc adm drain <node> --dry-run=true

您可以使用 --selector=<node_selector> 选项将 pod 撤离与选择器匹配的节点上,而不是指定具体的节点名称。