6.7. 为基础架构节点分配机器设置资源


在创建了基础架构机器集后,workerinfra 角色将应用到新的 infra 节点。具有 infra 角色的节点不会计入运行环境所需的订阅总数中,即使也应用了 worker 角色。

但是,当为 infra 节点分配 worker 角色时,用户工作负载可能会意外地分配给 infra 节点。要避免这种情况,您可以将污点应用到 infra 节点,并为您要控制的 pod 应用容限。

6.7.1. 使用污点和容限绑定基础架构节点工作负载

如果您有一个分配了 infraworker 角色的基础架构节点,您必须配置该节点,以便不为其分配用户工作负载。

重要

建议您保留为基础架构节点创建的双 infra,worker 标签,并使用污点和容限来管理用户工作负载调度到的节点。如果从节点中删除 worker 标签,您必须创建一个自定义池来管理它。没有自定义池的 MCO 不能识别具有 masterworker 以外的标签的节点。如果不存在选择自定义标签的自定义池,维护 worker 标签可允许默认 worker 机器配置池管理节点。infra 标签与集群通信,它不计算订阅总数。

先决条件

  • 在 OpenShift Container Platform 集群中配置额外的 MachineSet 对象。

流程

  1. 为基础架构节点添加污点以防止在其上调度用户工作负载:

    1. 确定节点是否具有污点:

      $ oc describe nodes <node_name>

      输出示例

      oc describe node ci-ln-iyhx092-f76d1-nvdfm-worker-b-wln2l
      Name:               ci-ln-iyhx092-f76d1-nvdfm-worker-b-wln2l
      Roles:              worker
       ...
      Taints:             node-role.kubernetes.io/infra=reserved:NoSchedule
       ...

      本例显示节点具有污点。您可以在下一步中继续向 pod 添加容限。

    2. 如果您还没有配置污点以防止在其上调度用户工作负载:

      $ oc adm taint nodes <node_name> <key>=<value>:<effect>

      例如:

      $ oc adm taint nodes node1 node-role.kubernetes.io/infra=reserved:NoSchedule
      提示

      您还可以编辑 pod 规格来添加污点:

      apiVersion: v1
      kind: Node
      metadata:
        name: node1
      # ...
      spec:
        taints:
          - key: node-role.kubernetes.io/infra
            value: reserved
            effect: NoSchedule
      # ...

      这些示例在 node1 上放置一个具有 node-role.kubernetes.io/infra 键和 NoSchedule 污点效果的污点。具有 NoSchedule effect 的节点仅调度容许该污点的 pod,但允许现有 pod 继续调度到该节点上。

      注意

      如果使用 descheduler,则违反了节点污点的 pod 可能会从集群驱除。

  2. 为要在基础架构节点上调度的 pod 添加容限,如路由器、registry 和监控工作负载。引用前面的示例,在 Pod 对象规格中添加以下容限:

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
    
    # ...
    spec:
    # ...
      tolerations:
        - key: node-role.kubernetes.io/infra 1
          value: reserved 2
          effect: NoSchedule 3
          operator: Equal 4
    1
    指定添加到节点的键。
    2
    指定添加到节点的键值对污点的值。
    3
    指定添加到节点的效果。
    4
    指定 Equal Operator,以要求节点上存在一个键为 node-role.kubernetes.io/infra 的污点。

    此容忍度与 oc adm taint 命令创建的污点匹配。具有此容忍度的 pod 可以调度到基础架构节点上。

    注意

    并不总是可以通过 OLM 安装的 Operator 的 Pod 移到基础架构节点。移动 Operator Pod 的能力取决于每个 Operator 的配置。

  3. 使用调度程序将 pod 调度到基础架构节点。详情请参阅"使用调度程序控制 pod 放置"的文档。
  4. 在新的基础架构节点上,删除您不想或不属于的任何工作负载。请参阅"OpenShift Container Platform 基础架构组件"中在基础架构节点上支持的工作负载列表。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.