我使用generic install scripts在裸机上在CoreOS上设置了Kubernetes。它运行当前稳定版本1298.6.0,Kubernetes版本1.5.4。
我们希望有一个高度可用的主设置,但我们目前没有足够的硬件专门用作三个服务器作为Kubernetes主服务器,所以我希望能够允许用户容器安排在Kubernetes大师。我在/etc/systemd/system/kubelet.service中设置了--register-schedulable = true但它仍然显示为SchedulingDisabled。
我尝试添加设置以将节点包括为工作者,包括将工作者TLS证书添加到/ etc / kubernetes / ssl,将这些设置添加到kubelet.service,添加指向那些的/etc/kubernetes/worker-kubeconfig.yaml证书,并将该信息添加到/etc/kubernetes/manifests/kube-proxy.yaml。我使用现有节点作为添加内容的模板。这会在主服务器主机名下注册另一个节点,然后它和原始主节点都显示为NotReady,SchedulingDisabled。
This question表示主节点上的调度pod应该是可能的,但我几乎找不到任何关于这个主题的东西。
如果您使用的是Kubernetes 1.7及以上版本:
kubectl taint node mymasternode node-role.kubernetes.io/master:NoSchedule-
首先,获取主人的名字
kubectl get nodes
NAME STATUS ROLES AGE VERSION
yasin Ready master 11d v1.13.4
我们可以看到有一个名为yasin
的节点,角色是master
。如果我们想将它用作工人,我们应该运行
kubectl taint nodes yasin node-role.kubernetes.io/master-
我不知道为什么主节点显示为NotReady
;它不应该。尝试执行kubectl describe node mymasternode
以找出答案。
SchedulingDisabled
是因为主节点被dedicated=master:NoSchedule
污染了
对所有主人执行此命令以消除污点:
kubectl taint nodes mymasternode dedicated-
要理解为什么有效,请阅读taints and tolerations。
适用于在AWS上使用kops的任何人。我想在master上启用Pods的调度。
$ kubectl get nodes -owide
给了我这个输出:
NAME STATUS
...
...
ip-1**-**-**-***.********.compute.internal Ready node
ip-1**-**-**-***.********.master.internal Ready,SchedulingDisabled master
^^^^^^^^^^^^^^^^^^
ip-1**-**-**-***.********.compute.internal Ready node
...
...
和$ kubectl describe nodes ip-1**-**-**-***.********.master.internal
:
...
...
Taints: <none>
Unschedulable: true
... ^^^^
...
使用此命令修补master:
$ kubectl patch node MASTER_NAME -p "{\"spec\":{\"unschedulable\":false}}"
为我工作,现在启用了Pods的安排。
参考:https://github.com/kubernetes/kops/issues/639#issuecomment-287015882
使用以下命令取消所有母版
kubectl taint nodes --all node-role.kubernetes.io/master-