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

求助:Kubernetes中手动设置的Tolerations为何被自动覆盖?

Kubernetes中导致Deployment容忍度被自动覆盖的常见因素

场景回顾

你通过以下命令为observability-system命名空间下的wavefront-proxy Deployment添加容忍度:

kubectl patch deployment wavefront-proxy -n observability-system --type='json' -p='[{  "op": "add",  "path": "/spec/template/spec/tolerations",  "value": [{    "key": "key1",    "operator": "Equal",    "value": "value1",    "effect": "NoSchedule"  }]}]'

手动修改后立即查看,容忍度符合预期,但数秒后被自动覆盖为:

tolerations:
- effect: NoSchedule
  key: kubernetes.io/arch
  value: arm64

以下是可能导致该问题的核心因素:

  • 专属Operator的自动调和
    Wavefront Proxy通常由Wavefront Operator负责生命周期管理。Operator会持续监控Deployment的状态,确保其与自定义资源(CR)中定义的期望配置一致。如果CR中未配置你添加的tolerations,Operator会在调和周期内覆盖手动修改的字段,将Deployment重置为CR指定的状态。解决方式是在对应的Wavefront CR(如WavefrontProxy)中添加目标容忍度,由Operator同步到Deployment。

  • GitOps工具的同步回滚
    若集群使用Argo CD、Flux CD等GitOps工具,工具会以Git仓库中的配置作为唯一可信源。手动修改集群内的Deployment后,工具检测到集群状态与Git仓库配置不一致,会自动将Deployment回滚至Git仓库中的版本,导致手动修改被覆盖。需要将容忍度修改提交到对应的Git仓库,由GitOps工具同步到集群。

  • Mutating Admission Webhook的自动修改
    集群中的Mutating Admission Webhook(比如架构亲和相关的自定义Webhook、或云厂商提供的调度策略Webhook)可能会在Pod创建/更新时,自动注入或修改tolerations字段。例如部分Webhook会根据节点架构自动添加kubernetes.io/arch相关的容忍度,并覆盖原有配置。可通过检查集群中的MutatingWebhookConfiguration资源,确认是否有相关Webhook干预tolerations字段。

  • 云厂商集群管理组件的策略干预
    托管式Kubernetes集群(如EKS、GKE、AKS)的云厂商附加组件,可能会根据集群的调度策略、节点池配置等自动调整Pod的容忍度。比如针对特定节点池的专属调度策略,会强制Pod匹配节点池的容忍要求,覆盖手动设置的配置。

  • 定制化扩缩容或调度组件的重置
    部分定制化的HPA扩展、或第三方调度器组件,在调整Pod副本或重新调度时,可能会同步重置Pod模板的tolerations字段,恢复到组件预设的配置。这种场景相对少见,但需结合集群内的自定义组件排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:10:14