一般,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"