#k8s 污点、容忍、亲和性# 在 Kubernetes 中,污点(Taints)、容忍度(Tolerations)和亲和性(Affinity)是调度策略的重要组成部分,它们共同决定了 Pod 如何在集群中的节点上被调度。
1、污点(Taints) 污点是节点上的标记,用于指示节点上的某些不良条件或者特殊用途。它们可以阻止某些 Pod 被调度到这些节点上,除非这些 Pod 具有匹配的容忍度。污点由键(key)、值(value)和效果(effect)组成,效果可以是 NoSchedule、PreferNoSchedule 或 NoExecute。
NoSchedule:阻止所有不容忍该污点的 Pod 被调度到该节点上。 PreferNoSchedule:尽可能不调度不容忍该污点的 Pod 到该节点上,但如果没有其他可用节点,Pod 仍可能被调度至此。 NoExecute:不仅阻止新 Pod 调度,还会驱逐已经存在于该节点上的不容忍该污点的 Pod。
2、容忍度(Tolerations) 容忍度是 Pod 规格中的属性,允许 Pod 被调度到带有特定污点的节点上。Pod 可以具有多个容忍度,每个容忍度都可以指定它能够容忍的污点的键、值和效果。
3、亲和性(Affinity) 亲和性允许你指定 Pod 应该或倾向于调度到具有特定特征的节点上。它分为两种类型:
节点亲和性(Node Affinity):定义了 Pod 应该或倾向于调度到哪些节点上,基于节点的标签。
Pod 亲和性和反亲和性(Pod Affinity and Anti-Affinity):定义了 Pod 应该或倾向于调度到哪些已运行的 Pod 附近,或者避免调度到某些 Pod 附近。
结合使用污点和亲和性,你可以更精细地控制 Pod 在 Kubernetes 集群中的分布,从而优化资源利用、提高应用程序的可靠性和性能。
本文暂时没有评论,来添加一个吧(●'◡'●)