• 节点上的污点
  • pod 对污点的容忍度

  • 节点选择器

  • 节点亲缘性

16.1.1 介绍污点和容忍度

主节点需要设置污点.

显示节点的污点信息

image.png

格式:

  1. <key>=<value>:<effect>

上面的 taints 中:

  • key: node-role.kubernetes.io/master
  • value: 无
  • effect: NoSchedule

通常容忍这个污点的是系统级 pod.

image.png

显示 pod 的污点容忍度

image.png

注意:

尽管在 pod 的污点 容 忍度中显示了等号 ,但是在节 点的污点信息中却没有 。当污点 或者 污点 容忍度 中的 value 为 null 时, kubectl 故 意将 污点和污点容忍 度进行不同形式的显示 。

了解污点的效果

  • NoSchedule 表示如果 pod 没有容忍这些污点, pod 则不能被调度到包含这些污点的节点上 。
  • Pref erNoSchedule 是 NoSchedule 的 一 个宽松的版本,表示尽量阻止pod 被调度到这个节点上,但是如果没有其他节点可以调度, po d 依然会被调度到这个节点上 。
  • NoExecute 不同于 NoSchedule 以及 Pref erNoSchedule ,后两者只在调度期间起作用,而 NoExecute 也会影响正在节点上运行着的 pod 。 如果在一个节点上添加了 NoExecute 污点,那些在该节点上运行着的 pod ,如果没有容忍这个 NoExecute 污点,将会从这个节点去除 。

16.1.2 在节点上添加自定义污点

添加污点:

  • node1.k8s 是节点名

image.png

16.1.3 在 pod 上添加污点容忍度

image.png

16.1.4 了解污点和污点容忍度的使用场景

在调度时使用污点和容忍度

  • 组织新 pod 的 调度(使用 NoSchedule 效果〉
  • 或者定义非优先调度的节点(使用 PreferNoSchedule 效果)
  • 甚至是将 己有的 pod 从当前节点剔除 。

配置节点失效之后的 pod 重新调度最长等待时间

你也可以配置 一 个容忍度,用于当某个 pod 运行所在的节点变成 unready 或者unreachable 状态时, Kubemetes 可以等待该 pod 被调度到其他节点的最长等待时间 。

image.png

当没有定义这两个容忍度时 ,他们 会自动添加到 pod 上。如果你觉得对于你的pod 来说, 5 分钟太长的话,可以在 pod 描述中显式地将这两个容忍度设置得更短一些。