A pod is the smallest deployable unit in Kubernetes and typically consists of one or more containers. The compute type and computing power quality of a pod significantly impact application performance and resource utilization. Container Compute Service (ACS) provides multiple compute types and corresponding computing power quality classes to meet diverse application requirements. This topic describes the core features and limitations of ACS pods, including security isolation, CPU, memory, and GPU resource and specification configurations, image pulling, storage, networking, and log collection.
Compute type definitions
ACS provides cost-effective CPU and GPU container compute types with different resource allocations to suit various business scenarios.
Compute type | Label | Features |
General-purpose (default) | general-purpose | Suitable for most stateless microservice applications, Java web applications, and computing tasks. |
Performance-optimized | performance | Suitable for scenarios that require higher performance, such as CPU-based AI/ML training and inference, and HPC batch processing. |
GPU type | gpu | Suitable for heterogeneous computing scenarios such as AI and HPC, including single-GPU and multi-GPU inference, and GPU parallel computing. |
High-performance network GPU (gpu-hpn) | gpu-hpn | Suitable for heterogeneous computing scenarios such as AI and HPC, including GPU distributed training, distributed inference, and GPU high-performance computing. |
The compute type is specified using the alibabacloud.com/compute-class label on the pod. The following examples show the YAML configuration for an NGINX application with the compute type set to general-purpose, gpu, or gpu-hpn.
General-purpose
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:latestGPU-accelerated
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.For more information about the GPU models and specifications that ACS supports, see Accelerated compute type specifications.
High-performance network 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-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.To use high-performance network GPUs in ACS, first create a GPU-HPN capacity reservation.
Computing power quality definitions
ACS provides two computing power quality classes with different resource allocations to suit various business scenarios.
Computing power quality | Label | Features | Typical application scenarios |
Default | default |
|
|
BestEffort | best-effort |
|
|
The computing power quality is specified using the alibabacloud.com/compute-qos label on the pod. The following example shows the YAML configuration for an NGINX application with the computing power quality set to 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 The computing power quality classes defined by ACS are different from the native QoS classes in Kubernetes. The default computing power quality class in ACS corresponds to the Guaranteed QoS class in Kubernetes.
The inventory for BestEffort instances is dynamic. In production environments, an inventory-first scheduling policy is strongly recommended. This policy allows the platform to automatically switch to the default quality class when inventory is unavailable. For more information, see Custom resource scheduling policy.
Mappings between compute types and computing power quality classes
Compute type (label) | Supported computing power quality classes (labels) |
General-purpose (general-purpose) | Default (default), BestEffort (best-effort) |
Performance-optimized (performance) | Default (default), BestEffort (best-effort) |
GPU type (gpu) | Default (default), BestEffort (best-effort) |
High-performance network GPU (gpu-hpn) | Default (default) |
Specify the CPU brand
The General-purpose (general-purpose) and Performance-optimized (performance) compute types support two CPU suppliers: Intel and AMD.
The CPU supplier is specified by adding the alibabacloud.com/cpu-vendors annotation to a pod or by defining the alibabacloud.com/cpu-vendors annotation in the pod template of a workload. To use AMD CPUs, submit a ticket to be added to the whitelist. Specifying this annotation for other compute types is not supported and results in an error message. The annotation supports the following values:
Key | Value | Definition |
| intel (default) | Specifies an Intel CPU. If not specified, the default value is "intel". |
amd | Specifies an AMD CPU. | |
intel, amd | Specifies either an Intel or AMD CPU. The system selects a suitable CPU brand to create the instance based on inventory. When multiple values are specified, a preferred order is not supported. |
After the instance is created, check the value of the alibabacloud.com/cpu-vendor label in the pod YAML to verify the actual CPU brand.
The following example shows the YAML configuration for an NGINX application, specifying the CPU brand as 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 Do not use ACS system labels, such as alibabacloud.com/compute-class, alibabacloud.com/compute-qos, and alibabacloud.com/cpu-vendor, as filter labels for the workload matchLabels. These labels can be modified by the system, which can cause the controller to frequently recreate pods and affect application stability.
Core features
Feature | Description |
Security isolation | ACS is a secure serverless container runtime. Each pod instance is strongly isolated using lightweight sandbox technology, with no cross-instance interference. During scheduling, instances are distributed across different physical machines as much as possible to maximize availability. |
CPU/Memory/GPU/EphemeralStorage resource specification configuration |
|
Image | By default, each time an ACS pod is restarted, it pulls an image from a remote container registry through the virtual private cloud (VPC) where the pod is deployed. If the registry is publicly accessible, a NAT gateway must be configured for the VPC. For faster image pulling through VPCs, use Container Registry (ACR) to host container images. In addition, ACS supports pulling private images from Container Registry without using Secrets. |
Storage | ACS supports four types of persistent storage: cloud disks, NAS, OSS, and CPFS.
|
Network | By default, an ACS pod uses an independent pod IP and occupies one ENI of a vSwitch. In an ACS cluster, pods can communicate with each other in the following ways:
|
Log collection | You can directly configure the pod's environment variables to collect |
Resource specifications
In an ACS cluster, pod specifications for GPU and GPU-HPN compute types are automatically adjusted upon submission. For example, GPU pods are uniformly adjusted to Guaranteed QoS (request equals limit). When using ACS GPU computing power from other sources (such as ACK or ACK One clusters), the resource specification adjustment is not reflected in the pod metadata. Ensure that the pod's QoS remains unchanged before and after submission. For GPU compute types, submit the pod with Guaranteed QoS to avoid pod status update failures.
General-purpose compute types
General-Purpose compute type
vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (inbound + outbound) (Gbit/s) | Storage |
0.25 | 0.5, 1, 2 | N/A | 0.08 | Capacities of 30 GiB or less are free. For capacities over 30 GiB, the excess capacity is billed separately. The maximum supported configuration is 2,000 GiB. For additional storage space, mount storage volumes such as NAS. |
0.5 | 1 to 4 | 1 | 0.08 | |
1 | 1 to 8 | 0.1 | ||
1.5 | 2 to 12 | 1 | ||
2 | 2 to 16 | |||
2.5 | 3 to 20 | 1.5 | ||
3 | 3 to 24 | |||
3.5 | 4 to 28 | |||
4 | 4 to 32 | |||
4.5 | 5 to 36 | |||
5 | 5 to 40 | |||
5.5 | 6 to 44 | |||
6 | 6 to 48 | |||
6.5 | 7 to 52 | 2.5 | ||
7 | 7 to 56 | |||
7.5 | 8 to 60 | |||
8 | 8 to 64 | |||
8.5 | 9 to 68 | |||
9 | 9 to 72 | |||
9.5 | 10 to 76 | |||
10 | 10 to 80 | |||
10.5 | 11 to 84 | |||
11 | 11 to 88 | |||
11.5 | 12 to 92 | |||
12 | 12 to 96 | |||
12.5 | 13 to 100 | 3 | ||
13 | 13 to 104 | |||
13.5 | 14 to 108 | |||
14 | 14 to 112 | |||
14.5 | 15 to 116 | |||
15 | 15 to 120 | |||
15.5 | 16 to 124 | |||
16 | 16 to 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 |
Performance compute type
vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (inbound + outbound) (Gbit/s) | Storage |
0.25 | 0.5, 1, 2 | N/A | 0.1 | Capacities of 30 GiB or less are free. For capacities over 30 GiB, the excess capacity is billed separately. The maximum supported configuration is 2,000 GiB. For additional storage space, mount storage volumes such as NAS. |
0.5 | 1 to 4 | 1 | 0.5 | |
1 | 1 to 8 | |||
1.5 | 2 to 12 | |||
2 | 2 to 16 | 1.5 | ||
2.5 | 3 to 20 | |||
3 | 3 to 24 | |||
3.5 | 4 to 28 | |||
4 | 4 to 32 | 2 | ||
4.5 | 5 to 36 | |||
5 | 5 to 40 | |||
5.5 | 6 to 44 | |||
6 | 6 to 48 | 2.5 | ||
6.5 | 7 to 52 | |||
7 | 7 to 56 | |||
7.5 | 8 to 60 | |||
8 | 8 to 64 | 3 | ||
8.5 | 9 to 68 | |||
9 | 9 to 72 | |||
9.5 | 10 to 76 | |||
10 | 10 to 80 | 3.5 | ||
10.5 | 11 to 84 | |||
11 | 11 to 88 | |||
11.5 | 12 to 92 | |||
12 | 12 to 96 | 4 | ||
12.5 | 13 to 100 | |||
13 | 13 to 104 | |||
13.5 | 14 to 108 | |||
14 | 14 to 112 | 4.5 | ||
14.5 | 15 to 116 | |||
15 | 15 to 120 | |||
15.5 | 16 to 124 | |||
16 | 16 to 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 |
To use ACS pods with more than 16 vCPUs or more than 128 GiB of memory, submit a ticket to request access.
If you do not specify specifications by setting the .resources.requests and .resources.limits for containers, a single pod is allocated 2 vCPUs and 4 GiB of memory by default.
ACS automatically adjusts the pod's specifications. The system calculates the cumulative .resources.requests and .resources.limits for all containers, takes the maximum of these two values, and adjusts the pod to the nearest supported specification. This adjusted specification is shown in the alibabacloud.com/pod-use-spec annotation. If an upward adjustment occurs, ACS modifies the container's .resources.requests or .resources.limits to ensure that the application can use all allocated resources.
ACS pod specification adjustment logic
For example, assume the cumulative value of .resources.requests or .resources.limits is 2 vCPUs and 3.5 GiB of memory. When the pod starts, ACS automatically adjusts the pod's specification to 2 vCPUs and 4 GiB of memory. The adjusted extra resources are applied to the first container, and the pod is annotated with alibabacloud.com/pod-use-spec=2-4Gi. The following is a sample resource declaration:
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 spaceThe resource declaration after adjustment is as follows:
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 spaceSpecify pod specifications using an annotation
Applicability
This feature is available only for CPU pods of the General-purpose (general-purpose) and Performance-optimized (performance) compute types.
The maximum specification supported by the annotation is 64 vCPUs and 512 GiB, which is subject to the general-purpose compute type specifications.
Usage
For scenarios where the Quality of Service (QoS) is Burstable (.resources.limits > .resources.requests), you can declare the target resource specifications for a pod by specifying the annotation alibabacloud.com/pod-required-spec: "X-YGi". The resource specifications must use the <CPU>-<Memory> format, where CPU is specified in cores (for example, "2" represents 2 vCPUs) and memory is specified in GiB (for example, "4Gi" represents 4 GiB). The detailed resource alignment and usage rules are as follows:
If the resource specification format is incorrect, such as missing units, using MiB, or having the wrong order, the pod fails to create.
If you set the annotation but do not define
.resourcesfor any container, the system strictly follows the value of the annotation for adjustment and does not fall back to the default specification of 2 vCPUs and 4 GiB.If the value of the annotation is less than the sum of
.resources.requestsfor all containers in the pod, the pod fails to create.If the value of the annotation is greater than the sum of
.resources.limitsfor all containers in the pod, the system uses the value of the annotation as the target specification for pod adjustment.In a multi-container pod, the first container is considered the primary container. The system calculates the difference between the annotation value and the sum of the current
limits. This difference is then added to the.resources.limitsof the primary container. The.resources.requestsvalue is also adjusted if necessary to align the pod's total resources with the target specification.
Example
For example, assume that alibabacloud.com/pod-required-spec: "2-4Gi" is configured and the cumulative value of the container's .resources.requests or .resources.limits is 1 vCPU and 2 GiB of memory. When the pod starts, ACS automatically adjusts the pod's specification to 2 vCPUs and 4 GiB of memory. The adjusted extra resources are applied to the first container, and the pod is annotated with alibabacloud.com/pod-use-spec=2-4Gi.
The following is a sample resource declaration:
The .resources.limits.memory is 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 spaceThe resource declaration after adjustment is as follows:
The .resources.limits.memory is adjusted from 3.5 GiB to 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 spaceAccelerated compute types
The following are the GPU models that ACS supports. The specifications of different models may vary. For specific specification mappings, submit a ticket for more information.
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 (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (11 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 |
G49E
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 |
G59
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (32 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 (32 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | 30 to 512 |
32 | 32, 64, 128, 256 | N/A | ||
46 | 64, 128, 256, 360 | N/A | ||
4 (32 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30 to 1024 |
64 | 64, 128, 256, 512 | N/A | ||
92 | 128, 256, 512, 720 | N/A | ||
8 (32 GB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30 to 2048 |
128 | 128, 256, 512, 1024 | N/A | ||
184 | 256, 512, 1024, 1440 | N/A |
L20N
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (48 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 2048 |
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 | ||
32 | 32, 64, 128, 256 | N/A | ||
2 (48 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | |
32 | 32, 64, 128, 256 | N/A | ||
64 | 64, 128, 256, 512 | N/A | ||
4 (48 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | |
64 | 64, 128, 256, 512 | N/A | ||
128 | 128, 256, 512, 1024 | N/A | ||
8 (48 GB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | |
128 | 128, 256, 512, 1024 | N/A | ||
256 | 256, 512, 1024, 2048 | N/A |
L20NE
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (72 GB GPU memory) | 2 | 2 to 16 | 1 | 30 to 2048 |
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 | ||
32 | 32, 64, 128, 256 | N/A | ||
2 (72 GB × 2 GPU memory) | 16 | 16 to 128 | 1 | |
32 | 32, 64, 128, 256 | N/A | ||
64 | 64, 128, 256, 512 | N/A | ||
4 (72 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | |
64 | 64, 128, 256, 512 | N/A | ||
128 | 128, 256, 512, 1024 | N/A | ||
8 (72 GB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | |
128 | 128, 256, 512, 1024 | N/A | ||
256 | 256, 512, 1024, 2048 | N/A |
The preceding models share the same specifications for pay-as-you-go, capacity reservation, and BestEffort instances. Note the following:
For specifications with 16 GiB of memory or less, the memory overhead is covered by ACS. For specifications with more than 16 GiB of memory, the memory overhead is allocated to the corresponding pods. Make sure to reserve sufficient resources for your application to ensure its stable operation.
System disks with a capacity of 30 GiB or less (including the image size) incur no additional charges. For system disks larger than 30 GiB, the excess capacity is billed separately.
Automatic specification adjustment
If no specification is specified, a GPU container pod is created with the minimum specification for the selected GPU type (for example, 2 vCPUs, 2 GiB of memory, and 1 GPU card).
ACS automatically adjusts unsupported specifications. After adjustment, the container's .resources.requests does not change, but the pod specification is shown in the alibabacloud.com/pod-use-spec annotation. When the resource limit specified for a container (resources.limits) exceeds the pod's specification, ACS sets the container's resource limit to the pod's specification.
CPU and memory adjustment logic: If the total resources of all containers add up to 2 vCPUs and 3.5 GiB of memory, ACS automatically adjusts the pod to 2 vCPUs and 4 GiB of memory. The adjusted extra resources are applied to the first container. The pod shows the annotation
alibabacloud.com/pod-use-spec=2-4Gi. If a single container in the pod specifies a resource limit of 3 vCPUs and 5 GiB of memory, its resource limit is set to 2 vCPUs and 5 GiB.GPU adjustment logic: If the number of GPUs requested by the pod is not in the table, the pod submission fails.
GPU-HPN compute type
For the GPU-HPN compute type, ACS adjusts the resource request and limit to be equal, based on the request value. The pod's resource specifications are also constrained by the node's capacity. If the requested specifications exceed the node's capacity, the pod enters a pending state due to insufficient resources. For more information about node specifications, see the specification description on the purchase page.
Limits on Kubernetes applications
ACS integrates with Kubernetes through virtual nodes. ACS pod instances do not run on centralized real nodes but are distributed across the Alibaba Cloud resource pool. Due to public cloud security requirements and virtual node limitations, ACS does not support certain Kubernetes features such as HostPath and DaemonSet, as listed in the following table.
Limit | Description | Action on validation failure | Recommended alternative |
DaemonSet | The use of DaemonSet workloads is restricted. | The pod runs but does not function as expected. | Deploy multiple containers in the pod as sidecars. |
Service with type=NodePort | Host-to-container port mapping | The submission is rejected. | Use a load balancer with |
HostNetwork | Mapping host ports to containers is restricted. | The value is rewritten to | Not required. |
HostIPC | Inter-process communication between container processes and host processes is restricted. | The value is rewritten to | Not required. |
HostPID | Container visibility of the host PID space is restricted. | The value is rewritten to | Not required. |
HostUsers | The use of user namespaces is restricted. | The value is rewritten to be empty. | Not required. |
DNSPolicy | The use of specific DNSPolicies is restricted. Note
|
| Use an allowed value. |
Container environment variable format | In addition to the default constraints on environment variables from the Kubernetes API server, for GPU and GPU-HPN compute types, ACS requires that environment variable names must consist of letters, numbers, underscores, periods, or hyphens, and must not start with a number. | The pod fails to start. | Use a compliant environment variable name. |
Number of container environment variables | Due to the constraints on the length of the parameter list for system calls in Linux, the number of environment variables for a single container must be limited to approximately 2,000 or fewer. In addition, if | The pod fails to start. | Reduce the number of container environment variables. If there are many Services, set |
Container security verification
Kubernetes container security verification ensures that containerized applications are protected during deployment and runtime. Properly configuring security contexts reduces the risk of vulnerabilities and helps meet compliance requirements.
To lift the container security restrictions for a specific scenario, submit a ticket. You are responsible for any resulting security risks. For more information, see the Shared Responsibility Model. The specific restrictions are listed in the following table:
Limit | Description | Action on validation failure | Recommended alternative |
Privileged Container | Restricts containers from running with privileged permissions. securityContext.privileged | Startup failed | Use a security context to add allowed capabilities or sysctls to the pod. |
PrivilegeEscalation | Privilege escalation for containers is restricted (securityContext.allowPrivilegeEscalation). | Startup failed | Use the default configuration. |
Linux capabilities | The use of certain Linux capabilities is restricted (securityContext.capabilities). Note The following options are supported:
| Startup failed | Use an allowed value. |
HostPath | Mounting local host files into containers is restricted. Note The following options are supported:
The SubPath configuration is not supported for GPU and GPU-HPN compute types. | Startup failed | Use an emptyDir volume, cloud disk, or NAS file system. |
Sysctl | The use of certain kernel parameters is restricted (securityContext.sysctls). Note The following options are supported:
| Startup failed | Use an allowed value. |
Port usage
The following table describes the ports that ACS uses. Avoid using these ports when deploying services.
Port | Description |
111, 10250, 10255 | Ports used by ACS clusters for interfaces such as exec, logs, and metrics. |