Container Compute Service (ACS) runs pods as the basic unit of deployment. Each ACS pod is a fully isolated, serverless container runtime backed by lightweight sandboxed container technology—no node management required. This topic covers compute types, resource specifications, core capabilities, and Kubernetes limitations for ACS pods.
Compute types
ACS supports four compute types. Use the alibabacloud.com/compute-class label to specify the compute type for a pod.
| Compute type | Label | Best for |
|---|---|---|
| General-purpose (default) | general-purpose |
Stateless microservices, Java web applications, and compute-intensive tasks |
| Compute-optimized | performance |
CPU-based AI/ML training and inference, and High Performance Computing (HPC) batch processing |
| GPU | gpu |
Single-GPU and multi-GPU inference, and GPU parallel computing |
| GPU-HPN (High-Performance Network GPU) | gpu-hpn |
GPU distributed training, distributed inference, and GPU high-performance computing |
The following YAML examples show how to set the compute type for a Deployment.
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:latest
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
# Specify the compute type as gpu
alibabacloud.com/compute-class: "gpu"
# Specify the GPU model series. 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"
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1"
For supported GPU models and specifications, see Accelerated compute types.
GPU-HPN
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
# Specify the compute type as 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"
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1"
To use GPU-HPN instances, first create a GPU-HPN capacity reservation.
Computing power Quality of Service (QoS)
ACS supports two computing power QoS types. Use the alibabacloud.com/compute-qos label to set the QoS for a pod.
| QoS type | Label | Behavior | Typical use cases |
|---|---|---|---|
| Default | default |
Some computing power fluctuations may occur. No forced eviction—failures are resolved through hot migration or user-triggered eviction notifications. | Microservices, web applications, compute-intensive tasks |
| BestEffort | best-effort |
Some computing power fluctuations may occur. Forced preemption and eviction may occur. You receive an event notification 5 minutes before eviction. | Big data computing, audio and video transcoding, batch processing |
ACS QoS types differ from Kubernetes native QoS classes. The Default computing power QoS maps to Kubernetes' Guaranteed QoS class.
BestEffort instances use dynamic stock. In production, prioritize BestEffort when stock is available and automatically fall back to Default QoS when BestEffort stock runs out. For details, see Custom resource scheduling policies.
The following example sets the computing power QoS 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
Compute type and QoS compatibility
| Compute type | Supported QoS |
|---|---|
General-purpose (general-purpose) |
Default, BestEffort |
Compute-optimized (performance) |
Default, BestEffort |
GPU (gpu) |
Default, BestEffort |
GPU-HPN (gpu-hpn) |
Default only |
CPU brand
The general-purpose and compute-optimized compute types support both Intel and AMD CPUs. Specify the CPU vendor using the alibabacloud.com/cpu-vendors annotation on a pod or in the pod template of a workload.
To use AMD CPUs, submit a ticketsubmit a ticketsubmit a ticketsubmit a ticket to enable whitelist support. Specifying a CPU vendor for other compute types returns an error.
| Value | Description |
|---|---|
intel (default) |
Intel CPU. If the annotation is not set, Intel is used. |
amd |
AMD CPU. Requires whitelist enablement. |
intel,amd |
Either Intel or AMD, selected based on inventory. Custom ordering is not supported when multiple values are specified. |
After a pod is created, check the actual CPU brand in the alibabacloud.com/cpu-vendor label of the pod YAML.
The following example specifies AMD as the CPU vendor:
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 tags—such as alibabacloud.com/compute-class, alibabacloud.com/compute-qos, and alibabacloud.com/cpu-vendor—as filter labels in workload matchLabels. The system may modify these labels, causing controllers to frequently recreate pods and affecting application stability.
Core features
| Feature | Description |
|---|---|
| Security isolation | Each ACS pod runs in a strongly isolated environment backed by lightweight sandboxed container technology. Instances do not affect each other and are distributed across different physical machines during scheduling for high availability. |
| CPU, memory, GPU, and ephemeral storage | Configure resources.requests and resources.limits per container using standard Kubernetes methods. ACS pod resources equal the sum of all container resources, and ACS automatically normalizes pod specifications. If limits are not specified, the default limit is the sum of all container resources in the normalized pod. |
| Image | Each time an ACS pod restarts, it pulls container images from a remote registry over the VPC. Public images require a NAT gateway for the VPC. Store images in Container Registry (ACR) to reduce pull time. For ACR private images, ACS supports a passwordless image pull feature. |
| Storage | Supports cloud disk, Apsara File Storage NAS, Object Storage Service (OSS), and Cloud Parallel File Storage (CPFS) as persistent storage types. |
| Network | Each ACS pod gets an independent pod IP, occupying one Elastic Network Interface (ENI) on the vSwitch. Pods can be accessed directly by pod IP, via a LoadBalancer Service, via a ClusterIP Service, or through an Elastic IP Address (EIP). |
| Log collection | Configure environment variables on the pod to collect stdout or file logs and send them to Simple Log Service (SLS). |
Storage details
Cloud disk
Supports ESSD (Enhanced SSD), ESSD AutoPL, standard SSD, and ultra disk types. Supports dynamic provisioning as persistent volumes (PVs). For details, see Disk volumes overview and Use dynamically provisioned volumes for cloud disks.
NAS
Supports static provisioning with Capacity and Extreme NAS file systems. Supports dynamic provisioning with Capacity NAS (default). For details, see NAS volumes overview.
OSS
Supports static provisioning as PVs. For details, see Use OSS static persistent volumes.
CPFS
Supports static provisioning as PVs. For details, see Use CPFS static persistent volumes.
Network details
In an ACS cluster, connect pods using any of the following methods:
-
Access directly using the pod IP.
-
Use a LoadBalancer Service. For details, see Expose applications using an existing Server Load Balancer.
-
Use the cluster IP of a ClusterIP Service to access backend pods. For details, see Create a ClusterIP type service.
-
Attach an EIP—either auto-created or an existing EIP instance. For details, see Attach an EIP to a pod by configuring an annotation.
Resource specifications
How ACS normalizes pod specifications
ACS automatically normalizes pod specifications on submission. The normalization logic works as follows:
-
ACS calculates the maximum cumulative value of
.resources.requestsor.resources.limitsacross all containers. -
It rounds up to the nearest supported specification.
-
The normalized specification is recorded in the
alibabacloud.com/pod-use-specannotation (for example,2-4Gi). -
If upward normalization occurs, ACS adjusts the first container's
.resources.requestsor.resources.limitsto ensure full utilization of paid resources.
If you do not set resources.requests or resources.limits, the default pod specification is 2 vCPUs and 4 GiB of memory.
Example: If the cumulative value is 2 vCPUs and 3.5 GiB of memory, ACS normalizes the pod to 2 vCPUs and 4 GiB. The extra 0.5 GiB is allocated to the first container, and the pod gets the annotation alibabacloud.com/pod-use-spec=2-4Gi.
Before normalization:
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 # 2 vCPUs
memory: "3.5Gi"
ephemeral-storage: "30Gi"
After normalization:
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 # 2 vCPUs
memory: "4Gi" # Normalized from 3.5 GiB to 4 GiB
ephemeral-storage: "30Gi"
Specify pod specifications using an annotation
For Burstable QoS workloads (.resources.limits > .resources.requests), use the alibabacloud.com/pod-required-spec: "X-YGi" annotation to declare the target pod specification explicitly.
Scope
-
Applies to general-purpose and compute-optimized CPU pods only.
-
Maximum supported specification: 64 vCPU / 512 GiB, consistent with the general-purpose compute type specifications.
Format
Use <CPU>-<Memory> format, where CPU is in cores (for example, "2" means 2 vCPUs) and memory is in GiB (for example, "4Gi" means 4 GiB).
Validation rules
-
Invalid format (missing units, using Mi, reversed order) causes pod creation to fail.
-
If the annotation is set but no container
.resourcesare defined, the system normalizes strictly to the annotation value and does not fall back to defaults (2 vCPUs / 4 GiB). -
If the annotation value is less than the sum of all container
.resources.requests, pod creation fails. -
If the annotation value exceeds the sum of all container
.resources.limits, the annotation value is used as the target normalized specification. In multi-container pods, the first container (the primary container) receives the difference between the annotation value and the current sum of limits, with.resources.requestsadjusted accordingly.
Example
Setting alibabacloud.com/pod-required-spec: "2-4Gi" when container resources declare 1 vCPU / 2 GiB requests and 2 vCPU / 3.5 GiB limits causes ACS to normalize the pod to 2 vCPUs and 4 GiB.
Before normalization (.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 # 1 vCPU
memory: "2Gi"
ephemeral-storage: "30Gi"
limits:
cpu: 2 # 2 vCPUs
memory: "3.5Gi"
ephemeral-storage: "30Gi"
After normalization (.resources.limits.memory is normalized 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 # 1 vCPU
memory: "2Gi"
ephemeral-storage: "30Gi"
limits:
cpu: 2 # 2 vCPUs
memory: "4Gi" # Normalized from 3.5 GiB to 4 GiB
ephemeral-storage: "30Gi"
General-purpose compute type
To use a pod with more than 16 vCPUs or more than 128 GiB of memory, submit a ticketsubmit a ticketsubmit a ticketsubmit a ticket to request approval.
| vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (egress + ingress) (Gbps) | Storage |
|---|---|---|---|---|
| 0.25 | 0.5, 1, 2 | N/A | 0.08 | Up to 30 GiB is free. Storage exceeding 30 GiB is billed for the excess. Maximum: 512 GiB. Mount persistent volumes (such as NAS) for additional storage. |
| 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 |
Compute-optimized compute type
To use a pod with more than 16 vCPUs or more than 128 GiB of memory, submit a ticketsubmit a ticketsubmit a ticketsubmit a ticket to request approval.
| vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (egress + ingress) (Gbps) | Storage |
|---|---|---|---|---|
| 0.25 | 0.5, 1, 2 | N/A | 0.1 | Up to 30 GiB is free. Storage exceeding 30 GiB is billed for the excess. Maximum: 512 GiB. Mount persistent volumes (such as NAS) for additional storage. |
| 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 |
Accelerated compute types
The following GPU card types are supported. Specifications vary by card type. To get the exact specification mapping, submit a ticketsubmit a ticketsubmit a ticketsubmit a ticket.
-
For specifications with 16 GiB or less of memory, ACS covers memory overhead. For specifications exceeding 16 GiB, memory overhead is distributed to the corresponding pods. Reserve sufficient resources for your applications.
-
System disk capacity of 30 GiB or less (including image size) does not incur additional charges. You are billed only for capacity exceeding 30 GiB.
In an ACS cluster, GPU and GPU-HPN pod specifications are automatically normalized to Guaranteed QoS (request equals limit) on submission. When accessing ACS GPU compute through other channels—such as ACK or ACK One clusters—normalization is not reflected in pod metadata. Make sure the pod QoS remains unchanged before and after submission (GPU compute types must maintain Guaranteed QoS) to prevent pod status update failures.
GU8TF
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
|---|---|---|---|---|
| 1 (96 GiB GPU memory) | 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 (96 GiB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
| 32 | 32, 64, 128, 230 | N/A | ||
| 46 | 64, 128, 230 | N/A | ||
| 4 (96 GiB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 |
| 64 | 64, 128, 256, 460 | N/A | ||
| 92 | 128, 256, 460 | N/A | ||
| 8 (96 GiB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30–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 GiB GPU memory) | 2 | 2–16 | 1 | 30–768 |
| 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, 225 | N/A | ||
| 2 (141 GiB × 2 GPU memory) | 16 | 16–128 | 1 | 30–1536 |
| 32 | 32, 64, 128, 256 | N/A | ||
| 46 | 64, 128, 256, 450 | N/A | ||
| 4 (141 GiB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–3072 |
| 64 | 64, 128, 256, 512 | N/A | ||
| 92 | 128, 256, 512, 900 | N/A | ||
| 8 (141 GiB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30–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 GiB GPU memory) | 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 (48 GiB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
| 32 | 32, 64, 128, 230 | N/A | ||
| 4 (48 GiB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 |
| 64 | 64, 128, 256, 460 | N/A | ||
| 8 (48 GiB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30–2048 |
| 128 | 128, 256, 512, 920 | N/A |
L20X (GX8SF)
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
|---|---|---|---|---|
| 8 (141 GiB × 8 GPU memory) | 184 | 1800 | N/A | 30–6144 |
P16EN
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
|---|---|---|---|---|
| 1 (96 GiB GPU memory) | 2 | 2–16 | 1 | 30–384 |
| 4 | 4–32 | 1 | ||
| 6 | 6–48 | 1 | ||
| 8 | 8–64 | 1 | ||
| 10 | 10–80 | 1 | ||
| 2 (96 GiB × 2 GPU memory) | 4 | 4–32 | 1 | 30–768 |
| 6 | 6–48 | 1 | ||
| 8 | 8–64 | 1 | ||
| 16 | 16–128 | 1 | ||
| 22 | 32, 64, 128, 225 | N/A | ||
| 4 (96 GiB × 4 GPU memory) | 8 | 8–64 | 1 | 30–1536 |
| 16 | 16–128 | 1 | ||
| 32 | 32, 64, 128, 256 | N/A | ||
| 46 | 64, 128, 256, 450 | N/A | ||
| 8 (96 GiB × 8 GPU memory) | 16 | 16–128 | 1 | 30–3072 |
| 32 | 32, 64, 128, 256 | N/A | ||
| 64 | 64, 128, 256, 512 | N/A | ||
| 92 | 128, 256, 512, 900 | N/A | ||
| 16 (96 GiB × 16 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–6144 |
| 64 | 64, 128, 256, 512 | N/A | ||
| 128 | 128, 256, 512, 1024 | N/A | ||
| 184 | 256, 512, 1024, 1800 | N/A |
G49E
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
|---|---|---|---|---|
| 1 (48 GiB GPU memory) | 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 (48 GiB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
| 32 | 32, 64, 128, 230 | N/A | ||
| 4 (48 GiB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 |
| 64 | 64, 128, 256, 460 | N/A | ||
| 8 (48 GiB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30–2048 |
| 128 | 128, 256, 512, 920 | N/A |
T4
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
|---|---|---|---|---|
| 1 (16 GiB GPU memory) | 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 | ||
| 14 | 14–56 | 1 | ||
| 16 | 16–64 | 1 | ||
| 24 | 24, 48, 90 | N/A | ||
| 2 (16 GiB × 2 GPU memory) | 16 | 16–64 | 1 | 30–1536 |
| 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 GiB GPU memory) | 2 | 2–8 | 1 | 30–256 |
| 4 | 4–16 | 1 | ||
| 6 | 6–24 | 1 | ||
| 8 | 8–32 | 1 | ||
| 10 | 10–40 | 1 | ||
| 12 | 12–48 | 1 | ||
| 14 | 14–56 | 1 | ||
| 16 | 16–60 | 1 | ||
| 2 (24 GiB × 2 GPU memory) | 16 | 16–64 | 1 | 30–512 |
| 32 | 32, 64, 120 | N/A | ||
| 4 (24 GiB × 4 GPU memory) | 32 | 32, 64, 128 | N/A | 30–1024 |
| 64 | 64, 128, 240 | N/A | ||
| 8 (24 GiB × 8 GPU memory) | 64 | 64, 128, 256 | N/A | 30–2048 |
| 128 | 128, 256, 480 | N/A |
G59
| GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) | Networking |
|---|---|---|---|---|---|
| 1 (32 GiB GPU memory) | 2 | 2–16 | 1 | 30–256 | 1 Gbps per vCPU |
| 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 (32 GiB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 | |
| 32 | 32, 64, 128, 256 | N/A | |||
| 46 | 64, 128, 256, 360 | N/A | |||
| 4 (32 GiB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 | |
| 64 | 64, 128, 256, 512 | N/A | |||
| 92 | 128, 256, 512, 720 | N/A | |||
| 8 (32 GiB × 8 GPU memory) | 64 | 64, 128, 256, 512 | N/A | 30–2048 | |
| 128 | 128, 256, 512, 1024 | N/A | 100 Gbps | ||
| 184 | 256, 512, 1024, 1440 | N/A |
Automatic specification normalization for GPU pods
If you do not set resource requests or limits for a GPU pod, the pod selects the smallest supported specification for the GPU type—for example, 2 vCPUs, 2 GiB memory, and 1 GPU card.
For unsupported specifications, ACS normalizes automatically. After normalization:
-
The container's
.resources.requestsremain unchanged. -
The normalized specification appears in the
alibabacloud.com/pod-use-specannotation. -
If a container's
.resources.limitsexceeds the normalized specification, ACS sets the container's limit to match the pod specification.
CPU and memory normalization: If the sum across all containers is 2 vCPUs and 3.5 GiB, ACS normalizes to 2 vCPUs and 4 GiB. The extra resources apply to the first container, and the pod gets the annotation alibabacloud.com/pod-use-spec=2-4Gi. If a single container specifies 3 vCPUs and 5 GiB as limits, that container's limit is set to 2 vCPUs and 5 GiB.
GPU normalization: If the GPU count requested is not supported, pod submission fails.
GPU-HPN specifications
For GPU-HPN instances, ACS enforces resource alignment by setting limit equal to request. Pod resource specifications are also constrained by node capacity—if a pod's specifications exceed node capacity, the pod enters a pending state due to insufficient resources. For details about node specifications, see the purchasing specifications.
Limitations
ACS uses virtual nodes and does not run pods on standard nodes. Because pods are distributed across Alibaba Cloud's global resource pool, certain Kubernetes features are not supported.
| Limitation | Description | System response | Alternative |
|---|---|---|---|
| DaemonSet | DaemonSet workloads are restricted. | Pod starts but does not function normally. | Use the sidecar pattern to deploy multiple containers in a pod. |
| NodePort Service | Host port mapping to containers is not supported. | Submission rejected. | Use a LoadBalancer type Service (type=LoadBalancer). |
| HostNetwork | Host port mapping to containers is restricted. | Automatically rewritten to HostNetwork=false. |
Not required. |
| HostIPC | Inter-process communication between container and host processes is restricted. | Automatically rewritten to HostIPC=false. |
Not required. |
| HostPID | Container access to the host's PID namespace is restricted. | Automatically rewritten to HostPID=false. |
Not required. |
| HostUsers | User namespace usage is restricted. | Automatically rewritten to an empty value. | Not required. |
| DNSPolicy | Only None, Default, and ClusterFirst are allowed. |
ClusterFirstWithHostNet is rewritten to ClusterFirst. All other policies are rejected. |
Use only allowed values. |
| Container environment variable format | For GPU and GPU-HPN compute types, environment variable names must contain only letters, numbers, underscores, dots, or hyphens. The first character cannot be a number. | Pod startup fails. | Use environment variable names that meet these requirements. |
| Number of container environment variables | Limited to approximately 2,000 per container due to Linux system constraints. If enableServiceLinks is enabled (default: true), service information from all services in the namespace is injected as environment variables, which may exceed the limit. |
Pod startup fails. | Reduce environment variable count. For deployments with many services, set enableServiceLinks: false on the pod. |
Reserved ports
Avoid using the following ports when deploying services in ACS.
| Port | Used by |
|---|---|
| 111, 10250, 10255 | ACS cluster interfaces, including exec, logs, and metrics. |