16.11.5. 节点问题的 Pod 驱除


OpenShift Container Platform 可以配置为用污点来代表节点不可访问节点未就绪状况。这样,就可以对每个 pod 设置在节点变得不可访问或未就绪时保持与节点绑定的时长,而不是使用默认的五分钟。

当启用 Taint Based Evictions 功能时,节点控制器会自动添加污点,并且禁用从 Ready 节点驱除 pod 的一般逻辑。

  • 如果节点进入未就绪状态,则添加 node.kubernetes.io/not-ready:NoExecute 污点,并且无法将 pod 调度到该节点上。现有 pod 在容限秒数期限内保留。
  • 如果节点进入不可访问状态,则添加 node.kubernetes.io/unreachable:NoExecute 污点,并且无法将 pod 调度到该节点上。现有 pod 在容限秒数期限内保留。

启用基于污点的驱除:

  1. 修改 master 配置文件(/etc/origin/master/master-config.yaml),将以下内容添加到 kubernetesMasterConfig 部分:

    kubernetesMasterConfig:
       controllerArguments:
         feature-gates:
         - TaintBasedEvictions=true
    Copy to Clipboard Toggle word wrap
  2. 检查污点是否已添加到节点:

    $ oc describe node $node | grep -i taint
    
    Taints: node.kubernetes.io/not-ready:NoExecute
    Copy to Clipboard Toggle word wrap
  3. 重启 OpenShift 以使更改生效:

    # master-restart api
    # master-restart controllers
    Copy to Clipboard Toggle word wrap
  4. 为 pod 添加容限:

    tolerations:
    - key: "node.kubernetes.io/unreachable"
      operator: "Exists"
      effect: "NoExecute"
      tolerationSeconds: 6000
    Copy to Clipboard Toggle word wrap

    或者

    tolerations:
    - key: "node.kubernetes.io/not-ready"
      operator: "Exists"
      effect: "NoExecute"
      tolerationSeconds: 6000
    Copy to Clipboard Toggle word wrap
注意

为了保持由于节点问题而导致 pod 驱除的现有 速率限制 行为,系统以限速方式添加污点。这可防止在主控机从节点分区等情形中发生大量 pod 驱除。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat