Taints和Tolerations聯用,將pod部署到k8s的master節點
阿新 • • 發佈:2018-11-08
一般,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"