(必要)安装网络插件
运行kubeadm init
之后Master节点的状态为NotReady,这是因为尚未部署任何网络插件,而CoreDNS、kube-controller-manager等Pod都需要依赖网络
网络插件相关的Pod(可以直接kubectl apply
安装)
- Weave
- Flannel
- Calico
- Carnal
- Romana
调整策略使得Master可以执行Pod
默认情况下Master节点是不允许运行用户Pod的
一旦某个节点被加上了一个Taint,那么所有的Pod都不能在该节点上运行,除非有个别的Pod声明了Toleration
为节点加上Toleration的命令为:
kubectl taint nodes node1 foo=bar:NoSchedule
这样声明了一个键值对格式的Taint,NoSchedule表示只会在调度新的Pod时才会产生作用,而不会影响已经运行的Pod
Pod声明Toleration可以在spec部分加入tolerations
apiVersion: v1
kind: Pod
...
spec:
tolerations:
- key: "foo"
operator: "Equal"
value: "bar"
effect: "NoSchedule"
Master刚init起来的时候默认时自带一个node-role.kubernetes.io/master:NoSchedule
的Taint的(只有key没有value),可以通过以上的方式在声明Pod的时候利用“Exists“operator来给Pod上toleration
也可以直接删除这个Taint规则
kubectl taint nodes --all node-role.kubernetes.io/master-