K8s - X - 1 允许 master 节点调度 pod
一、kubernetes 允许 master 节点调度 pod
1. 问题描述
在部署 pod 或者其他组件时提示:
Warning FailedScheduling 43s (x20 over 20m) default-scheduler 0/3 nodes are available: 3 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate.
释意:
警告失败调度43s(x20超过20m)默认调度程序0/3节点可用:3个节点具有pod无法容忍的污点{node-role.kubernetes.io/master:}。
说明:
你有三个节点,但目前都无法调度。造成的原因可能是你的三个节点都是 master 节点,而 master 节点默认是无法调度的。
2. 解决方案
2.1 查看节点调度情况
kubectl describe node|grep -E "Name:|Taints:"
Name: master1
Taints: node-role.kubernetes.io/master:NoSchedule
Name: master2
Taints: node-role.kubernetes.io/master:NoSchedule
Name: master3
Taints: node-role.kubernetes.io/master:NoSchedule
2.2 指定节点允许调度
kubectl taint node master1 master2 master3 node-role.kubernetes.io/master-
2.3 其他
设置所有节点都可调度(去除所有节点不可调度的标签):
kubectl taint nodes --all node-role.kubernetes.io/master-
设置指定节点不可调度:
kubectl taint node master1 node-role.kubernetes.io/master=:NoSchedule
污点可选参数:
- NoSchedule: 一定不能被调度;
- PreferNoSchedule: 尽量不要调度;
- NoExecute: 不仅不会调度,还会驱逐Node上已有的Pod。