-
Notifications
You must be signed in to change notification settings - Fork 216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Endless nodes are created after expireAfter
elapse on a node in some scenarios
#1842
Comments
This issue is currently awaiting triage. If Karpenter contributors determines this is a relevant issue, they will accept it by applying the The Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
#1152 (comment) Related to OP. |
Can you share the PDB that you are using and the StatefulSet/Deployment? From looking at the other thread, it sounds like there may be something else that is blocking Karpenter from performing the eviction that needs integration with Karpenter's down-scaling logic |
/traige needs-information |
From the linked issue it sounds like they configure a PDB which will forever block pod termination. I think I am also seeing similar behavior to this with the I'm using v1.0.8 |
Actually just tested this again, letting Karpenter run in that configuration with 15 pods blocking node termination put Karpenter into a bad state seemingly unable to scale down nodes with a lot of this waiting on cluster sync message:
|
Description
Observed Behavior:
After
expireAfter
elapse on a node, pods are starting to get evicted, and endless new nodes are created to try to schedule those pods. Also, pods that don't have PDBs are NOT evicted.Expected Behavior:
After
expireAfter
elapse on a node, pods are starting to get evicted, and one node at most is created to schedule those pods. Also, pods that don't have PDBs are evicted. There may be an odd pod that has a PDB preventing the node from getting recycled, but if this is the case we can setterminationGracePeriod
.Reproduction Steps:
expireAfter
). In our case we have dev environments set at 24h, so we caught this early.nomitated
for those pods, but they never transfer to that node, as they are not evicted.found provisionable pod(s)
again, and a new nodeclaim is added (for the same pod as earlier)We believe this is a bug, we couldn't find a workaround (aside from removing
expireAfter
), and reverted to v0.37.x series for now.A few clues:
The state of the cluster 30m-45m after expiry. Node 53-23 is the one that expired. Any nodes younger than 30min are running mostly empty (aside from daemonsets).
On the expired node, the pods are
nominated
to be scheduled on a different node, but as you can see it can never happen.NOTE: I don't recall 100% if this screenshot was CloudNativePG primary itself or one of its neighbouring pods, but I think so.
And finally the log that appears after every scheduling event saying it
found provisionable pod(s)
and they precede a new “unnecessary nodeclaim."Versions:
kubectl version
): v1.29.10Extra:
expireAfter
on the node pool?minAvailable: 1
.The text was updated successfully, but these errors were encountered: