几天前,我抬起头来计划将某些吊舱计划为主节点。
我想了解为什么集群默认情况下会以这种方式工作,而不是调度到工作程序节点。
答案 0 :(得分:0)
您应该检查污染/容忍的概念。我认为此Kub Docs链接描述了如何将Pod非常有效地取消分配给特定节点。例如,默认情况下,主节点具有NoSchedule污点,并且具有相应容差的Pod可以在主节点上进行调度。
除非创建了具有“节点亲和力”的Pod,以在特定节点上进行调度。相同的链接也再次指代节点亲和力。在这两种情况下,都对pod进行了自定义以容纳宽容度或亲和力,或者您已经自定义了master。
使用kubectl describe
命令检查节点或pod上引用的属性。
答案 1 :(得分:0)
就像@AYA提到的那样,污点/容差,NodeSelector,亲和力是防止节点上的计划吊舱的正确方法。
但是,在kubeadm创建的集群中,主节点已经具有污点,以防止在主节点上运行随机Pod。规范中包含相应容差的吊舱除外。您未提供已在主服务器上计划的Pod的YAML。 K8将Pod调度到MasterNode的原因可能与kubernetes网络或法兰绒,印花布,波浪等kubernetes控制计划有关。
要将默认污点恢复到主节点,必须执行以下命令:
$ kubectl taint nodes <master-node-name> node-role.kubernetes.io/master="":NoSchedule
请记住,某些Pod旨在在master node
上运行,我们不应该阻止它们进行调度。它可能会影响群集,并可能导致性能下降或工作不稳定。
在master node
上至少应为: