kubernetes正在调度Pod来掌握

时间:2019-08-09 17:35:37

标签: kubernetes master

几天前,我抬起头来计划将某些吊舱计划为主节点。

我想了解为什么集群默认情况下会以这种方式工作,而不是调度到工作程序节点。

2 个答案:

答案 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上至少应为:

  • 存储供应商
  • kube-scheduler
  • kube-controller-manager
  • kube-apiserver
  • etcd