使用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
相关产品推荐
相关产品推荐

