Dans Kubernetes, le pod constitue la plus petite unité déployable et se compose généralement d'un ou plusieurs conteneurs. Le type de calcul et la qualité de puissance de calcul d'un pod influencent directement les performances des applications et l'utilisation des ressources. Container Compute Service (ACS) propose plusieurs types de calcul ainsi que des classes de qualité de puissance de calcul associées pour répondre à divers besoins applicatifs. Cette rubrique décrit les fonctionnalités principales et les limites des pods ACS, notamment l'isolation de sécurité, la configuration des ressources et spécifications CPU, mémoire et GPU, le téléchargement des images, le stockage, le réseau et la collecte des journaux.
Définitions des types de calcul
ACS met à disposition des types de calcul conteneurisé CPU et GPU économiques, avec différentes allocations de ressources adaptées à divers scénarios métier.
|
Type de calcul |
Libellé |
Fonctionnalités |
|
Usage général (par défaut) |
general-purpose |
Convient à la plupart des applications microservices sans état, aux applications web Java et aux tâches de calcul. |
|
Optimisé pour les performances |
performance |
Conçu pour les scénarios exigeant des performances élevées, tels que l'entraînement et l'inférence IA/ML sur CPU, ainsi que le traitement par lots HPC. |
|
Type GPU |
gpu |
Destiné aux scénarios de calcul hétérogène comme l'IA et le HPC, incluant l'inférence mono-GPU et multi-GPU, ainsi que le calcul parallèle GPU. |
|
GPU réseau haute performance (gpu-hpn) |
gpu-hpn |
Adapté aux scénarios de calcul hétérogène tels que l'IA et le HPC, couvrant l'entraînement distribué GPU, l'inférence distribuée et le calcul haute performance GPU. |
Le type de calcul se définit au moyen du libellé alibabacloud.com/compute-class sur le pod. Les exemples suivants présentent la configuration YAML d'une application NGINX avec un type de calcul défini sur general-purpose, gpu ou gpu-hpn.
Usage général
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Accéléré par GPU
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
# Set the compute-class to gpu.
alibabacloud.com/compute-class: "gpu"
# Set the GPU model to example-model. Replace the value as needed, for example, T4.
alibabacloud.com/gpu-model-series: "example-model"
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
resources:
limits:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity as needed.
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity as needed.
Pour plus d'informations sur les modèles et spécifications GPU pris en charge par ACS, consultez Spécifications des types de calcul accéléré.
GPU réseau haute performance
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
# Set the compute-class to gpu-hpn.
alibabacloud.com/compute-class: "gpu-hpn"
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
resources:
limits:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity as needed.
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity as needed.
Pour utiliser des GPU réseau haute performance dans ACS, créez d'abord une réservation de capacité GPU-HPN.
Définitions de la qualité de puissance de calcul
ACS offre deux classes de qualité de puissance de calcul avec des allocations de ressources distinctes afin de s'adapter à différents scénarios métier.
Qualité de puissance de calcul | Libellé | Fonctionnalités | Scénarios d'application typiques |
Default | default |
|
|
BestEffort | best-effort |
|
|
La qualité de puissance de calcul se spécifie à l'aide du libellé alibabacloud.com/compute-qos sur le pod. L'exemple suivant illustre la configuration YAML d'une application NGINX dont la qualité de puissance de calcul est définie sur default.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
alibabacloud.com/compute-qos: default
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Les classes de qualité de puissance de calcul définies par ACS diffèrent des classes QoS natives de Kubernetes. La classe de qualité de puissance de calcul par défaut dans ACS correspond à la classe QoS Guaranteed de Kubernetes.
Le stock des instances BestEffort est dynamique. Dans les environnements de production, il est vivement recommandé d'adopter une politique d'ordonnancement priorisant le stock disponible. Cette politique permet à la plateforme de basculer automatiquement vers la classe de qualité par défaut lorsque le stock est insuffisant. Pour plus d'informations, consultez Politique d'ordonnancement des ressources personnalisées.
Correspondances entre les types de calcul et les classes de qualité de puissance de calcul
|
Type de calcul (libellé) |
Classes de qualité de puissance de calcul prises en charge (libellés) |
|
Usage général (general-purpose) |
Default (default), BestEffort (best-effort) |
|
Optimisé pour les performances (performance) |
Default (default), BestEffort (best-effort) |
|
Type GPU (gpu) |
Default (default), BestEffort (best-effort) |
|
GPU réseau haute performance (gpu-hpn) |
Default (default) |
Spécifier la marque du CPU
Les types de calcul Usage général (general-purpose) et Optimisé pour les performances (performance) prennent en charge deux fournisseurs de CPU : Intel et AMD.
Le fournisseur de CPU se définit en ajoutant l'annotation alibabacloud.com/cpu-vendors à un pod ou en configurant cette même annotation alibabacloud.com/cpu-vendors dans le modèle de pod d'une charge de travail. Pour utiliser des CPU AMD, ouvrez un ticket afin d'être ajouté à la liste d'autorisation. L'utilisation de cette annotation avec d'autres types de calcul n'est pas prise en charge et génère un message d'erreur. Les valeurs suivantes sont acceptées pour cette annotation :
Clé | Valeur | Définition |
| intel (par défaut) | Indique un CPU Intel. En l'absence de spécification, la valeur par défaut est « intel ». |
amd | Indique un CPU AMD. | |
intel, amd | Accepte indifféremment un CPU Intel ou AMD. Le système choisit la marque de CPU appropriée pour créer l'instance en fonction du stock disponible. Aucune ordre de préférence n'est pris en compte lorsque plusieurs valeurs sont spécifiées. |
Une fois l'instance créée, vérifiez la valeur du libellé alibabacloud.com/cpu-vendor dans le YAML du pod pour confirmer la marque réelle du CPU.
L'exemple ci-dessous présente la configuration YAML d'une application NGINX où la marque du CPU est définie sur amd.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
alibabacloud.com/compute-qos: default
annotations:
alibabacloud.com/cpu-vendors: amd
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
N'utilisez pas les libellés système ACS, tels que alibabacloud.com/compute-class, alibabacloud.com/compute-qos et alibabacloud.com/cpu-vendor, comme filtres dans le champ matchLabels de la charge de travail. Ces libellés pouvant être modifiés par le système, leur utilisation risque d'entraîner des recréations fréquentes de pods par le contrôleur et de nuire à la stabilité de l'application.
Fonctionnalités principales
Fonctionnalité | Description |
Isolation de sécurité | ACS constitue un environnement d'exécution de conteneurs serverless sécurisé. Chaque instance de pod bénéficie d'une isolation forte grâce à une technologie de sandbox légère, garantissant l'absence d'interférences entre instances. Lors de l'ordonnancement, les instances sont réparties autant que possible sur différentes machines physiques afin d'optimiser la disponibilité. |
Configuration des spécifications de ressources CPU/Mémoire/GPU/EphemeralStorage |
|
Image | Par défaut, chaque redémarrage d'un pod ACS entraîne le téléchargement d'une image depuis un registre de conteneurs distant via le Virtual Private Cloud (VPC) où le pod est déployé. Si le registre est accessible publiquement, une passerelle NAT doit être configurée pour le VPC. Afin d'accélérer le téléchargement des images via les VPC, utilisez Container Registry (ACR) pour héberger vos images de conteneurs. Par ailleurs, ACS prend en charge le téléchargement d'images privées depuis Container Registry sans recourir aux Secrets. |
Stockage | ACS prend en charge quatre types de stockage persistant : disques cloud, NAS, OSS et CPFS.
|
Réseau | Par défaut, un pod ACS utilise une adresse IP de pod indépendante et occupe une interface ENI d'un vSwitch. Au sein d'un cluster ACS, les pods peuvent communiquer entre eux selon les modes suivants :
|
Collecte des journaux | Configurez directement les variables d'environnement du pod pour collecter les journaux |
Spécifications des ressources
Dans un cluster ACS, les spécifications des pods pour les types de calcul GPU et GPU-HPN sont automatiquement ajustées lors de l'envoi. Par exemple, les pods GPU sont uniformément alignés sur la QoS Guaranteed (la requête est égale à la limite). Lorsque vous utilisez la puissance de calcul GPU d'ACS depuis d'autres sources (telles que des clusters ACK ou ACK One), cet ajustement des spécifications de ressources n'apparaît pas dans les métadonnées du pod. Assurez-vous que la QoS du pod reste inchangée avant et après l'envoi. Pour les types de calcul GPU, envoyez le pod avec une QoS Guaranteed afin d'éviter les échecs de mise à jour du statut du pod.
Types de calcul à usage général
Type de calcul à usage général
vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Bande passante réseau (entrant + sortant) (Gbit/s) | Stockage |
0.25 | 0.5, 1, 2 | N/A | 0.08 | Les capacités de 30 GiB ou moins sont gratuites. Pour les capacités supérieures à 30 GiB, l'excédent est facturé séparément. La configuration maximale prise en charge est de 2 000 GiB. Pour obtenir de l'espace de stockage supplémentaire, montez des volumes de stockage tels que NAS. |
0.5 | 1 à 4 | 1 | 0.08 | |
1 | 1 à 8 | 0.1 | ||
1.5 | 2 à 12 | 1 | ||
2 | 2 à 16 | |||
2.5 | 3 à 20 | 1.5 | ||
3 | 3 à 24 | |||
3.5 | 4 à 28 | |||
4 | 4 à 32 | |||
4.5 | 5 à 36 | |||
5 | 5 à 40 | |||
5.5 | 6 à 44 | |||
6 | 6 à 48 | |||
6.5 | 7 à 52 | 2.5 | ||
7 | 7 à 56 | |||
7.5 | 8 à 60 | |||
8 | 8 à 64 | |||
8.5 | 9 à 68 | |||
9 | 9 à 72 | |||
9.5 | 10 à 76 | |||
10 | 10 à 80 | |||
10.5 | 11 à 84 | |||
11 | 11 à 88 | |||
11.5 | 12 à 92 | |||
12 | 12 à 96 | |||
12.5 | 13 à 100 | 3 | ||
13 | 13 à 104 | |||
13.5 | 14 à 108 | |||
14 | 14 à 112 | |||
14.5 | 15 à 116 | |||
15 | 15 à 120 | |||
15.5 | 16 à 124 | |||
16 | 16 à 128 | |||
24 | 24, 48, 96, 192 | N/A | 4.5 | |
32 | 32, 64, 128, 256 | N/A | 6 | |
48 | 48, 96, 192, 384 | N/A | 12.5 | |
64 | 64, 128, 256, 512 | N/A | 20 |
Type de calcul performant
vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Bande passante réseau (entrant + sortant) (Gbit/s) | Stockage |
0.25 | 0.5, 1, 2 | N/A | 0.1 | Les capacités de 30 GiB ou moins sont gratuites. Pour les capacités supérieures à 30 GiB, l'excédent est facturé séparément. La configuration maximale prise en charge est de 2 000 GiB. Pour obtenir de l'espace de stockage supplémentaire, montez des volumes de stockage tels que NAS. |
0.5 | 1 à 4 | 1 | 0.5 | |
1 | 1 à 8 | |||
1.5 | 2 à 12 | |||
2 | 2 à 16 | 1.5 | ||
2.5 | 3 à 20 | |||
3 | 3 à 24 | |||
3.5 | 4 à 28 | |||
4 | 4 à 32 | 2 | ||
4.5 | 5 à 36 | |||
5 | 5 à 40 | |||
5.5 | 6 à 44 | |||
6 | 6 à 48 | 2.5 | ||
6.5 | 7 à 52 | |||
7 | 7 à 56 | |||
7.5 | 8 à 60 | |||
8 | 8 à 64 | 3 | ||
8.5 | 9 à 68 | |||
9 | 9 à 72 | |||
9.5 | 10 à 76 | |||
10 | 10 à 80 | 3.5 | ||
10.5 | 11 à 84 | |||
11 | 11 à 88 | |||
11.5 | 12 à 92 | |||
12 | 12 à 96 | 4 | ||
12.5 | 13 à 100 | |||
13 | 13 à 104 | |||
13.5 | 14 à 108 | |||
14 | 14 à 112 | 4.5 | ||
14.5 | 15 à 116 | |||
15 | 15 à 120 | |||
15.5 | 16 à 124 | |||
16 | 16 à 128 | 6 | ||
24 | 24, 48, 96, 192 | N/A | 8 | |
32 | 32, 64, 128, 256 | N/A | 10 | |
48 | 48, 96, 192, 384 | N/A | 16 | |
64 | 64, 128, 256, 512 | N/A | 25 |
Pour utiliser des pods ACS disposant de plus de 16 vCPU ou de plus de 128 GiB de mémoire, ouvrez un ticket pour demander l'accès.
Si vous ne spécifiez pas de spécifications en définissant .resources.requests et .resources.limits pour les conteneurs, un pod unique se voit allouer par défaut 2 vCPU et 4 GiB de mémoire.
ACS ajuste automatiquement les spécifications du pod. Le système calcule le cumul des .resources.requests et des .resources.limits pour tous les conteneurs, retient la valeur maximale entre ces deux sommes, puis aligne le pod sur la spécification prise en charge la plus proche. Cette spécification ajustée apparaît dans l'annotation alibabacloud.com/pod-use-spec. En cas d'ajustement à la hausse, ACS modifie les .resources.requests ou les .resources.limits du conteneur afin de garantir que l'application puisse utiliser toutes les ressources allouées.
Logique d'ajustement des spécifications de pod ACS
Par exemple, supposons que la valeur cumulée des .resources.requests ou des .resources.limits soit de 2 vCPU et 3,5 GiB de mémoire. Au démarrage du pod, ACS ajuste automatiquement sa spécification à 2 vCPU et 4 GiB de mémoire. Les ressources supplémentaires issues de cet ajustement sont attribuées au premier conteneur, et le pod reçoit l'annotation alibabacloud.com/pod-use-spec=2-4Gi. Voici un exemple de déclaration de ressources :
apiVersion: v1
kind: Pod
metadata:
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
alibabacloud.com/compute-qos: default
name: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
requests:
cpu: 2 # Declare 2 vCPUs
memory: "3.5Gi" # Declare 3.5 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
La déclaration de ressources après ajustement est la suivante :
apiVersion: v1
kind: Pod
metadata:
annotations:
alibabacloud.com/pod-use-spec: "2-4Gi"
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
alibabacloud.com/compute-qos: default
name: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
requests:
cpu: 2 # Declare 2 vCPUs
memory: "4Gi" # Declare 4 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
Spécifier les spécifications de pod via une annotation
Applicabilité
Cette fonctionnalité est disponible uniquement pour les pods CPU des types de calcul à usage général (general-purpose) et optimisés pour les performances (performance).
La spécification maximale prise en charge par l'annotation est de 64 vCPU et 512 GiB, conformément aux spécifications du type de calcul à usage général.
Utilisation
Pour les scénarios où la Quality of Service (QoS) est Burstable (.resources.limits > .resources.requests), déclarez les spécifications de ressources cibles pour un pod en spécifiant l'annotation alibabacloud.com/pod-required-spec: "X-YGi". Les spécifications de ressources doivent respecter le format <CPU>-<Memory>, où le CPU est exprimé en cœurs (par exemple, « 2 » représente 2 vCPU) et la mémoire en GiB (par exemple, « 4Gi » représente 4 GiB). Les règles détaillées d'alignement des ressources et d'utilisation sont les suivantes :
Si le format de la spécification de ressources est incorrect (unités manquantes, utilisation de MiB ou ordre erroné), la création du pod échoue.
Si vous définissez l'annotation sans configurer
.resourcespour aucun conteneur, le système suit strictement la valeur de l'annotation pour l'ajustement et ne revient pas à la spécification par défaut de 2 vCPU et 4 GiB.Si la valeur de l'annotation est inférieure à la somme des
.resources.requestsde tous les conteneurs du pod, la création du pod échoue.-
Si la valeur de l'annotation dépasse la somme des
.resources.limitsde tous les conteneurs du pod, le système utilise cette valeur comme spécification cible pour l'ajustement du pod.Dans un pod multi-conteneurs, le premier conteneur est considéré comme le conteneur principal. Le système calcule la différence entre la valeur de l'annotation et la somme des
limitsactuelles. Cette différence est ensuite ajoutée aux.resources.limitsdu conteneur principal. La valeur.resources.requestsest également ajustée si nécessaire pour aligner les ressources totales du pod sur la spécification cible.
Exemple
Par exemple, supposons que alibabacloud.com/pod-required-spec: "2-4Gi" soit configuré et que la valeur cumulée des .resources.requests ou des .resources.limits du conteneur soit de 1 vCPU et 2 GiB de mémoire. Au démarrage du pod, ACS ajuste automatiquement sa spécification à 2 vCPU et 4 GiB de mémoire. Les ressources supplémentaires issues de cet ajustement sont attribuées au premier conteneur, et le pod reçoit l'annotation alibabacloud.com/pod-use-spec=2-4Gi.
Voici un exemple de déclaration de ressources :
La valeur .resources.limits.memory est de 3,5 GiB.
apiVersion: v1
kind: Pod
metadata:
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
alibabacloud.com/compute-qos: default
annotations:
alibabacloud.com/pod-required-spec: "2-4Gi"
name: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
requests:
cpu: 1 # Declare 1 vCPU
memory: "2Gi" # Declare 2 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
limits:
cpu: 2 # Declare 2 vCPUs
memory: "3.5Gi" # Declare 3.5 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
La déclaration de ressources après ajustement est la suivante :
La valeur .resources.limits.memory passe de 3,5 GiB à 4 GiB.
apiVersion: v1
kind: Pod
metadata:
annotations:
alibabacloud.com/pod-required-spec: "2-4Gi"
alibabacloud.com/pod-use-spec: "2-4Gi"
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
alibabacloud.com/compute-qos: default
name: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
requests:
cpu: 1 # Declare 1 vCPU
memory: "2Gi" # Declare 2 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
limits:
cpu: 2 # Declare 2 vCPUs
memory: "4Gi" # Declare 4 GiB of memory
ephemeral-storage: "30Gi" # Declare 30 GiB of storage space
Types de calcul accéléré
Voici les modèles de GPU pris en charge par ACS. Les spécifications varient selon les modèles. Pour obtenir le détail des correspondances de spécifications, envoyez une demande afin d'obtenir plus d'informations.
GU8TF
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (96 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 256 |
4 | 4 to 32 | 1 | ||
6 | 6 to 48 | 1 | ||
8 | 8 to 64 | 1 | ||
10 | 10 to 80 | 1 | ||
12 | 12 to 96 | 1 | ||
14 | 14 to 112 | 1 | ||
16 | 16 to 128 | 1 | ||
22 | 22, 32, 64, 128 | N/A | ||
2 (96 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | 30 to 512 |
32 | 32, 64, 128, 230 | N/A | ||
46 | 64, 128, 230 | N/A | ||
4 GPUs (96 GB each) | 32 | 32, 64, 128, 256 | N/A | 30 to 1024 |
64 | 64, 128, 256, 460 | N/A | ||
92 | 128, 256, 460 | N/A | ||
8 GPUs (96 × 8 GB total GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30 to 2048 |
128 | 128, 256, 512, 920 | N/A | ||
184 | 256, 512, 920 | N/A |
GU8TEF
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (141 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 768 |
4 | 4 to 32 | 1 | ||
6 | 6 to 48 | 1 | ||
8 | 8 to 64 | 1 | ||
10 | 10 to 80 | 1 | ||
12 | 12 to 96 | 1 | ||
14 | 14 to 112 | 1 | ||
16 | 16 to 128 | 1 | ||
22 | 22, 32, 64, 128, 225 | N/A | ||
2 (141 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | 30 to 1536 |
32 | 32, 64, 128, 256 | N/A | ||
46 | 64, 128, 256, 450 | N/A | ||
4 (141 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30 to 3072 |
64 | 64, 128, 256, 512 | N/A | ||
92 | 128, 256, 512, 900 | N/A | ||
8 (141 GB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30 to 6144 |
128 | 128, 256, 512, 1024 | N/A | ||
184 | 256, 512, 1024, 1800 | N/A |
L20(GN8IS)
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (48 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 256 |
4 | 4 to 32 | 1 | ||
6 | 6 to 48 | 1 | ||
8 | 8 to 64 | 1 | ||
10 | 10 to 80 | 1 | ||
12 | 12 to 96 | 1 | ||
14 | 14 to 112 | 1 | ||
16 | 16 to 120 | 1 | ||
2 (48 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | 30 to 512 |
32 | 32, 64, 128, 230 | N/A | ||
4 (48 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30 to 1024 |
64 | 64, 128, 256, 460 | N/A | ||
8 (48 GB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30 to 2048 |
128 | 128, 256, 512, 920 | N/A |
L20X (GX8SF)
|
GPU (cards) |
vCPU |
Memory (GiB) |
Memory step size (GiB) |
Storage (GiB) |
|
8 (141 GB × 8 GPU memory) |
184 |
1800 |
N/A |
30 to 6144 |
P16EN
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (96 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 384 |
4 | 4 to 32 | 1 | ||
6 | 6 to 48 | 1 | ||
8 | 8 to 64 | 1 | ||
10 | 10 to 80 | 1 | ||
2 (96 GB × 2 GPU memory) | 4 | 4 to 32 | 1 | 30 to 768 |
6 | 6 to 48 | 1 | ||
8 | 8 to 64 | 1 | ||
16 | 16 to 128 | 1 | ||
22 | 32, 64, 128, 225 | N/A | ||
4 (96 GB × 4 GPU memory) | 8 | 8 to 64 | 1 | 30 to 1536 |
16 | 16 to 128 | 1 | ||
32 | 32, 64, 128, 256 | N/A | ||
46 | 64, 128, 256, 450 | N/A | ||
8 (96 GB × 8 GPU memory) | 16 | 16 to 128 | 1 | 30 to 3072 |
32 | 32, 64, 128, 256 | N/A | ||
64 | 64, 128, 256, 512 | N/A | ||
92 | 128, 256, 512, 900 | N/A | ||
16 (96 GB × 16 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30 to 6144 |
64 | 64, 128, 256, 512 | N/A | ||
128 | 128, 256, 512, 1024 | N/A | ||
184 | 256, 512, 1024, 1800 | N/A |
T4
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (16 GB GPU memory) | 2 | 2 to 8 | 1 | 30 to 1536 |
4 | 4 to 16 | 1 | ||
6 | 6 to 24 | 1 | ||
8 | 8 to 32 | 1 | ||
10 | 10 to 40 | 1 | ||
12 | 12 to 48 | 1 | ||
14 | 14 to 56 | 1 | ||
16 | 16 to 64 | 1 | ||
24 | 24, 48, 90 | N/A | 30 to 1536 | |
2 (16 GB × 2 GPU memory) | 16 | 16 to 64 | 1 | |
24 | 24, 48, 96 | N/A | ||
32 | 32, 64, 128 | N/A | ||
48 | 48, 96, 180 | N/A |
A10
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (24 GB GPU memory) | 2 | 2 to 8 | 1 | 30 to 256 |
4 | 4 to 16 | 1 | ||
6 | 6 to 24 | 1 | ||
8 | 8 to 32 | 1 | ||
10 | 10 to 40 | 1 | ||
12 | 12 to 48 | 1 | ||
14 | 14 to 56 | 1 | ||
16 | 16 to 60 | 1 | ||
2 (24 GB × 2 GPU memory) | 16 | 16 to 64 | 1 | 30 to 512 |
32 | 32, 64, 120 | N/A | ||
4 (24 GB × 4 GPU memory) | 32 | 32, 64, 128 | N/A | 30 to 1024 |
64 | 64, 128, 240 | N/A | ||
8 (24 GB × 8 GPU memory) | 64 | 64, 128, 256 | N/A | 30 to 2048 |
128 | 128, 256, 480 | N/A |
G28Ti
GPU (cartes) | vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Stockage (GiB) |
1 (mémoire GPU de 11 Go) | 2 | 2 à 8 | 1 | 30 à 1536 |
4 | 4 à 16 | 1 | ||
6 | 6 à 24 | 1 | ||
8 | 8 à 32 | 1 | ||
10 | 10 à 40 | 1 | ||
12 | 12 à 48 | 1 |
G49E
GPU (cartes) | vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Stockage (GiB) |
1 (mémoire GPU de 48 Go) | 2 | 2 à 16 | 1 | 30 à 256 |
4 | 4 à 32 | 1 | ||
6 | 6 à 48 | 1 | ||
8 | 8 à 64 | 1 | ||
10 | 10 à 80 | 1 | ||
12 | 12 à 96 | 1 | ||
14 | 14 à 112 | 1 | ||
16 | 16 à 120 | 1 | ||
2 (mémoire GPU de 48 Go × 2) | 16 | 16 à 128 | 1 | 30 à 512 |
32 | 32, 64, 128, 230 | N/A | ||
4 (mémoire GPU de 48 Go × 4) | 32 | 32, 64, 128, 256 | N/A | 30 à 1024 |
64 | 64, 128, 256, 460 | N/A | ||
8 (mémoire GPU de 48 Go × 8) | 64 | 64, 128, 256, 512 | N/A | 30 à 2048 |
128 | 128, 256, 512, 920 | N/A |
G59
GPU (cartes) | vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Stockage (GiB) |
1 (mémoire GPU de 32 Go) | 2 | 2 à 16 | 1 | 30 à 256 |
4 | 4 à 32 | 1 | ||
6 | 6 à 48 | 1 | ||
8 | 8 à 64 | 1 | ||
10 | 10 à 80 | 1 | ||
12 | 12 à 96 | 1 | ||
14 | 14 à 112 | 1 | ||
16 | 16 à 128 | 1 | ||
22 | 22, 32, 64, 128 | N/A | ||
2 (mémoire GPU de 32 Go × 2) | 16 | 16 à 128 | 1 | 30 à 512 |
32 | 32, 64, 128, 256 | N/A | ||
46 | 64, 128, 256, 360 | N/A | ||
4 (mémoire GPU de 32 Go × 4) | 32 | 32, 64, 128, 256 | N/A | 30 à 1024 |
64 | 64, 128, 256, 512 | N/A | ||
92 | 128, 256, 512, 720 | N/A | ||
8 (mémoire GPU de 32 Go × 8) | 64 | 64, 128, 256, 512 | N/A | 30 à 2048 |
128 | 128, 256, 512, 1024 | N/A | ||
184 | 256, 512, 1024, 1440 | N/A |
L20N
GPU (cartes) | vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Stockage (GiB) |
1 (mémoire GPU de 48 Go) | 2 | 2 à 16 | 1 | 30 à 2048 |
4 | 4 à 32 | 1 | ||
6 | 6 à 48 | 1 | ||
8 | 8 à 64 | 1 | ||
10 | 10 à 80 | 1 | ||
12 | 12 à 96 | 1 | ||
14 | 14 à 112 | 1 | ||
16 | 16 à 128 | 1 | ||
32 | 32, 64, 128, 256 | N/A | ||
2 (mémoire GPU de 48 Go × 2) | 16 | 16 à 128 | 1 | |
32 | 32, 64, 128, 256 | N/A | ||
64 | 64, 128, 256, 512 | N/A | ||
4 (mémoire GPU de 48 Go × 4) | 32 | 32, 64, 128, 256 | N/A | |
64 | 64, 128, 256, 512 | N/A | ||
128 | 128, 256, 512, 1024 | N/A | ||
8 (mémoire GPU de 48 Go × 8) | 64 | 64, 128, 256, 512 | N/A | |
128 | 128, 256, 512, 1024 | N/A | ||
256 | 256, 512, 1024, 2048 | N/A |
L20NE
GPU (cartes) | vCPU | Mémoire (GiB) | Pas de mémoire (GiB) | Stockage (GiB) |
1 (mémoire GPU de 72 Go) | 2 | 2 à 16 | 1 | 30 à 2048 |
4 | 4 à 32 | 1 | ||
6 | 6 à 48 | 1 | ||
8 | 8 à 64 | 1 | ||
10 | 10 à 80 | 1 | ||
12 | 12 à 96 | 1 | ||
14 | 14 à 112 | 1 | ||
16 | 16 à 128 | 1 | ||
32 | 32, 64, 128, 256 | N/A | ||
2 (mémoire GPU de 72 Go × 2) | 16 | 16 à 128 | 1 | |
32 | 32, 64, 128, 256 | N/A | ||
64 | 64, 128, 256, 512 | N/A | ||
4 (mémoire GPU de 72 Go × 4) | 32 | 32, 64, 128, 256 | N/A | |
64 | 64, 128, 256, 512 | N/A | ||
128 | 128, 256, 512, 1024 | N/A | ||
8 (mémoire GPU de 72 Go × 8) | 64 | 64, 128, 256, 512 | N/A | |
128 | 128, 256, 512, 1024 | N/A | ||
256 | 256, 512, 1024, 2048 | N/A |
Les modèles ci-dessus partagent les mêmes spécifications pour les instances en paiement à l'utilisation, avec réservation de capacité et BestEffort. Veuillez noter les points suivants :
Pour les spécifications disposant de 16 GiB de mémoire ou moins, la surcharge mémoire est prise en charge par ACS. Au-delà de 16 GiB, cette surcharge est allouée aux pods correspondants. Veillez à réserver suffisamment de ressources pour votre application afin d'en garantir le bon fonctionnement.
Les disques système d'une capacité inférieure ou égale à 30 GiB (taille de l'image incluse) n'engendrent aucun frais supplémentaire. La capacité excédentaire des disques système supérieurs à 30 GiB est facturée séparément.
Ajustement automatique des spécifications
En l'absence de spécification explicite, un pod de conteneur GPU est créé avec la configuration minimale correspondant au type de GPU sélectionné (par exemple, 2 vCPU, 2 Gio de mémoire et 1 carte GPU).
ACS ajuste automatiquement les spécifications non prises en charge. Après cet ajustement, le champ .resources.requests du conteneur reste inchangé, mais la spécification effective du pod apparaît dans l'annotation alibabacloud.com/pod-use-spec. Si la limite de ressources définie pour un conteneur (resources.limits) dépasse la spécification du pod, ACS aligne cette limite sur la spécification du pod.
Logique d'ajustement CPU et mémoire : si le cumul des ressources de tous les conteneurs atteint 2 vCPU et 3,5 Gio de mémoire, ACS ajuste automatiquement le pod à 2 vCPU et 4 Gio de mémoire. Les ressources supplémentaires issues de cet ajustement sont attribuées au premier conteneur. Le pod porte alors l'annotation
alibabacloud.com/pod-use-spec=2-4Gi. Si un conteneur individuel du pod demande une limite de 3 vCPU et 5 Gio de mémoire, sa limite est ramenée à 2 vCPU et 5 Gio.Logique d'ajustement GPU : la soumission du pod échoue si le nombre de GPU demandés ne figure pas dans la table.
Type de calcul GPU-HPN
Pour le type de calcul GPU-HPN, ACS aligne la limite de ressources sur la demande, en se basant sur la valeur demandée. Les spécifications de ressources du pod sont également contraintes par la capacité du nœud. Si les spécifications demandées dépassent cette capacité, le pod passe à l'état pending en raison d'un manque de ressources. Pour plus d'informations sur les spécifications des nœuds, consultez la description des spécifications sur la page d'achat.
Limites des applications Kubernetes
ACS s'intègre à Kubernetes via des nœuds virtuels. Les instances de pod ACS ne s'exécutent pas sur des nœuds physiques centralisés, mais sont réparties dans le pool de ressources d'Alibaba Cloud. En raison des exigences de sécurité du cloud public et des limitations des nœuds virtuels, ACS ne prend pas en charge certaines fonctionnalités Kubernetes telles que HostPath et DaemonSet, comme indiqué dans le tableau suivant.
Limite | Description | Action en cas d'échec de validation | Alternative recommandée |
DaemonSet | L'utilisation des charges de travail DaemonSet est restreinte. | Le pod s'exécute mais ne fonctionne pas comme prévu. | Déployez plusieurs conteneurs dans le pod en tant que sidecars. |
Service avec type=NodePort | Mappage des ports de l'hôte vers le conteneur | La soumission est rejetée. | Utilisez un équilibreur de charge avec |
HostNetwork | Le mappage des ports de l'hôte aux conteneurs est restreint. | La valeur est réécrite en | Non requis. |
HostIPC | La communication inter-processus entre les processus du conteneur et ceux de l'hôte est restreinte. | La valeur est réécrite en | Non requis. |
HostPID | La visibilité de l'espace PID de l'hôte par le conteneur est restreinte. | La valeur est réécrite en | Non requis. |
HostUsers | L'utilisation des namespaces utilisateur est restreinte. | La valeur est réécrite pour être vide. | Non requis. |
DNSPolicy | L'utilisation de DNSPolicies spécifiques est restreinte. Remarque
|
| Utilisez une valeur autorisée. |
Format des variables d'environnement du conteneur | Outre les contraintes par défaut imposées par le serveur API Kubernetes sur les variables d'environnement, pour les types de calcul GPU et GPU-HPN, ACS exige que les noms des variables d'environnement soient composés uniquement de lettres, chiffres, traits de soulignement, points ou traits d'union, et ne commencent pas par un chiffre. | Le démarrage du pod échoue. | Utilisez un nom de variable d'environnement conforme. |
Nombre de variables d'environnement du conteneur | En raison des contraintes liées à la longueur de la liste des paramètres pour les appels système sous Linux, le nombre de variables d'environnement pour un seul conteneur doit être limité à environ 2 000 maximum. Par ailleurs, si | Le démarrage du pod échoue. | Réduisez le nombre de variables d'environnement du conteneur. S'il existe de nombreux Services, définissez |
Utilisation des ports
Le tableau suivant décrit les ports utilisés par ACS. Évitez d'utiliser ces ports lors du déploiement de services.
|
Port |
Description |
|
111, 10250, 10255 |
Ports utilisés par les clusters ACS pour des interfaces telles que exec, logs et metrics. |