Kubernetes 节点忽略常规 Pod 创建

Kubernetes 节点忽略常规 Pod 创建

给定一个由一个主服务器和一些工作服务器组成的正在运行的 Kubernetes 集群。

出于网络原因,我们需要添加一个节点来运行特定 Pod,并使其成为集群的一部分。然后,主节点在之后的 Pod 创建过程中会基本忽略该节点。

在每个部署中添加选择器来避免这个节点是不可能的。

谢谢!

答案1

您可以选择 节点选择器或者节点亲和性

nodeSelector 提供了一种非常简单的方法来将 Pod 约束到具有特定标签的节点。亲和性/反亲和性功能极大地扩展了您可以表达的约束类型。关键增强功能包括

  1. 语言更具表现力(不仅仅是“AND 或完全匹配”)
  2. 你可以指定该规则是“软”/“偏好”,而不是硬性要求,因此如果调度程序无法满足该规则,则仍会调度该 Pod
  3. 你可以限制节点(或其他拓扑域)上运行的其他 pod 上的标签,而不是节点本身上的标签,这允许制定关于哪些 pod 可以和哪些不能共置的规则

亲和性功能包括两种类型的亲和性:“节点亲和性”和“pod 间亲和性/反亲和性”。节点亲和性与现有的类似 nodeSelector (但具有上面列出的前两个优点),而 pod 间亲和性/反亲和性除了具有上面列出的第一和第二个属性外,还限制了 pod 标签而不是节点标签,如上面列出的第三项所述

简而言之,node affinity它类似于,nodeSelector但它允许您根据节点上的标签来限制可以在哪些节点上调度您的 pod。

您还可以查看污点和容忍度

你可以使用以下方法将污点添加到节点 kubectl 污点。 例如,

kubectl taint nodes node1 key=value:NoSchedule

在节点上放置污点 node1。污点具有键 key、值 value和污点效果 。这意味着, 除非具有匹配的容忍度,否则NoSchedule任何 Pod 都无法被调度到该节点上 。node1

在答案中引用或重写文档毫无意义。我真的建议您仔细阅读这些文档,然后选择最适合您的示例的文档。

相关内容