或者相反的要求一个控制器下的Pod必须和某个Pod在一起,则可以通过Pod亲和性(Affinity)和反亲和性(Anti-affinity)来解决。 Pod 亲和性 Pod 亲和性用于将新 Pod 安排到与现有 Pod 相近的位置,这些现有 Pod 可能是同一个应用的不同实例或者是相互协作的服务。以下是一个 Pod 亲和性的示例: 代码语言:javascript ...
三、PodAffinity:Pod 亲和与反亲和调度 1. 基本原理 在实际的生产环境中有一类特殊的 Pod 调度需求:存在某些相互依赖、频繁调用的 Pod,它们需要被尽可能地部署在同一个 Node 节点、机架、机房、网段或者区域内,这就是 Pod 之间的亲和性;反之,出于避免竞争或者容错的需求,我们也可能使某些 Pod 尽可能地远离某些特...
kubernetes 调度器的调度流程,默认的调度器在使用的时候,经过了predicates和priorities两个阶段,但是在实际的生产环境中,往往我们需要根据自己的一些实际需求来控制 Pod 的调度,这就需要用到nodeAffinity(节点亲和性)、podAffinity(pod 亲和性)以及podAntiAffinity(pod 反亲和性)。 亲和性/反亲和性调度策略比较如下: 亲...
我们可以看到,创建的20个Pod只有一个被调度到node2上,上边节点调度更亲和节点1 三、podAffinity pod亲和性 基于“节点标签”进行设置,第一个pod副本创建在了哪个节点上,那么其余副本也会创建在这个节点上; 拓扑域:节点机器的标签的key和value都相等的机器,就是同一个拓扑域; 1. 编辑资源清单设置pod亲和性 [root...
Kubernetes提供了一系列调度策略,其中Node的亲和性以及Pod的亲和性和反亲和性是最常用的几种。本文将对这些策略进行详细的解释,并提供一些实际的应用建议。 一、Node的亲和性(Node Affinity) Node的亲和性是一种调度策略,它允许你指定Pod应该运行在哪些Node上。Node的亲和性规则可以分为两种类型:硬亲和性(Required...
1.1 Node affinity Kubernetes node affinity特性与node selector特性相似,可以要求Kubernetes Scheduler将Pod调度到定义了某些labels的node上运行 1.1.1 示意图 image.png 1.2 Pod affinity Kubernetes Pod affinity可以要求Kubernetes Scheduler将Pod调度到运行了某些定义了特点labels的pod的node上运行 ...
nodeAffinity(node亲和性):以node为目标,解决pod可以调度到哪些node的问题。 podAffinity(pod亲和性):以pod为目标,解决pod可以和哪些以存在的pod部署在同一个拓扑域中的问题。 podAntiAffinity(pod反亲和性):以pod为目标,解决pod不能和哪些已存在pod部署在同一个拓扑域中的问题。
1.3 NodeTaintTolerations 对于Node affinity,无论是强制约束(hard)或偏好(preference)方式,都是调度pod到预期节点上,而Taints恰好与之相反,如果一个节点标记为Taints,除非 Pod也被标识为可以耐受污点节点,否则该Taints节点不会被调度pod。Taints与tolerations当前处于beta阶段, Taints节点应用场景比如用户希望把Kubernetes Ma...
与NodeAffinity类似,Inter-Pod亲和性也提供了两种选择策略:"必需"和"首选"。 $ kubectl explain pod.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution KIND: Pod VERSION: v1 RESOURCE: requiredDuringSchedulingIgnoredDuringExecution <[]Object> ...
示例1: nodeAffinity 硬亲和 示例2: nodeAffinity 硬亲和 示例3: nodeAffinity 软亲和 前言 在k8s集群建设过程中,一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均。但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度;有时我们希望对内和对...