Assigning GPU capacity without billing (enterprise / no-billing installs)
Most Kube-DC clusters drive organization quota from the billing plan: an org with
an active plan gets a HierarchicalResourceQuota (HRQ) and, on top of it, any
addons. Enterprise and private-cloud installs frequently run without a billing
provider — the organizations have no plan, so historically they had no HRQ and
therefore no way to receive a bounded GPU capacity grant.
This page documents the billing-independent path: a platform operator grants GPU capacity to an organization through a GPU addon, and the organization admin sub-assigns it to a project. No billing provider, plan, or payment flow is involved. The same catalog profile, DeviceClass, DRA admission policies, per-project accelerator cap editor, and DRA quota enforcement are reused unchanged.
How it works
- Catalog — a GPU profile is published (
gpu.profiles,GPU_CATALOG_ENABLED=true) and marked grantable (billingEligible: true— this flag means "may be granted"; it does not require a payment provider). Its DeviceClass is generated by the chart. - Addon — a GPU addon is defined in the billing config
addonsmap with agpugrant against that profile (e.g.gpu: { <profileId>: { shares: 1 } }),disabled: false. - Operator grant — the platform admin assigns the addon to an organization
(admin console → GPU add-on management, or the
set-addonsadmin API, which writes thebilling.kube-dc.com/addonsannotation). The org needs no plan; its subscription status only has to be active-family. - Org HRQ — the manager now renders an accelerator-only HRQ for an active,
plan-less org that carries GPU addons: the HRQ holds only the
<deviceClass>.deviceclass.resource.k8s.io/deviceskey(s). cpu/memory/pods/storage stay unmanaged, exactly as for any plan-less org — the grant never imposes a quota the deployment did not opt into. - Org → project — the organization admin caps a project with the existing per-project accelerator cap editor (Organization → project quota), bounded by the org grant.
- Enforcement — Kubernetes DRA ResourceQuota bounds actual concurrent claims to the project cap; the DRA shape policies force the fixed product.
Why it is safe
- An accelerator-only HRQ deliberately omits the base dimensions. Emitting them for a
plan-less org would write
requests.cpu=0/pods=0and deny every workload; the manager omits them so those dimensions remain unmanaged. billingEligible: truemust be set on the profile before a GPU addon that grants it is enabled — the same ordering rule as any GPU addon; reversing it fails plan-config load. No payment provider is required either way.- Removing the addon (or setting its quantity to zero) drops the org HRQ accelerator key on the next reconcile; existing project caps then have nothing to draw on.
Relationship to billing plans
Where a billing provider is configured, the same addon mechanism still applies on top of the plan HRQ; nothing changes. The only new behavior is that an active org with no plan now receives an accelerator-only HRQ from its GPU addons instead of no HRQ at all.