背景:某个deployment有9个pod,但是k8s调度到了两个节点上,导致prometheus监控报该节点:
NodeCPUUsageExceed
为了使9个pod 不部署到相同的节点,所以需要配置pod的反亲和性,假如pod有标签app=test。配置反亲和性的规则为 :不与app=test的pod调度到同一个节点:
硬限制(requiredDuringSchedulingIgnoredDuringExecution)
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- test
topologyKey: kubernetes.io/hostname
软限制(preferredDuringSchedulingIgnoredDuringExecution)
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- test
topologyKey: kubernetes.io/hostname
weight: 1

本文介绍了如何通过设置Pod的反亲和性来避免在Kubernetes集群中将多个相同标签的Pod调度到同一节点,以解决资源过度集中问题。配置包括硬限制(requiredDuringSchedulingIgnoredDuringExecution)和软限制(preferredDuringSchedulingIgnoredDuringExecution),确保了Pod的分散部署,提高集群资源利用率和监控效率。
1万+

被折叠的 条评论
为什么被折叠?



