Skip to content
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

Meltdown protection if all nodes are not ready #386

Merged
merged 2 commits into from
Aug 22, 2024
Merged

Conversation

maboehm
Copy link
Collaborator

@maboehm maboehm commented Aug 12, 2024

Avoid setting the LoadBalancers endpoints to an empty list if all nodes are reported as non-healthy.

This can help mitigating a scenario, where the kubelets cannot reach the control plane to update their heartbeat, but the yawol components still can. This can happen if yawol manages loadbalancers of a cluster it is not deployed in.

In this scenario, the kube-controller-manager will quickly update all the nodes as NotReady, which in turn will trigger the yawol-cloud-controller to remove all lb.Spec.Endpoints, which when picked up by the yawolets, results in no traffic reaching the cluster.

Instead, I propose rather keeping a list of (non-terminating) nodes, even if they are considered as not ready. That way the workload might still be available. This "meltdown protection" will only kick in, if ALL nodes are unhealthy, so should have no effect on most LBs most of the time.

Copy link
Member

@dergeberl dergeberl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Kumm-Kai Kumm-Kai enabled auto-merge (squash) August 22, 2024 12:46
@Kumm-Kai Kumm-Kai merged commit c28f6bc into main Aug 22, 2024
2 checks passed
@Kumm-Kai Kumm-Kai deleted the avoid-empty-endpoints branch August 22, 2024 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants