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

Kubernetes更新pod-deletion-cost注解时频繁失败,NodeJS Bull服务结合Keda Redis plugin扩缩容场景下的问题求助

Kubernetes更新pod-deletion-cost注解时频繁失败,NodeJS Bull服务结合Keda Redis plugin扩缩容场景下的问题求助

大家好,想跟各位请教一个我们团队近期遇到的棘手问题:

我们用NodeJS搭建了一套任务服务,用Bull管理任务队列,同时借助Keda的Redis插件实现自动扩缩容——这部分整体运行得都挺顺畅的。但最近发现个核心问题:Kubernetes缩容时,经常会误杀掉正在执行重型任务的Pod,导致任务中断,对业务造成了不小影响。

为了解决这个问题,我们想到利用pod-deletion-cost注解来控制Pod的删除优先级:给每个任务分配对应的成本值,任务启动时就把对应Pod的总删除成本往上累加,任务执行完毕再把成本回调回去。理论上K8s缩容时会优先删除成本低的Pod,这样就能保住正在跑重任务的Pod了。

逻辑本身我们已经实现,而且确实有部分更新操作能成功修改pod-deletion-cost的值,但尴尬的是,大概70%的更新尝试都会失败,抛出下面的错误:

Pod "redacted" is invalid: spec: Forbidden: pod updates may not change fields other than spec.containers[*].image,spec.initContainers[*].image,spec.activeDeadlineSeconds,spec.tolerations (only additions to existing tolerations),spec.terminationGracePeriodSeconds (allow it to be set to 1 if it was previously negative)
core.PodSpec{
Volumes: {redacted...},
InitContainers: ni...

我们排查了很久,确认更新操作只修改了注解字段,完全没碰PodSpec里的其他内容,但还是频繁出现这个错误。想问问各位有没有遇到过类似的情况?或者有没有什么办法能稳定更新这个注解?如果有其他替代方案能实现“让K8s缩容时优先保留正在执行重任务的Pod”这个目标,也欢迎大家给我们支招!

备注:内容来源于stack exchange,提问作者Dor Gross

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:04:37