NatLabRockies / NatLabRockies/openstudio-server-helm
Phase 2: Cluster Autoscaler Priority-Based Scale-Up for 10k+ Nodes
Nobody has claimed this yet.
- Dominant language
- Go Template
- Stars
- 12
- Forks
- 24
- PR merge metrics
- No merged PRs in 30d
Description
Problem
At 2 workers per node (400m CPU request), 10k workers requires 5,000+ nodes. Node provisioning becomes a bottleneck — OpenStack API rate limits, node bootstrap time (2-5 min per node), and cluster autoscaler max-node-provision-time (20 min default) all constrain scale-up speed (B8).
What Phase 1 Did
- Reduced worker CPU request from 600m→400m for better pod density (~2 per 1-core slice)
- Increased worker memory request from 700Mi→1Gi
- Added worker resource limits (CPU: 2, memory: 2Gi)
What Remains (This Issue)
- Priority-based scale-up: Add
workerPriorityandwebPriorityvalues that map to priority class names, enabling cluster-autoscaler to prioritize worker nodes over other pods during scale-up events - ProvisioningConfig: Add cluster-autoscaler
provisioningConfigsupport with multiple node group definitions (worker, web, system) and per-node-groupminSize/maxSize/instanceType - Over-provisioning: Add a
buffernode group that creates extra nodes ahead of scale-up demand using PDB-violating low-priority pause pods - Bottleneck documentation: Update
values_large.templateyamlwith node provisioning guidance per provider:- OpenStack: Recommended CAPI node group sizes, Nova quotas
- AWS: Recommended ASG warm pools, instance families
- GKE/AKS: Recommended node pool configs
Design Notes
- Priority-based scale-up:
priorityClassNameon pending pods determines which node pool expands first - Over-provisioning uses pause containers with very low priority that PDBs don't protect; when real pods arrive, pause pods are preempted
- This is provider-specific — AWS has ASG warm pools, OpenStack CAPO has
ServerGroup/ServerTemplate - The chart should document but not implement provider-specific autoscaler config (defer to cloud-provider subdirectories)
References
.agents/results/result-tf-infra.md— B8: Node Provisioning (HIGH)openstudio-server/values.yaml—worker.container.resources.requests.cpu: 400mopenstudio-server/templates/_scheduling.tpl— priority classes
Acceptance Criteria
- Priority class hierarchy documented in values.yaml
- Buffer/over-provisioning pause pod template (opt-in, disabled by default)
-
values_large.templateyamlupdated with node provisioning guidance per provider - OpenStack-specific CAPO node group sizing documented
- AWS-specific ASG warm pool config documented
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with openstudio-server/values.yaml and openstudio-server/templates/_scheduling.tpl to understand the existing worker resources and priority classes. Then inspect values_large.templateyaml and the chart structure for where provisioningConfig, node groups, buffer pods, and provider guidance would fit. Done means the opt-in buffer configuration, documented priority hierarchy, and OpenStack and AWS provisioning guidance satisfy the listed acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- helm, kubernetes
- Domain
- cloud, devops, documentation, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100