-
Notifications
You must be signed in to change notification settings - Fork 153
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
WIP: Add KubeVirt rate limiting profile kubelet
#2496
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/hold |
This is a WIP, the idea behind this PR is to get feedback from the community and to find out the best way to get this feature. Alternatives to MCO are listed in CNV-28519. |
@@ -32,6 +32,7 @@ type HyperConvergedTuningPolicy string | |||
const ( | |||
HyperConvergedAnnotationTuningPolicy HyperConvergedTuningPolicy = "annotation" | |||
HyperConvergedHighBurstProfile HyperConvergedTuningPolicy = "highBurst" | |||
HyperConvergedKubeletProfile HyperConvergedTuningPolicy = "kubelet" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about follow-kubelet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good to me! We have also considered naming it as something like mcoKubelet
, with the idea of reflecting the dependency of the machine configuration operator (mco). Another possibility is a merge between both ideas like: followMCOKubelet
. WDYT? In any case, followKubelet
(IMHO without the -
for consistency purposes) sounds better than just kubelet
:)
c7aaa05
to
73808eb
Compare
fd0c5e3
to
095cd54
Compare
The rate limiting profile `kubelet` allows users to dynamically set the provided kubelet `KubeAPIQPS` and `KubeAPIBurst` to KubeVirt components. The profile could be enabled adding the following to the HCO definition: ``` apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged ... spec: tuningPolicy: kubelet ... ``` This profile relies on the Machine Configuration Operator (MCO) to detect changes on the kubelet configuration. Therefore, MCO is required in order to work. This operator is available by default on OpenShift with the exception of HyperShift where it's not available. Also, among all MCO objects, the `kubelet` profile uses the `XX-worker-generated-kubelet` objects to fetch and keep track of the rate limiting values. Although, to configure kubelet the `KubeletConfig` objects are used, this profile relies on the `machineconfig` object `XX-worker-generated-kubelet` because it has several advantages: * It is complete, i.e., it contains all kubelet values including default configurations in case the user enables the profile but no additional settings have been provided to the rate limiters. Therefore, in case there's any `KubeletConfig`, the profile can still get the default values of kubelet, which may differ in future versions of OCP. * This object is only updated if the configuration process has been done properly. For instance, if the user creates a new `KubeletConfig` but no `machineconfigpool` has been labeled to use it, the `XX-worker-generated-kubelet` won't reflect any changes. Signed-off-by: Javier Cano Cano <[email protected]>
095cd54
to
c5a1f94
Compare
Kudos, SonarCloud Quality Gate passed! 0 Bugs No Coverage information |
Pull Request Test Coverage Report for Build 6309547484
💛 - Coveralls |
PR needs rebase. 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/test-infra repository. |
@jcanocan: The following tests failed, say
Full PR test history. Your PR dashboard. 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/test-infra repository. I understand the commands that are listed here. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with /lifecycle stale |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with /lifecycle rotten |
@jcanocan: The following tests failed, say
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/test-infra repository. I understand the commands that are listed here. |
Rotten issues close after 30d of inactivity. /close |
@kubevirt-bot: Closed this PR. In response to this:
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. |
What this PR does / why we need it:
The rate limiting profile
kubelet
allows users to dynamically set the provided kubeletKubeAPIQPS
andKubeAPIBurst
to KubeVirt components:API
,Webhook
,Controller
andHandler
. The profile could be enabled adding the following to the HCO definition:This profile relies on the Machine Configuration Operator (MCO) to detect changes on the kubelet configuration. Therefore, MCO is required in order to work. This operator is available by default on OpenShift except for HyperShift where it's not available. Also, among all MCO objects, the
kubelet
profile uses theXX-worker-generated-kubelet
objects to fetch and keep track of the rate limiting values.Reviewer Checklist
Jira Ticket:
Release note: