什么是 Node 的亲和性、反亲和性(污点和容忍度)

101 阅读1分钟

讨论对象

主要针对 Node 资源中 Pod 的调度

亲和性 概念

可以实现指定 Pod 应该调度到哪些节点上运行的调度策略,通过标签(Labels)和选择器(NodeSelectors)实现,分为硬性调度和软性调度

反亲和性

概念

通过给节点添加污点(taint),可以阻止一些 Pod 被调度到不适合它们的节点上,还可以把Pod 驱逐到其他 Node 中。

容忍度

容忍度有三种级别:

  • NoSchedule
    k8s 将不会将 Pod 调度到具有该污点的 Node 上
  • PreferNoSchedule
    K8S 将尽量避免将 Pod 调度到具有该污点的 Node 上
  • NoExecute
    K8S 不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去

配置方法

配置污点和容忍度有两种方法:

  • YMAL 文件配置
    在Pod 的 Spec 字段中使用tolerations字段来添加污点和容忍度
  • kubectl 配置
    kubectl taint 命令可以为 Node 添加污点并配置容忍度