-
Notifications
You must be signed in to change notification settings - Fork 628
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
Pull-based autoscaling support #1588
Comments
It seems for pull based support a list of repositories is configured which are queried for pending jobs to decide to scale. We have chosen essentialy to scale based on events. For our own deployment we must handle 1000+ repositories. So by querying contuous 1000+ repos will hit rate limits. But we are of course open to explore how pull based can be supported if needed. |
Pull based scaling is where the controller scales runners based on a metric every poll period (sync period), the 2 current metrics are:
It's useful for people that:
|
@toast-gear Thanks for the clarification! I worked last week on a PR to add a so called "simple pool" that checks every x interval the number of idle runners wanted, and once not meeting the setting scales up with the required number. See #1577 |
In PR #1577 we add a simple way for pull based scaling. This change let you define a pool based on a cron expression and a desired pool size. Based on the cron expression lambda is triggered which will update the pool to the required size. Configuration will be provided as a list, so multiple combination of cron expression and pool sizes can be defined. For example to support a different poolsize on weekdays and weekends. |
@npalm Sounds very interesting and similar-ish to some of the stuff in actions-runner-controller (ARC)! You can setup a schedule to override the min and / or max replica count on a per runner set basis. It's helpful if you just want a basic scale up during core businesss hours to a set amount and scale down outside of core business hours to a set amount setup. With ARC being k8s based it's also helpful for cost optimisation too as you may want to scale your runner node group/s down to 0 outside of core business hours to save £££. The pull based scaling stuff is more centred around continously scaling up and down driven from some environmental metric/s and reassessed every poll period. |
So can we consider that Pull-based autoscaling feature is(/will) supported ? |
@toast-gear you are right. The trigger is scheduled. The lambda is checking for the number of active runners before scaling. Do you have any other suggestion that fits in our approach? |
(PR github/docs#13742 updated, will be un-draft when #1577 merged) |
I guess knowing a bit of the history would help. Originally actions-runner-controller only had a single scaling metric, the I'd say the key detail which is what makes both pull based and webhook based scaling pull based / webhook based scaling is the scaling is based on some environmental metric and scaling will scale up and down (within the limits of the config) as it is informed from the environment each poll / event e.g. queue depth, how busy runners are or an event. For me, scheduled scaling is a different feature as it isn't really responding to an environmental metric, it has an arbrtiary runner count as defined by the schedule and will keep the count at that level regardless of the environment. In the case of ARC, you can even combine scheduled scaling with pull or webhook driven scaling so it really is its own feature in the ARC project at least. So if we want to stay true to the pull based scaling term (which is a fairly informal term so it's not the end of the world) then the docs probably need a new column |
❤️ pernickety discussions 😁 So perhaps updating the feature name could be more accurate, proposal:
|
Can be closed with #1577. |
According GitHub Recommended autoscaling solutions, this solution doesn't support Pull-based autoscaling feature.
I'm not sure to fully understand what is this feature, but it could be nice to support it 😁 (as the other major solution).
(No many historic found from af32d).
The text was updated successfully, but these errors were encountered: