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

Remove predefined node taint after spegel pod finished initializing on the node #587

Open
shandr opened this issue Sep 27, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@shandr
Copy link

shandr commented Sep 27, 2024

Describe the problem to be solved

On EKS, with Karpenter for nodes provisioning, in 99%, the workload pod starts before the spegel daemonset configures the node. This makes spegel useless in dynamic EKS + Karpenter environments. The suggested in the FAQ solution nidhogg is very unstable and not working as expected or not working at all. Additionally, with Karpenter, adding a taint that Karpenter is unaware of on the node can lead to a situation when Karpenter will create new nodes, because the pod doesn't have the required toleration.

Proposed solution to the problem

Use the "cilium" approach. With Karpenter (or some other methods) add startupTaints with some predefined name. When spegel initialized, it should remove the taint from the node.

@shandr shandr added the enhancement New feature or request label Sep 27, 2024
@phillebaba
Copy link
Member

I wish this was a solution provided in Kubernetes. There have been a couple of solutions proposed and none of them have been accepted. I wish that every project did not need to implement their own solution to fix this challenge.

I am for creating a solution that would work for both Karpenter users and Cluster Autoscaler users short term. Long term we should consider a KEP to solve this problem in Kubernetes.

@shandr
Copy link
Author

shandr commented Sep 30, 2024

With Cluster Autoscaler it's also possible to add some custom taint to Managed Nodegroups that spegel can remove after initialization. So it should work for both.

@Marvin0098
Copy link

Marvin0098 commented Nov 28, 2024

@shandr We are seeing this exact same issue in our cluster's. Do you know any workaround besides using https://github.com/pelotech/nidhogg? (we really don't want to add yet a new tool to fix this issue). Doing it the way cilium does it would be perfectly fine for us.

Our current use case for spegel is that we have kubernetes jobs that run on a new node, to reduce the startup time we use spegel. But that does not work, because the pods are created before the spegel daemonset pod.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants