Tiers and quotas
Being rolled out. The interface described here is the one of the next release: it may still change, and may not be enabled on your tenant yet.
The grid and the quota are in place on all tenants; the sng tenant tier command is being rolled out.
Each tenant has a tier that sets what it can consume: guaranteed CPU and memory,
maximum usable, storage, number of containers, and, for monitoring, number of monitors and
minimum frequency. A tenant is created in 3XS. Moving up is always possible; moving down
requires that current consumption fits in the target tier.
The grid
| Tier | Guaranteed CPU | Guaranteed memory | Max CPU | Max memory | Storage | Instances |
|---|---|---|---|---|---|---|
3XS | 0.5 | 1 Gi | 1 | 2 Gi | 2 Gi | 10 |
2XS | 0.5 | 1 Gi | 2 | 4 Gi | 10 Gi | 20 |
XS | 1 | 2 Gi | 4 | 8 Gi | 50 Gi | 40 |
S | 4 | 8 Gi | 4 | 8 Gi | 100 Gi | 40 |
M | 6 | 12 Gi | 6 | 12 Gi | 250 Gi | 60 |
L | 12 | 48 Gi | 12 | 48 Gi | 500 Gi | 120 |
XL | 32 | 128 Gi | 32 | 128 Gi | 1 Ti | 200 |
2XL | 64 | 512 Gi | 64 | 512 Gi | 2 Ti | 800 |
3XL | 192 | 768 Gi | 192 | 768 Gi | 4 Ti | 2000 |
- Guaranteed: the sum of the reservations of your containers (their
size) cannot exceed this value. It is what you are sure to have. - Max: the sum of the limits of your containers. A container can draw on it occasionally when capacity is available.
- Storage: total volume your persistent volumes can request.
- Instances: number of service instances (replicas included, job runs included) that can run at the same time.
The quota is per tenant.
The names XXS, XXL and XXXL are still accepted and mean 3XS, 2XL and 3XL
(sng tenant tier set XXL is the same as sng tenant tier set 2XL). A tenant created before
this grid keeps the same resources: its tier is shown under the matching name of the current
grid (a former XS shows as 2XS, a former S shows as XS).
What monitoring adds
The same tier bounds monitoring:
| Tier | Monitors | Minimum interval | Status pages | Channels |
|---|---|---|---|---|
3XS | 10 | 5 min | 1 | 2 |
2XS | 25 | 2 min | 1 | 5 |
XS | 50 | 1 min | 2 | 10 |
S | 75 | 1 min | 2 | 10 |
M | 100 | 30 s | 3 | 10 |
L | 250 | 30 s | 5 | 20 |
XL | 500 | 30 s | 10 | 20 |
2XL | 1000 | 30 s | 20 | 50 |
3XL | 2500 | 30 s | 50 | 50 |
A monitor that requests an interval shorter than the tier minimum is refused
(IntervalBelowTier), as is one monitor, page or channel too many
(QuotaExceeded). See Monitors.
Read the tier and consumption
sng tenant tier show
tenant acme: tier XS
RESOURCE USED HARD
requests.cpu 750m 1
requests.memory 1536Mi 2Gi
limits.cpu 1500m 4
limits.memory 3Gi 8Gi
requests.storage 5Gi 50Gi
…
requests.* compares with the Guaranteed column, limits.* with the Max column,
requests.storage with Storage; the last line counts the running instances, to compare
with the Instances column.
Right after the tenant is created, the line usage not available yet (…) may appear
for a minute.
With --json, the same data: {"tenant":"acme","tier":"XS","keys":[…],"hard":{…},"used":{…}}.
Change tier
sng tenant tier list # the grid, from the API
sng tenant tier set S
tenant acme: tier XS -> S (…)
The change takes effect within a minute. It requires the tier:write action, included in the
admin policy.
Moving down is only accepted if current consumption fits in the target tier. Otherwise:
tier too small: cannot downgrade to 3XS: requests.memory 1536Mi > 1Gi
Reduce first (sng app scale, deleting services, smaller size), then try again.
If consumption is not known yet (newly created tenant), moving down is refused
as a precaution (503): try again a minute later.
When the quota is reached
A deployment that would exceed the quota does not fail when the manifest is applied: it stays
pending, and the status of the App carries the reason QuotaExceeded on the service
concerned. Three ways out: reduce the service's size, reduce the number of instances, or
move up a tier.
sng app describe shop
App : shop
Statut : en cours
SERVICE KIND IMAGE PHASE URL DETAIL
worker deployment acme/worker:2.1.0 Progressing - QuotaExceeded exceeded quota … requested: requests.memory=4Gi, used: requests.memory=1Gi, limited: requests.memory=2Gi
If it doesn't work
| Message | Cause | Fix |
|---|---|---|
tier too small: cannot downgrade to … | Current consumption exceeds the target tier | Reduce consumption, then try again |
503 on sng tenant tier set | Consumption not known yet | Try again a minute later |
forbidden (…) | tier:write is missing | Ask an administrator for the admin policy |
A service stays in QuotaExceeded | The tier is full | Reduce size or replicas, or move up a tier |
Going further
- The
sizeof a service (Sizes and resources) sizes a container; the tier sizes the tenant. The two combine. - You only change the tier with
sng tenant tier setor the API (PUT /v1/tier). A manifest cannot change it. - API routes:
GET /v1/tiers(grid),GET /v1/tier(current tier and consumption),PUT /v1/tierwith{"tier":"S"}.