You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PodAntiAffinity遇ValidationError,Deployment模板验证失败求助

Kubernetes Deployment亲和性配置错误排查

你的配置错误出在requiredDuringSchedulingIgnoredDuringExecution的结构上,这个规则的语法和preferredDuringSchedulingIgnoredDuringExecution不一样,具体问题如下:

  • 不需要嵌套podAffinityTerm字段:required规则的数组项直接包含labelSelector和topologyKey,不需要像preferred那样用podAffinityTerm包裹
  • 不能加weight字段:weight是preferred规则特有的权重配置,required规则是强制约束,没有权重概念,必须删除
  • 原配置因为错误嵌套,导致Kubernetes找不到顶层的topologyKey字段,触发了验证错误

修正后的正确配置如下:

spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - podAffinityTerm:
          labelSelector:
            matchLabels:
              app: xyz
              tier: xyz-mongo
          topologyKey: failure-domain.beta.kubernetes.io/zone
        weight: 1
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: releaseName
            operator: In
            values:
            - xyz-abc-mongo
        topologyKey: kubernetes.io/hostname

这样修改后,就能实现每个节点仅运行一个带有releaseName: xyz-abc-mongo标签的Pod的需求,required规则会强制调度器不会把符合条件的Pod调度到已有该标签Pod的节点上。

内容的提问来源于stack exchange,提问作者Aakarshit Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:07:42