[BUG] sticky 策略 (HARD/SOFT) 会默默禁用工作进程亲和性标签
作者: ayush00git创建于 2026年9月9日更新于 2026年9月14日
位置: pkg/scheduling/v1/scheduler.go:1176-1202 (Scheduler.rankWorkerIds) 根本原因: rankWorkerIds 切换到 qi.Sticky。HARD: 和 SOFT: 两种情况的分支永远不会通过到带有 label-affinity 的分支,该分支只在默认下才存在。因此,对于任何带有 Sticky != NONE 的队列项,所需的标签(包括 Required=true 标签)永远不会被评估:每个候选工作者都获得 0 级别,并且符合条件。 触发因素: 具有 sticky=HARD 或 SOFT 且所需工作者标签的任务。最常见的情况是文档中建议的情况(worker-affinity.mdx "在使用 worker 亲和性与 sticky 分配 HARD ... 为工作流程的第一个任务设置所需标签"):具有 HARD 粘性的工作流程的第一个任务具有 DesiredWorkerID 为 nil,且所需标签。 影响: 所需亲和性被违反,任务被分配给不符合所需标签的工作者(例如,非 GPU 工作者),并且在 HARD 粘性下,工作流程的每个后续任务都会被锁定到该错误工作者。 权重 (非所需) 标签也会被忽略。
内容来源: hatchet-dev/hatchet