允许在Kubernetes master上安排pod?

dmo*_*mol 15 coreos kubernetes

我使用通用安装脚本在裸机上在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.

这个问题表明主节点上的调度pod应该是可能的,但我几乎找不到任何关于这个主题的东西.

小智 31

如果您使用的是Kubernetes 1.7及以上版本:

kubectl taint node mymasternode node-role.kubernetes.io/master:NoSchedule-
Run Code Online (Sandbox Code Playgroud)

  • 从 `1.20` 开始,命令应该是:`kubectl taint node mymasternode node-role.kubernetes.io/control-plane:NoSchedule-` 查看更多:https://kubernetes.io/docs/reference/labels-annotations-taints /#node-role-kubernetes-io-control-plane (6认同)

The*_*DHM 10

节点角色.kubernetes.io/master

已弃用,有利于:

节点角色.kubernetes.io/控制平面

kubernetes 官方文档:node-role-kubernetes-io-master

所以对于版本+v1.20,解决方案是:

kubectl taint node <master-node> node-role.kubernetes.io/control-plane:NoSchedule-
kubectl taint node <master-node> node-role.kubernetes.io/master:NoSchedule-
Run Code Online (Sandbox Code Playgroud)


ill*_*nan 7

对于在 AWS 上使用 kops 的任何人。我想在 master 上启用 Pod 调度。

$ 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
...
...
Run Code Online (Sandbox Code Playgroud)

$ kubectl describe nodes ip-1**-**-**-***.********.master.internal

...
...
Taints:             <none>
Unschedulable:      true
...                 ^^^^
...
Run Code Online (Sandbox Code Playgroud)

使用以下命令修补 master :

$ kubectl patch node MASTER_NAME -p "{\"spec\":{\"unschedulable\":false}}"

为我工作,现在已启用 Pod 调度。

参考: https: //github.com/kubernetes/kops/issues/639#issuecomment-287015882


P E*_*ram 7

使用以下命令清除所有大师

kubectl taint nodes --all node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)


yas*_*ini 6

首先,获取主人的名字

kubectl get nodes

NAME     STATUS   ROLES    AGE   VERSION
yasin   Ready    master   11d   v1.13.4
Run Code Online (Sandbox Code Playgroud)

如我们所见,有一个节点的名称为yasin,角色为master。如果要使用它作为工作程序,则应运行

kubectl taint nodes yasin node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)


Jan*_*art 4

我不知道为什么主节点显示为NotReady;不应该。尝试执行一下kubectl describe node mymasternode就知道了。

SchedulingDisabled是因为主节点被污染dedicated=master:NoSchedule

对所有 master 执行此命令以消除污点:

kubectl taint nodes mymasternode dedicated-
Run Code Online (Sandbox Code Playgroud)

要理解为什么它有效,请阅读污点和容忍