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

Add ability to set Eviction and resource reservation kubelet policies #1216

Closed
shibumi opened this issue Jan 15, 2021 · 12 comments · Fixed by #1698
Closed

Add ability to set Eviction and resource reservation kubelet policies #1216

shibumi opened this issue Jan 15, 2021 · 12 comments · Fixed by #1698
Assignees
Labels
Epic kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. priority/normal Not that urgent, but is important sig/cluster-management Denotes a PR or issue as being assigned to SIG Cluster Management.
Milestone

Comments

@shibumi
Copy link
Contributor

shibumi commented Jan 15, 2021

Hi,
Is it possible to set specific options mentioned here: https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/

I've found a kubelet-18.0 configmap in the kube-system namespace, but I have been unsure if I can just adjust it. It would be nice to set such arguments via kubeone.

@shibumi shibumi added the triage/support Indicates an issue that is a support question. label Jan 15, 2021
@kron4eg
Copy link
Member

kron4eg commented Jan 15, 2021

Unfortunately not. Not at the moment at least.

@shibumi
Copy link
Contributor Author

shibumi commented Jan 18, 2021

Not sure if it's possible to transform this issue into a feature request, but I think setting reservations or eviction limits would be a neat feature. Would be cool if it would be possible to set/add kubelet/kubeadm flags. Changing a kubelet configuration on a live cluster is not that easy (although it's possible..)

@xmudrii xmudrii added kind/feature Categorizes issue or PR as related to a new feature. sig/cluster-management Denotes a PR or issue as being assigned to SIG Cluster Management. and removed triage/support Indicates an issue that is a support question. labels Jan 20, 2021
@xmudrii xmudrii changed the title Is it possible to set custom kubelet arguments like Eviction or resource reservation? Add ability to set custom Kubelet arguments like Eviction and resource reservation Jan 20, 2021
@xmudrii
Copy link
Member

xmudrii commented Jan 20, 2021

@shibumi I've updated the issue to convert it to a feature request.

@kron4eg kron4eg added the Epic label Jan 20, 2021
@shibumi
Copy link
Contributor Author

shibumi commented Jan 20, 2021

@xmudrii Thanks a lot! What does the "Epic" label mean? :D

@kron4eg
Copy link
Member

kron4eg commented Jan 20, 2021

@shibumi it's coming from the zenhub, we use it for planning.

@shibumi
Copy link
Contributor Author

shibumi commented Jun 23, 2021

@xmudrii or @kron4eg can one of you summarize what would need to be done for having this feature in kubeone? We really need this and I would like to work on this, if possible.

@kron4eg
Copy link
Member

kron4eg commented Jun 25, 2021

In a very high-level description, as usual in such cases we need to:

  • make machine-controller understand such case and be able to produce VMs with user-provided flags
  • do the same for kubeone (control plane machines) + machine-controller integration of those change, sounds like API changes.
  • update machine-controller in kubeone

@xmudrii xmudrii added this to the KubeOne 1.4 milestone Sep 28, 2021
@xmudrii xmudrii added priority/high kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API priority/normal Not that urgent, but is important and removed priority/high labels Sep 28, 2021
@xmudrii
Copy link
Member

xmudrii commented Sep 28, 2021

xref #1539

@shaase-ctrl
Copy link

Hello @shibumi, can you explain me what is the use case for this?

@shibumi
Copy link
Contributor Author

shibumi commented Oct 21, 2021

@shaase-ctrl sure. One usecase can be found here: https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/#example-scenario

TL;DR:

KubeOne should support custom kubelet flags for reserving resources for the kubelet. This way it is guaranteed that the kubelet is responding, even when the node has a very high load due to misconfiguration. In our early days we had a pretty bad resource management in our clusters, hence we had 1x per 2-3 months the edge case that a kubelet stopped responding. Non-Responding kubelets are a big problem, because the default scheduler will not move the workloads on the related node to a new node. The result is non-working workloads or flapping workloads (reachable/unreachable every few minutes/seconds).

@shaase-ctrl
Copy link

OK, I can follow your thoughts but the standards that are configured seem to be quite good via percentages and minima? @shibumi my fear is that the custom config is much more error prone than the default.

@shibumi
Copy link
Contributor Author

shibumi commented Oct 21, 2021

@shaase-ctrl Which default values? Are these default values being set by KubeOne or by the kubelets itself? And can you show me where these values are being set?

@kron4eg kron4eg changed the title Add ability to set custom Kubelet arguments like Eviction and resource reservation Add ability to set Eviction and resource reservation policies Dec 16, 2021
@kron4eg kron4eg changed the title Add ability to set Eviction and resource reservation policies Add ability to set Eviction and resource reservation kubelet policies Dec 16, 2021
@kron4eg kron4eg self-assigned this Dec 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. priority/normal Not that urgent, but is important sig/cluster-management Denotes a PR or issue as being assigned to SIG Cluster Management.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants