2.9. 撤离节点上的 pod


通过撤离 pod,您可以迁移给定节点中的所有或选定 pod。节点必须首先标记为不可调度(unschedulable),才能执行 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 撤离与选择器匹配的节点上,而不是指定具体的节点名称。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.