-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
KEP-4205: KEP to add PSI metrics in Summary API, and for PSI based node actions #4230
Conversation
ndixita
commented
Sep 21, 2023
- One-line PR description: This KEP lays the initial foundations to use PSI metrics for setting Node Conditions.
- Issue link: Support PSI based on cgroupv2 #4205
/assign @rphillips |
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.
+1, this may help provide more observability to users for nodes that are overloaded without requiring logging into the node to troubleshoot.
I think we will want to propagate the PSI metrics from the main Kubelet slices separately: /, system.slice, and kubepods.slice. I do not see that reflected in this enhancement. Thoughts? |
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.
Thank you for proposing this KEP, I am super excited to see us build on top of cgroupv2 using features like PSI in the kubelet! Left a few comments.
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.
A couple more nits, and we still need some resolution on the multi-tiered node condition (separate for kubepods cgroup vs system cgroup), or at least a mention of it as we have a couple of releases between now and then
Avg300 *float64 `json:”avg300”` | ||
Total *float64 `json:”total”` |
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.
indentation is weird 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.
still is
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 comment still holds
#### Phase 1: Alpha | ||
|
||
- PSI integrated in kubelet behind a feature flag. | ||
- Initial e2e tests completed and enabled. |
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.
may be tricky to have e2e tests if we need CRI extensions to collect the metrics
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.
Yeah we can decide on the coverage later?
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.
TBH I'd drop this and replace it with unit testing
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 kind of CRI extensions are we talking about here? Are those optional, iow. the functionality will be only available for some container runtimes? (I'm not a CRI expert 😉 )
b757350
to
e39ea7d
Compare
a couple more nits. I propose we mostly focus reviews on phase 1 now--which to me mostly looks good--as the following phases will likely change with 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.
#prr-shadow
2ce2c93
to
44189d1
Compare
ddeb0eb
to
c280955
Compare
I took a pass on a review. @soltysh's comments should be addressed before we merge this; otherwise, lgtm. |
/lgtm |
/assign deads2k |
/assign @soltysh |
Signed-off-by: Dixita Narang <ndixita@google.com>
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: johnbelamaric, mrunalp, ndixita The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/lgtm |
I've been playing around with a similar idea to this, using node-problem-detector to set node conditions based off of PSI pressure indicators and ran into an issue that might affect this KEP. Basically while CPU PSI pressure information is a good indicator of how overloaded a node is, it also gets set whenever CFS cpu throttling occurs. For example if a user schedules a pod and sets their cpu limits too low so that throttling happens frequently we see that the PSI metrics for that cgroup also get elevated
which ends up being propagated to the system level metric:
cpu thottling:
so elevated cpu PSI pressure could also mean heavy throttling on a container which doesn't necessarily mean there's a node-level issue occurring |