Tiers et quotas
Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.
La grille et le quota sont en place sur tous les tenants ; la commande sng tenant tier est en cours de déploiement.
Chaque tenant a un tier qui fixe ce qu'il peut consommer : CPU et mémoire garantis,
maximum utilisable, stockage, nombre de conteneurs, et, pour la supervision, nombre de moniteurs et
fréquence minimale. Un tenant est créé en 3XS. Monter est toujours possible ; descendre
exige que la consommation courante tienne dans le tier visé.
La grille
| Tier | CPU garanti | Mémoire garantie | CPU max | Mémoire max | Stockage | Exemplaires |
|---|---|---|---|---|---|---|
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 |
- Garanti : la somme des réservations de vos conteneurs (leur
size) ne peut pas dépasser cette valeur. C'est ce que vous êtes sûr d'avoir. - Max : la somme des limites de vos conteneurs. Un conteneur peut y puiser ponctuellement quand de la capacité est disponible.
- Stockage : volume total que vos volumes persistants peuvent demander.
- Exemplaires : nombre d'exemplaires de services (réplicas compris, exécutions de jobs comprises) qui peuvent tourner en même temps.
Le quota de ressources est par tenant.
Le nombre de tenants est lui aussi limité : chaque compte paie au plus 5 tenants, tous
clusters confondus. Au-delà, la création répond 403 tenant_quota_exceeded ; supprimer un
tenant libère une place. Voir Cycle de vie d'un tenant.
Les noms XXS, XXL et XXXL restent acceptés et désignent 3XS, 2XL et 3XL
(sng tenant tier set XXL équivaut à sng tenant tier set 2XL). Un tenant créé avant cette
grille garde les mêmes ressources : son tier s'affiche sous le nom correspondant de la grille
actuelle (un ancien XS s'affiche 2XS, un ancien S s'affiche XS).
Ce que la supervision y ajoute
Le même tier borne la supervision :
| Tier | Moniteurs | Intervalle minimal | Pages de statut | Canaux |
|---|---|---|---|---|
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 |
Un moniteur qui demande un intervalle plus court que le minimum du tier est refusé
(IntervalBelowTier), de même qu'un moniteur, une page ou un canal de trop
(QuotaExceeded). Voir Moniteurs.
Lire le tier et la consommation
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.* se compare à la colonne Garanti, limits.* à la colonne Max,
requests.storage au Stockage ; la dernière ligne compte les exemplaires en cours, à
comparer à la colonne Exemplaires.
Juste après la création du tenant, la ligne usage not available yet (…) peut apparaître
pendant une minute.
Avec --json, les mêmes données : {"tenant":"acme","tier":"XS","keys":[…],"hard":{…},"used":{…}}.
Changer de tier
sng tenant tier list # la grille, depuis l'API
sng tenant tier set S
tenant acme: tier XS -> S (…)
Le changement est effectif dans la minute. Il exige l'action tier:write, incluse dans la
policy admin.
Descendre n'est accepté que si la consommation courante tient dans le tier visé. Sinon :
tier too small: cannot downgrade to 3XS: requests.memory 1536Mi > 1Gi
Réduisez d'abord (sng app scale, suppression de services, size plus petit), puis réessayez.
Si la consommation n'est pas encore connue (tenant tout juste créé), la descente est refusée
par prudence (503) : réessayez une minute plus tard.
Quand le quota est atteint
Un déploiement qui dépasserait le quota n'échoue pas à l'application du manifeste : il reste
en attente, et le status de l'App porte la raison QuotaExceeded sur le service
concerné. Trois issues : réduire la size du service, réduire le nombre d'exemplaires, ou
monter de 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
Si ça ne marche pas
| Message | Cause | Correction |
|---|---|---|
tier too small: cannot downgrade to … | La consommation actuelle dépasse le tier visé | Réduire la consommation, puis réessayer |
503 sur sng tenant tier set | Consommation pas encore connue | Réessayer une minute plus tard |
forbidden (…) | Il manque tier:write | Demander la policy admin à un administrateur |
Un service reste en QuotaExceeded | Le tier est plein | Réduire size ou replicas, ou monter de tier |
Pour aller plus loin
- La
sized'un service (Tailles et ressources) dimensionne un conteneur ; le tier dimensionne le tenant. Les deux se composent. - Vous ne modifiez le tier que par
sng tenant tier setou l'API (PUT /v1/tier). Un manifeste ne peut pas le changer. - Routes API :
GET /v1/tiers(grille),GET /v1/tier(tier courant et consommation),PUT /v1/tieravec{"tier":"S"}.