2020-03-26
允許master節點參與部署pods:
kubectl taint nodes k8s-master node-role.kubernetes.io/master-
禁止master節點部署pods:
kubectl taint nodes k8s-master node-role.kubernetes.io/master=true:NoSchedule
注:這個執行后,原有的pods不會立即被驅逐出去。
默認情況下,master上是不會部署pod的,當pod被調度到master上時,會出現節點不允許部署的pod的問題“pods had taints that the pod didn't tolerate”. 這是因為k8s的taint和toleration機制造成的,按照上面的方式去掉節點的taint就可以了。
此外,還可以利用另外一種方式解決,即給pod加上“node-role.kubernetes.io/master-”這個toleration,具體可參考https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/。
查看node具有的taints:
kubectl describe node k8s-master
[root@k8s-master ~]# kubectl describe node k8s-master
Name: k8s-master
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=k8s-master
kubernetes.io/os=linux
node-role.kubernetes.io/master=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 192.168.174.138/24
projectcalico.org/IPv4IPIPTunnelAddr: 10.100.235.192
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Thu, 19 Mar 2020 15:12:59 +0800
Taints: node-role.kubernetes.io/master=true:NoSchedule
Unschedulable: false
......