Description
What problem are you trying to solve?
Using startupTaints at the NodePool level is overall a good experience. However, in 2026 there are scenarios where it would be preferable to allow external components to set startup taints instead of having them directly set by Karpenter. For example, I think components like the Node Readiness Controller should be the only responsible of adding startupTaints instead of Karpenter itself. In such cases, delegating this responsibility externally would provide better separation of concerns.
There may be scenarios where applying startupTaints to every node in the NodePool isn’t practical, some nodes might never require a startupTaint based on custom readiness checks, while others should have it.
startupTaints may be modfied like this
startupTaints:
- key: example.com/another-taint
effect: NoSchedule
onlyEnforceIfPresent: true
With the field onlyEnforceIfPresent: true the behavior would be the same that is actually enforced by ClusterAutoscaler here, taints are not set by Karpenter but if they are present on the node, the node itself would be considered as Ready.
An even better experience would be to define startupTaints and this behavior clusterwide. Actually if startupTaints changes, it would be needed to update every single NodePool of the cluster
How important is this feature to you?
- Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
- Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
- If you are interested in working on this issue or have submitted a pull request, please leave a comment
Description
What problem are you trying to solve?
Using
startupTaintsat the NodePool level is overall a good experience. However, in 2026 there are scenarios where it would be preferable to allow external components to set startup taints instead of having them directly set by Karpenter. For example, I think components like the Node Readiness Controller should be the only responsible of adding startupTaints instead of Karpenter itself. In such cases, delegating this responsibility externally would provide better separation of concerns.There may be scenarios where applying startupTaints to every node in the NodePool isn’t practical, some nodes might never require a startupTaint based on custom readiness checks, while others should have it.
startupTaints may be modfied like this
With the field
onlyEnforceIfPresent: truethe behavior would be the same that is actually enforced by ClusterAutoscaler here, taints are not set by Karpenter but if they are present on the node, the node itself would be considered as Ready.An even better experience would be to define startupTaints and this behavior clusterwide. Actually if startupTaints changes, it would be needed to update every single NodePool of the cluster
How important is this feature to you?