Karpenter 1.15 node repair: replace-first, until the pool is full

Karpenter 1.15 moves node repair onto the voluntary disruption path, so repair now respects budgets, launches a replacement first and caps the drain. That holds until a NodePool has no room to grow. What changes in your budgets on upgrade, what terminate-first costs on a full reservation, why the 20% breaker is still in the code, and the alerts we would add.
Nodes can finally say they are leaving on purpose

Kubernetes 1.37 adds five node lifecycle conditions, so a node can finally state that it is leaving on purpose. What the conditions mean, the alerting they make possible, and the three limits to check before you plan around them.