kubernetes-sigs / karpenter

Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.
Apache License 2.0
534 stars 175 forks source link

feat: StartDateTime and EndDateTime, Timezones for NodePool Disruption Budgets #1446

Open ant-smith opened 1 month ago

ant-smith commented 1 month ago

Description

What problem are you trying to solve?

As apart of planned events, there are instances in which budgets should be schedule-able within a human readable format that can be easily understood and reasoned about.

This feature should also follow the current standard of minimal ("most restrictive") budgeting when multiple budgets are defined with overlapping timeframes or crontab schedules.

How important is this feature to you?

This feature would enable operators to schedule budgets for many one-off events in the future when they are known about, without having to create and compare complex crontab definitions against one another.

k8s-ci-robot commented 1 month ago

This issue is currently awaiting triage.

If Karpenter contributors determines this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
njtran commented 1 month ago

Hey @ant-smith, can you copy some of our slack convo in here so others can chime in too?

njtran commented 1 month ago

Adding detail from the PR here as well: This feature overall will assist operations teams in the following ways:

  • Overall more human readable, allowing an operator to easily reason if a budget is active or inactive at a glance
  • Support for many differing, but short lived time periods of disruption budgets over a longer timespan. E.g. there may be 15-18, 3-6 hour windows, over the course of 6 weeks that limit the clusters disruption in different ways. Writing cron's for this would be more difficult that start-end datetimes.
  • Support for empty start datetime, allows operators to say "From today until X, I want this to be active"
  • Support for empty end datetime, allows for operators to say "From today moving forward, I want this to be active"
  • Support for different timezones allow operators in separate timezones to manage separate sets of budgets, without converting to UTC first.
  • Dates are communicated in PST, needing to convert them adds friction and leaves a chance for errors as well as harder to quickly verify.