(必要)安装网络插件

运行kubeadm init之后Master节点的状态为NotReady,这是因为尚未部署任何网络插件,而CoreDNS、kube-controller-manager等Pod都需要依赖网络

网络插件相关的Pod(可以直接kubectl apply安装)

调整策略使得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-