Taints和Tolerations联用,将pod部署到k8s的master节点

时间:2023-01-27 17:11:32

一般,k8s的master为了保持高性能,在这个主节点上只运行一些管理必须的POD。

如果我们限于资源,或是一些监控类的pod要部署到master节点呢?

昨天遇到这个问题,按网上通用的方法,未解决,于是仔细研究了一下,

后解决。

一般来说,“污点”和“忍受”是成对应用的。master节点上打一个污点taints,部署的yaml文件里声明容忍tolerations。

标准用法如下:

...
nodeSelector:
  node-role.kubernetes.io/master: "true"
tolerations:
- key: "node-role.kubernetes.io/master"
  effect: "NoSchedule"
...

这是因为master上带有这个label: node-role.kubernetes.io/master: "true"。

不幸的是,在我安装的一个集群上,master的label是这样的node-role.kubernetes.io/master。true没有。

于是,将标准用法改为如下方式即可解决:

nodeSelector:
  node-role.kubernetes.io/master: ""
tolerations:
- key: "node-role.kubernetes.io/master"
  effect: "NoSchedule"