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

Document overprovisioning for node autoscaling #46635

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

afzal442
Copy link
Contributor

@afzal442 afzal442 commented Jun 3, 2024

Fixes: #45850

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jun 3, 2024
@k8s-ci-robot k8s-ci-robot added the language/en Issues or PRs related to English language label Jun 3, 2024
@k8s-ci-robot k8s-ci-robot requested a review from tengqm June 3, 2024 09:30
Copy link

netlify bot commented Jun 3, 2024

Pull request preview available for checking

Built without sensitive environment variables

Name Link
🔨 Latest commit c7b3563
🔍 Latest deploy log https://app.netlify.com/sites/kubernetes-io-main-staging/deploys/666605be776dee0008eedf3f
😎 Deploy Preview https://deploy-preview-46635--kubernetes-io-main-staging.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Contributor

@sftim sftim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR @afzal442.

Could you add the new page as a cluster administration task, rather than as a concept?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is explaining a task so I'd expect it to be inside http://k8s.io/docs/tasks/

Comment on lines 27 to 31
1. **Create a Placeholder Deployment:** Create a Deployment of pods that run a minimal process, like a pause container. These pods should have very low priority (using Priority Classes in Kubernetes) to ensure they are preempted easily.

2. **Adjust Resource Requests and Limits:** Configure the placeholder pods' resource requests and limits to define the amount of overprovisioned resources you want to maintain. For example, requesting a small amount of CPU and memory will reserve those resources without consuming them fully.

3. **Set the Desired Replica Count:** Determine the number of placeholder pods you need to create to achieve your desired level of overprovisioning. You can start with a small number and gradually increase it to find the right balance between resource reservation and cost.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should document how to perform each of these steps.


## How Node Overprovisioning Works

The most common way to implement node overprovisioning is to use a _placeholder_ deployment running pods with very low priority and a minimal resource footprint. These pods consume resources that could otherwise be used by regular application pods. However, due to their low priority, they are easily preempted _evicted_ when higher-priority pods need those resources.
Copy link
Contributor

@network-charles network-charles Jun 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The most common way to implement node overprovisioning is to use a _placeholder_ deployment running pods with very low priority and a minimal resource footprint. These pods consume resources that could otherwise be used by regular application pods. However, due to their low priority, they are easily preempted _evicted_ when higher-priority pods need those resources.
The most common way to implement node overprovisioning is to use a _placeholder_ deployment running pods with very low priority and a minimal resource footprint. These pods consume resources that could otherwise be used by regular application pods. However, due to their low priority, they are easily preempted (evicted) when higher-priority pods need those resources.
  • Fixed redundant space.
  • Corrected the grammar: Regardless of whether you italicized one, using "preempted" and "evicted" right next to each other without parenthesis is wrong because an eviction occurs when a preemption logic is triggered. The previous sentence assumes that each word is a different action.

@sftim
Copy link
Contributor

sftim commented Jun 6, 2024

/hold

I want to emphasize the points in #46635 (review)

OK to unhold once this PR is adding task documentation.

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 6, 2024
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign reylejano for approval. For more information see the Kubernetes Code Review Process.

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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Contributor

@sftim sftim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, but:

@@ -115,3 +115,4 @@ in the cluster.
## {{% heading "whatsnext" %}}

- Read about [workload-level autoscaling](/docs/concepts/workloads/autoscaling/)
- Read about [node overprovisioning](/docs/concepts/cluster-administration/node-overprovisioning/)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Read about [node overprovisioning](/docs/concepts/cluster-administration/node-overprovisioning/)
- Read about [node overprovisioning](/docs/tasks/cluster-administration/node-overprovisioning/)
- ```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move this to the cluster adminstration section.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be in the cluster adminstration section.

Comment on lines +27 to +37
## Create a Placeholder Deployment

Create a Deployment of pods that run a minimal process, like a pause container. These pods should have very low priority (using Priority Classes in Kubernetes) to ensure they are preempted easily.

## Adjust Resource Requests and Limits

Configure the placeholder pods' resource requests and limits to define the amount of overprovisioned resources you want to maintain. For example, requesting a small amount of CPU and memory will reserve those resources without consuming them fully.

## Set the Desired Replica Count

Determine the number of placeholder pods you need to create to achieve your desired level of overprovisioning. You can start with a small number and gradually increase it to find the right balance between resource reservation and cost.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. There is far too little detail here for us to be able to accept this documentation. Please write a page that explains what someone must do, and details what they need to know in order to perform each step.

@sftim
Copy link
Contributor

sftim commented Jun 10, 2024

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 10, 2024
@afzal442 afzal442 marked this pull request as draft June 11, 2024 20:53
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 11, 2024

## How Node Overprovisioning Works

The most common way to implement node overprovisioning is to use a _placeholder_ deployment running pods with very low priority and a minimal resource footprint. These pods consume resources that could otherwise be used by regular application pods. However, due to their low priority, they are easily preempted (evicted) when higher-priority pods need those resources.
Copy link
Contributor

@Ritikaa96 Ritikaa96 Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please wrap the lines and also brief up the content as per requirement

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. language/en Issues or PRs related to English language size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Document overprovisioning for node autoscaling
5 participants