1. 程式人生 > >Taints和Tolerations聯用,將pod部署到k8s的master節點

Taints和Tolerations聯用,將pod部署到k8s的master節點

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