复制 apiVersion:apps/v1kind:Deploymentmetadata:name:myapp-deploymentspec:replicas:3selector:matchLabels:app:myapptemplate:metadata:labels:app:myappspec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:-labelSelector:matchExpressions:-key:appoperator:Invalues:-myapptopologyKey:"kubernetes....
Kubernetes 中的 Pod 反亲和性(Pod Anti-Affinity) 1. 概念解释 Pod 反亲和性(Pod Anti-Affinity)是 Kubernetes 中的一种调度策略,它用于指定 Pod 应该避免与具有特定标签的其他 Pod 调度到同一节点(或同一拓扑域)上。这种策略有助于实现故障隔离、资源分散等目标,从而提高系统的可靠性和稳定性。 2. 使用场景 ...
通过存活性探针和就绪性探针,Kubernetes能够实时检测Pod及容器的运行状态,一旦发现异常,便采取相应的措施,如重启容器或剔除异常实例,以保证服务的可用性和稳定性。 二、Pod亲和性 1、Pod亲和性的概念与作用 Pod 亲和性(Affinity)是 Kubernetes 中的一个重要概念,它用来指定 Pod 与节点之间的关系,即规定 Pod 应该被...
三、PodAffinity:Pod 亲和与反亲和调度 1. 基本原理 在实际的生产环境中有一类特殊的 Pod 调度需求:存在某些相互依赖、频繁调用的 Pod,它们需要被尽可能地部署在同一个 Node 节点、机架、机房、网段或者区域内,这就是 Pod 之间的亲和性;反之,出于避免竞争或者容错的需求,我们也可能使某些 Pod 尽可能地远离某些特...
Affinity主要分为三类: nodeAffinity(node亲和性):以node为目标,解决pod可以调度到哪些node的问题。 podAffinity(pod亲和性):以pod为目标,解决pod可以和哪些以存在的pod部署在同一个拓扑域中的问题。 podAntiAffinity(pod反亲和性):以pod为目标,解决pod不能和哪些已存在pod部署在同一个拓扑域中的问题。
示例3: podAntiAffinity 硬反亲和 概述: 先来了解 topology key 字段 pod亲和性调度需要各个相关的pod对象运行于"同一位置", 而反亲和性调度则要求他们不能运行于"同一位置", 这里指定“同一位置” 是通过 topologyKey 来定义的,topologyKey 对应的值是 node 上的一个标签名称,比如各别节点zone=A标签,各别节点有...
第二个 pod 指的是 spec.affinity.podAntiAffinity 下的标签选择器“security:s1”。因此,该 Pod 不会被调度到已经托管任何带有“security:s1”标签的 Pod 的节点。 3总结 Kubernetes 中的高级 pod 调度允许实施许多有趣的场景和最佳实践,以在 Kubernetes 上部署复杂的应用程序和微服务。借助 Pod 亲和性,您可以为...
affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: kubernetes.io/hostname labelSelector: matchExpressions: - key: app operator: In values: - webapp 使用Pod反亲和的方式,让Pod3和Pod1不会部署在一起。部署完毕后,查看结果,Pod3因为反亲和被调度到了k8s-worker-2节点。
Kubernetes (K8s) 的调度是指将 Pod 分配到集群中的节点上的过程。 这是Kubernetes 中非常重要的一个功能,由 kube-scheduler 组件负责。以下是 Kubernetes 调度的主要方面: 1. 调度器的工作原理: - 监视新创建的未分配节点的 Pod。 - 为每个 Pod 选择一个合适节点。 - 通知 API server 关于这个决定(称为绑定...
这里指定“同一位置” 是通过 topologyKey 来定义的,topologyKey 对应的值是 node 上的一个标签名称,比如各别节点zone=A标签,各别节点有zone=B标签,pod affinity topologyKey定义为zone,那么调度pod的时候就会围绕着A拓扑,B拓扑来调度,而相同拓扑下的node就为“同一位置”。