Philosophy: when and how should kubelet reject assigned pods? #5335
Labels
kind/design
Categorizes issue or PR as related to design.
sig/api-machinery
Categorizes an issue or PR as relevant to SIG API Machinery.
Summarizing a IRL conversation.
Bug report: kube-scheduler doesn't see its own assignments for [latency amount], so it commonly schedules incompatible pods together. We're removing the atomic check (#5320) which exposes this. I (lavalamp) will try and make a PR to fix this.
The philosophical question is, should this ever be allowed to happen? It's a bad user experience to have your pod mis-scheduled and dropped on the floor.
@brendanburns wanted these constraints to be atomically checked (as they are in boundPods). However, there are two main concerns with this: a) if an error creeps in, the system isn't self-healing, and b) write contention over boundPods slows the system drastically.
Instead, I think we've agreed on a tiered approach, where the goal is that scheduler gets it right 99%+ of the time, but kubelet is able to reject a pod that isn't compatible if necessary. And for the usability concern, we'll discuss letting kubelet unassign incompatible pods instead of setting them to failed.
@erictune @alex-mohr
The text was updated successfully, but these errors were encountered: