关于k8s节点污点对系统pod的影响

1.背景信息

  在我们部门规划中,计划使用一套 Kubernetes 集群部署两个环境(pre 和 prod)。目前,pre 环境的节点池名称为 pool01-10,prod 环境的节点池名称为 101-110。为了确保 pre 的 Pod 部署到 pre 的节点池,prod 的 Pod 部署到 prod 的节点池,我在所有 Pod 上配置了节点亲和性标签 env:prod/pre 以及容忍污点标签 env:prod/pre。同时,我在 pre 和 prod 的节点上分别设置了对应的污点 env:prod/pre 以及节点标签 env:prod/pre。

  在打上这些标签后,出现了两个疑问:

  1.CoreDNS 以及loki部署正常,但一直处于告警状态。

  

  2.阿里云 Logtail 没有配置容忍污点,但依然能够部署到已经设置污点的节点,并且没有产生告警。

 

2.原因

  1.CoreDNS 以及loki部署正常,但一直处于告警状态。

  问题的原因在于 CoreDNS 和 Loki 并未配置容忍污点,而我先部署了这些 Pod,之后才为 pre 环境的节点添加了污点。因此,尽管 Pod 没有容忍污点,但由于我的污点策略设置为 NoSchedule,这些 Pod 并不会被驱逐,但仍然会触发告警。

 

  2.阿里云 Logtail 没有配置容忍污点,但依然能够部署到已经设置污点的节点,并且没有产生告警。

  首先来看一下logtail的污点容忍配置

  

  查看以上配置“- operator: Exists”,这一行配置等于如果只使用 operator: Exists,则表示 Pod 容忍所有带有该污点的节点,不关心污点的具体键和值,简单来说,只要你有污点,我就可以匹配,万能公式。

 

3.案例

  根据上述原因,还有以下几种情况,理解了这些案例后,基本可以掌握污点配置的使用。

  operator: "Exists" 含义

  • operator: "Exists":只检查污点的 key 是否存在,不关心 value
  • 如果 key 存在,Pod 会匹配该污点并容忍。
  • effect 需要匹配(如 NoSchedule、NoExecute 等)。

 

  例子 1:匹配所有 NoSchedule 污点

tolerations:
  - operator: "Exists"
    effect: "NoSchedule"

  解析:匹配任何 NoSchedule 类型的污点,忽略 key 和 value。

  示例污点:

kubectl taint nodes node1 key1=value1:NoSchedule
kubectl taint nodes node2 key2=value2:NoSchedule

  结果:Pod 会匹配这两个节点。

 

  例子 2:只匹配 key1,忽略 value

tolerations:
  - key: "key1"
    operator: "Exists"
    effect: "NoSchedule"

  解析:匹配 key1,不关心 value,只要 effect=NoSchedule。

  示例污点:

kubectl taint nodes node1 key1=valueA:NoSchedule
kubectl taint nodes node2 key1=valueB:NoSchedule

  结果:Pod 会匹配 node1 和 node2。

 

  例子 3:匹配 key1 的所有 effect

tolerations:
  - key: "key1"
    operator: "Exists"

  解析:匹配 key1,不关心 effect,适用于任何 effect(如 NoSchedule、NoExecute)。

  

  总结

  简单理解:

  • operator: "Exists" 表示只要 key 存在,Pod 就会匹配,忽略 value
  • effect 仍然需要匹配。

 

4.建议配置

  由于我司在阿里云 Kubernetes 上部署了两套环境(prod/pre),并且未来可能还会部署一些其他的边缘组件,这些组件可能没有阿里云预配置的污点。为此,提出以下两种建议方案:

  1. 新增一个公共节点池,用于部署如 emqx、higress、coredns 等系统及其他 pod。

  2. 不在节点上添加污点,而是要求所有 pod 使用节点亲和性,这样即使是未知的 pod,也不会导致处于 pending 状态。

 

5.参考

  https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/

posted @ 2025-03-15 15:32  小家电维修  阅读(37)  评论(0)    收藏  举报