-
Notifications
You must be signed in to change notification settings - Fork 476
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
Feature: OpenShift Virtualization Higher Density #1679
base: master
Are you sure you want to change the base?
Conversation
Hi @iholder101. Thanks for your PR. I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. 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. |
|
||
#### Timeline | ||
|
||
* GA higher workload density in OpenShift Virtualization in 2024 |
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.
is this timeline still accurate?
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.
Yes, I believe it is.
Please keep me honest @stu-gott.
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.
@haircommander Hi, I've checked the Jira planning, we are on track, so yes this is indeed accurate.
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.
@haircommander The timeline bullet GA higher workload density in OpenShift Virtualization in 2024
relates to the phase 1 only. Maybe we should add it in brackets
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.
Hey @haircommander!
@enp0s3 and I reworked the PR. Can you please have another look?
/ok-to-test |
A feature describing CNV's path to higher density based on - phase 1: wasp - phase 2: kube swap Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
Signed-off-by: Itamar Holder <iholder@redhat.com>
e7d1686
to
a30cc7c
Compare
Inactive enhancement proposals go stale after 28d of inactivity. See https://github.com/openshift/enhancements#life-cycle for details. Mark the proposal as fresh by commenting If this proposal is safe to close now please do so with /lifecycle stale |
Stale enhancement proposals rot after 7d of inactivity. See https://github.com/openshift/enhancements#life-cycle for details. Mark the proposal as fresh by commenting If this proposal is safe to close now please do so with /lifecycle rotten |
/remove-lifecycle rotten |
Inactive enhancement proposals go stale after 28d of inactivity. See https://github.com/openshift/enhancements#life-cycle for details. Mark the proposal as fresh by commenting If this proposal is safe to close now please do so with /lifecycle stale |
/remove-lifecycle stale |
Signed-off-by: Igor Bezukh <ibezukh@redhat.com>
Signed-off-by: Igor Bezukh <ibezukh@redhat.com>
Signed-off-by: Igor Bezukh <ibezukh@redhat.com>
Signed-off-by: Igor Bezukh <ibezukh@redhat.com>
[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 |
@iholder101: all tests passed! 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-sigs/prow repository. I understand the commands that are listed here. |
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.
Thanks for this proposal for a much-requested feature. I think it is high time to have it merged.
## Summary | ||
|
||
Fit more workloads onto a given node - achieve a higher workload | ||
density - by overcommitting it's memory resources. Due to timeline |
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.
density - by overcommitting it's memory resources. Due to timeline | |
density - by overcommitting its memory resources. Due to timeline |
## Motivation | ||
|
||
Today, OpenShift Virtualization is reserving memory (`requests.memory`) | ||
according to the needs of the virtual machine and it's infrastructure |
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.
according to the needs of the virtual machine and it's infrastructure | |
according to the needs of the virtual machine and its infrastructure |
given node leads to the observation that _on average_ there is no memory | ||
ressure and often a rather low memory utilization - despite the fact that | ||
much memory has been reserved. |
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.
given node leads to the observation that _on average_ there is no memory | |
ressure and often a rather low memory utilization - despite the fact that | |
much memory has been reserved. | |
given node leads to the observation that _on average_ much of the reserved memory is not utilized. |
I think it is not precises to say there is no pressure. There is. But we can reduce it, because the memory causing the pressure is not used and can be swapped out.
|
||
### Non-Goals | ||
|
||
* Complete life-cycling of the WASP Agent. We are not intending to write |
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.
This is the first time WASP agent is mentioned. Please add a URL.
* Complete life-cycling of the WASP Agent. We are not intending to write | ||
an Operator for memory over commit for two reasons: | ||
* [Kubernetes SWAP] is close, writing a fully fledged operator seems | ||
to be no good use of resources |
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.
to be no good use of resources | |
to be no good use of developer resources |
## Test Plan | ||
|
||
Add e2e tests for the WASP agent repository for regression testing against | ||
OpenShift. |
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.
I think that we should include here a bit more details about how we are (already) testing it. Most importantly: configure 200% over-commitment, fill up the cluster with dormant VMs and verify that the cluster is responsive and survives upgrade.
Consider the following in developing an upgrade/downgrade strategy for this | ||
enhancement: | ||
- What changes (in invocations, configurations, API use, etc.) is an existing | ||
cluster required to make on upgrade in order to keep previous behavior? | ||
- What changes (in invocations, configurations, API use, etc.) is an existing | ||
cluster required to make on upgrade in order to make use of the enhancement? | ||
|
||
Upgrade expectations: | ||
- Each component should remain available for user requests and | ||
workloads during upgrades. Ensure the components leverage best practices in handling [voluntary | ||
disruption](https://kubernetes.io/docs/concepts/workloads/pods/disruptions/). Any exception to | ||
this should be identified and discussed here. | ||
- Micro version upgrades - users should be able to skip forward versions within a | ||
minor release stream without being required to pass through intermediate | ||
versions - i.e. `x.y.N->x.y.N+2` should work without requiring `x.y.N->x.y.N+1` | ||
as an intermediate step. | ||
- Minor version upgrades - you only need to support `x.N->x.N+1` upgrade | ||
steps. So, for example, it is acceptable to require a user running 4.3 to | ||
upgrade to 4.5 with a `4.3->4.4` step followed by a `4.4->4.5` step. | ||
- While an upgrade is in progress, new component versions should | ||
continue to operate correctly in concert with older component | ||
versions (aka "version skew"). For example, if a node is down, and | ||
an operator is rolling out a daemonset, the old and new daemonset | ||
pods must continue to work correctly even while the cluster remains | ||
in this partially upgraded state for some time. |
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.
this seems like generic content. should we not replace it with something specific, or drop it?
How will the component handle version skew with other components? | ||
What are the guarantees? Make sure this is in the test plan. | ||
|
||
Consider the following in developing a version skew strategy for this | ||
enhancement: | ||
- During an upgrade, we will always have skew among components, how will this impact your work? | ||
- Does this enhancement involve coordinating behavior in the control plane and | ||
in the kubelet? How does an n-2 kubelet without this feature available behave | ||
when this feature is used? | ||
- Will any other components on the node change? For example, changes to CSI, CRI | ||
or CNI may require updating that component before the 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.
WASP from CNV-X.Y must work with OCP-X.Y as well as OCP-X.(Y+1)
|
||
## Operational Aspects of API Extensions | ||
|
||
None |
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.
I think that this is a place to discuss the fact that all workers have to have to same memory size and the same disk topology, that deploying and upgrading WASP is a manual step
Examples: | ||
- The mutating admission webhook "xyz" has FailPolicy=Ignore and hence | ||
will not block the creation or updates on objects when it fails. When the | ||
webhook comes back online, there is a controller reconciling all objects, applying | ||
labels that were not applied during admission webhook downtime. | ||
- Namespaces deletion will not delete all objects in etcd, leading to zombie | ||
objects when another namespace with the same name is created. | ||
|
||
TBD |
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.
Let us replace this generic content.
A feature describing OpenShift Virtualization's path to higher density based on:
This is a replacement for #1630.