Kubernetes艰难的方法 - 如何设置节点不可调度

问题描述 投票:2回答:1

我从头开始配置Kubernetes集群(原因)。它是VM内部的本地设置,一切都很好,除了master节点创建为可调度。

我已经尝试通过将所需的参数传递给kubelet二进制文件来分配master标签和适当的污点(不解决问题):

--register-with-taints=node-role.kubernetes.io/master=:NoSchedule
--node-labels=master,node-role.kubernetes.io/master=""

以下是kubectl describe <node>的输出:

Name:               myNodeName
Roles:              master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/hostname=myHostName
                    master=
                    node-role.kubernetes.io/master=
Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
CreationTimestamp:  Tue, 03 Jul 2018 05:56:53 +0000
Taints:             node-role.kubernetes.io/master=true:NoSchedule
Unschedulable:      false

如何将此节点设置为Unschedulable?文档并没有真正指定这一点(如果我错过了某些内容,请随意指向文档的相应部分)。

PS:在创建/注册节点之前,存在上述标签/污点。

kubernetes
1个回答
4
投票

Taints让我们有可能标记一个节点,以防止调度程序将它用于具有NoSchedule参数的某些Pod,并且它们具有Kubernetes Scheduler在规划步骤中使用的特殊值。默认情况下,无法在具有污点的节点上生成Pod,直到您添加tolerations,这将允许调度程序在toleration配置中指定taints的节点上创建pod;因此,根据您的节点描述,您已成功将此节点注册为NoSchedule,这意味着不会在此节点上安排Pod。

Taints:node-role.kubernetes.io/master=true:NoSchedule

或者,您可以使用kubectl cordon NODE命令将节点标记为unschedulable;因此它会禁用该节点的调度,因此Kubernetes Scheduler将在规划工作负载的过程中忽略它,它反映在您的节点配置中,如:

不可预约:是的

© www.soinside.com 2019 - 2024. All rights reserved.