K8亲和性

本文深入探讨了Kubernetes中的调度策略,包括nodeSelector的使用,亲和性与反亲和性的软硬策略区别,以及如何利用这些策略精细控制Pod在集群中的分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nodeSelector调度方式

label是kubernetes中一个非常重要的概念,用户可以非常灵活的利用标签来管理集群中的资源,比如最常见的一个就是service通过匹配标签去匹配Pod资源,而Pod的调度也可以根据节点的标签来进行调度。

nodeSelector使用标签将pod强制调度到指定node节点上

亲和性和反亲和性

跳读亲和性可以分为软策略硬策略两种。

  • 软策略:preferredDuringSchedulingIgnoredDuringExecution

就是如果你没有满足调度要求的节点的话,pod就会忽略这条规则,继续完成调度过程,说白了就是满足条件最好了,没有的话也无所谓了的策略

  • 硬策略:requiredDuringSchedulingIgnoredDuringExecution

就比较强硬了,如果没有满足条件的节点的话,就不断重试直到满足条件为止,说简单就是你必须满足我的要求,我不然就不干的策略。

nodeAffinity节点亲和性调度

节点亲和性主要是用来控制pod要部署在哪些主机上,以及不能部署在哪些主机上的。它可以进行一些简单的逻辑组合了,不只是简单的相等匹配。

podAffinity pod亲和性调度

pod亲和性主要解决pod可以和哪些pod部署在同一个拓扑域中的问题(其中拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的集群,区等等),而pod反亲和性主要是解决pod不能和哪些pod部署在同一个拓扑域中的问题,它们都是处理的pod与pod之间的关系,比如一个pod在一个节点上了,那么我这个也得在这个节点,或者你这个pod在节点上了,那么我就不想和你待在同一个节点上。

podAntiAffinity pod反亲和性调度

pod反亲和性,比如一个节点上运行了某个pod,那么我们的pod则希望被调到到其他节点上去,

### Kubernetes 节点亲和性配置使用教程与最佳实践 节点亲和性和反亲和性是Kubernetes中用于控制Pod调度行为的重要特性之一。这使得管理员能够指定哪些节点对于特定类型的Pod来说是有吸引力或是排斥的。 #### 定义节点亲和性策略 节点亲和性可以通过两种方式定义: - **requiredDuringSchedulingIgnoredDuringExecution**: 这种模式下,只有当节点满足所有的规则条件时才会考虑该节点作为候选者。 - **preferredDuringSchedulingIgnoredDuringExecution**: 对于这种偏好型约束,在所有其他因素相同的情况下,会优先选择那些更适合此规则描述的节点;但是即使不完全匹配也不会阻止Pod被分配给某个节点[^4]。 #### 配置节点亲和性的YAML示例 下面是一个简单的例子展示了如何在Pod规格文件里加入节点亲和性设置: ```yaml apiVersion: v1 kind: Pod metadata: name: with-node-affinity spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: another-node-label-key operator: In values: - another-value ``` 这段代码指定了两个部分:一个是硬性需求(`requiredDuringSchedulingIgnoredDuringExecution`),它规定了Pod只能运行在一个具有`kubernetes.io/e2e-az-name=e2e-az1` 或 `e2e-az2`标签的节点上;另一个则是软性建议(`preferredDuringSchedulingIgnoredDuringExecution`),表示如果可能的话应该倾向于把Pod放在带有`another-node-label-key=another-value`标签的节点之上。 #### 实际应用场景下的最佳实践 为了最大化利用节点资源并确保高可用性,推荐遵循以下几个原则来进行节点亲和性配置: - 明确区分必需项和优选项之间的差异,并据此调整相应的参数; - 合理规划集群内的节点标签体系,以便更容易实现细粒度的调度控制; - 结合污点容忍(Taints and Tolerations)机制一起使用,进一步增强灵活性; - 测试不同的组合方案以找到最适合业务场景的方式[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值