In modern cloud computing and containerized environments, a pod is the smallest deployable unit in Kubernetes and typically consists of one or more containers. The compute class and computing quality of a pod significantly affect application performance and resource utilization. Container Compute Service (ACS) provides multiple compute classes and corresponding computing quality levels to meet diverse business requirements. This topic describes the prerequisites, limits, and core features of ACS pods. These features include security isolation, CPU, memory, and GPU resource configuration, image pulling, storage, networking, and log collection.
Compute classes
ACS offers cost-effective CPU and GPU container compute classes. Different compute classes vary in resource allocation to suit different business scenarios.
Compute Type | Label | Features |
General-purpose (default) | general-purpose | Suitable for most stateless microservice applications, Java web applications, and compute-intensive tasks. |
Performance-enhanced | performance | Suitable for high-performance scenarios such as CPU-based AI/ML training and inference, and HPC batch processing. |
GPU-accelerated | gpu | Suitable for heterogeneous computing scenarios such as AI and HPC, including single-GPU or multi-GPU inference and GPU parallel computing. |
GPU-HPN | gpu-hpn | Suitable for heterogeneous computing scenarios such as AI and HPC, including GPU distributed training, distributed inference, and GPU-accelerated high-performance computing. |
You can specify a pod's compute class by adding the alibabacloud.com/compute-class label to the pod. The following examples show Nginx application deployments with compute classes set to general-purpose, gpu, and 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 compute-class to gpu.
alibabacloud.com/compute-class: "gpu"
# Set GPU model to example-model. Replace with your actual GPU model, such as 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 based on your actual needs.
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity based on your actual needs.For more information about the GPU models and specifications that are supported by ACS, see Accelerated compute instance types.
High-Performance Network GPU Type
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 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 based on your actual needs.
requests:
cpu: 4
memory: "8Gi"
nvidia.com/gpu: "1" # Specify the number of GPUs. Set the resource label and quantity based on your actual needs.To use HPN GPUs in ACS, you must first create a GPU-HPN capacity reservation.
Definition of computing power quality
ACS provides two computing quality classes. These classes differ in resource allocation to suit different business scenarios.
Computing quality | Label | Features | Typical scenarios |
Default | default |
|
|
BestEffort | best-effort |
|
|
You can specify a pod's computing quality by adding the alibabacloud.com/compute-qos label to the pod. The following example shows an Nginx application deployment with the computing 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 ACS computing quality classes differ from Kubernetes native QoS classes. The default computing quality class in ACS corresponds to the Guaranteed QoS class in Kubernetes.
BestEffort instances use a dynamic inventory. In production environments, you can configure inventory-priority scheduling so that ACS automatically switches to the default class when the BestEffort inventory is unavailable. For more information, see Custom resource scheduling policies.
Mapping between compute classes and computing quality classes
Compute class (label) | Supported computing quality (label) |
General-purpose (general-purpose) | Default (default), BestEffort (best-effort) |
Performance-enhanced (performance) | Default (default), BestEffort (best-effort) |
GPU-accelerated (gpu) | Default (default), BestEffort (best-effort) |
GPU-HPN (gpu-hpn) | Default (default) |
Specify CPU vendor
For general-purpose and performance-enhanced compute classes, you can choose between Intel and AMD CPUs.
To specify a CPU vendor, you can add the alibabacloud.com/cpu-vendors annotation to your pod or define the alibabacloud.com/cpu-vendors annotation in your workload's pod template. To specify AMD CPUs, you must submit a ticket to add your account to the whitelist. Specifying a CPU brand is not supported for instance types other than General-purpose and Performance-enhanced. The supported values for this annotation are listed below:
Key | Value | Description |
| intel (default) | Specifies an Intel CPU. If unspecified, defaults to intel. |
amd | Specifies an AMD CPU. | |
intel,amd | Allows either Intel or AMD CPUs. ACS selects a CPU vendor based on current inventory. You cannot specify a preferred order. |
After the instance is created, you can check the alibabacloud.com/cpu-vendor label in the pod YAML to verify the CPU vendor that is used.
The following example shows a Deployment for an Nginx application that specifies 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, in the matchLabels selector of your workload controller. These labels may be modified by the system. This can cause the controller to frequently recreate pods and affect application stability.
Core features
Feature | Description |
Security isolation | ACS pods run in a secure and reliable serverless container environment. Each pod is fully isolated at the underlying layer using lightweight sandbox technology, ensuring no interference between pods. Additionally, ACS schedules pods across different physical machines whenever possible to enhance high availability. |
CPU, memory, GPU, and ephemeral storage configuration |
|
Image | By default, each time an ACS pod starts, it pulls the container image through the VPC associated with the pod. If the image is public, you must enable a NAT gateway for the VPC. We recommend storing container images in Alibaba Cloud Container Registry (ACR) to reduce image pull time over the VPC network. Additionally, ACS provides passwordless ACR image pulling for private ACR images. |
Storage | ACS supports four types of persistent storage: cloud disks, NAS, OSS, and CPFS.
|
Network | By default, each ACS pod uses a dedicated pod IP address and occupies one elastic network interface (ENI) from a vSwitch. In ACS clusters, pods communicate using the following methods:
|
Log collection | Configure pod environment variables to collect |
Resource specifications
In ACS clusters, pod specifications for GPU and GPU-HPN compute classes are automatically adjusted when the pod is submitted. For example, GPU compute class pods are adjusted to the Guaranteed QoS class, where requests equal limits. When you use ACS GPU capacity elastically through other channels, such as ACK clusters or ACK One clusters, specification adjustments are not reflected in the pod metadata. To prevent pod status update failures, ensure that the pod's QoS class remains unchanged before and after submission. For example, GPU compute class pods must be submitted with the Guaranteed QoS class.
General-purpose compute classes
General-purpose compute class
vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (bidirectional) (Gbit/s) | Storage |
0.25 | 0.5, 1, 2 | N/A | 0.08 | Storage up to 30 GiB is free. Capacity beyond 30 GiB is billed for the excess, with a maximum of 512 GiB. To expand storage, mount NAS volumes or other storage types. |
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 |
Performance-enhanced compute class
vCPU | Memory (GiB) | Memory step size (GiB) | Network bandwidth (bidirectional) (Gbit/s) | Storage |
0.25 | 0.5, 1, 2 | N/A | 0.1 | Storage up to 30 GiB is free. Capacity beyond 30 GiB is billed for the excess, with a maximum of 512 GiB. To expand storage, mount NAS volumes or other storage types. |
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 |
To use ACS pods with more than 16 vCPUs or 128 GiB of memory, you must submit a ticket.
If you do not specify resource requests or limits for containers (neither .resources.requests nor .resources.limits), each pod defaults to 2 vCPUs and 4 GiB of memory.
ACS automatically adjusts pod specifications by rounding the total container .resources.requests or .resources.limits up to the nearest supported specification. The adjusted specification is available in the alibabacloud.com/pod-use-spec annotation. If the specification is rounded up, ACS adjusts the container's .resources.requests or .resources.limits to ensure that all paid resources are utilized.
ACS pod specification adjustment logic
For example, if the sum of .resources.requests or .resources.limits is 2 vCPUs and 3.5 GiB of memory, ACS automatically adjusts the pod specification to 2 vCPUs and 4 GiB of memory upon startup. The additional resources are applied to the first container, and the pod receives the annotation alibabacloud.com/pod-use-spec=2-4Gi. Example 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 # Request 2 vCPUs.
memory: "3.5Gi" # Request 3.5 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.Adjusted resource declaration:
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 # Request 2 vCPUs.
memory: "4Gi" # Request 4 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.Specify pod specifications using annotations
Applicable scope
This feature supports only CPU pods of the general-purpose and performance-enhanced compute classes.
The maximum specification supported by the annotation is 64 vCPUs and 512 GiB of memory, which is subject to the limits described in General-purpose compute class specifications.
Usage
For scenarios where the pod's Quality of Service (QoS) class is Burstable (.resources.limits > .resources.requests), you can declare the target resource specifications for the pod by specifying the annotation alibabacloud.com/pod-required-spec: "X-YGi". The resource specifications must be in 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 adjustment and usage rules are as follows:
If the specification format is invalid (for example, it is missing units, uses Mi, or is in the incorrect order), the pod fails to be created.
If the annotation is set but no container defines
.resources, ACS strictly follows the annotation value and does not fall back to the default specification (for example, 2 vCPUs and 4 GiB of memory).If the annotation value is less than the sum of all containers'
.resources.requests, the pod fails to be created.If the annotation value exceeds the sum of all containers'
.resources.limits, ACS uses the annotation value as the target specification.In multi-container pods, the first container is identified as the primary container. The difference between the annotation value and the sum of the current
limitsis allocated to the primary container's.resources.limits(and.resources.requestsif necessary) so that the pod's total resources match the target specification.
Example
For example, if you set the annotation to alibabacloud.com/pod-required-spec: "2-4Gi" and the sum of the container's .resources.requests or .resources.limits is 1 vCPU and 2 GiB of memory, ACS automatically sets the pod specification to 2 vCPUs and 4 GiB of memory when it launches the pod. The additional resources are applied to the first container, and the pod is annotated with alibabacloud.com/pod-use-spec=2-4Gi.
Example resource declaration:
In this example, .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 # Request 1 vCPU.
memory: "2Gi" # Request 2 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.
limits:
cpu: 2 # Request 2 vCPUs.
memory: "3.5Gi" # Request 3.5 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.Adjusted resource declaration:
In the adjusted declaration, .resources.limits.memory is changed 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 # Request 1 vCPU.
memory: "2Gi" # Request 2 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.
limits:
cpu: 2 # Request 2 vCPUs.
memory: "4Gi" # Request 4 GiB of memory.
ephemeral-storage: "30Gi" # Request 30 GiB of storage.Accelerated compute classes
The following GPU models are supported by ACS. Specifications vary by model. To learn about the specific mappings, submit a ticket.
GU8TF
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (96 GB 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 GB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
32 | 32, 64, 128, 230 | N/A | ||
46 | 64, 128, 230 | N/A | ||
4 (96 GB × 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 GB 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 GB 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 GB GPU memory | 16 | 16–128 | 1 | 30–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–3072 |
64 | 64, 128, 256, 512 | N/A | ||
92 | 128, 256, 512, 900 | N/A | ||
8 × 141 GB 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 GB 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 GB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
32 | 32, 64, 128, 230 | N/A | ||
4 (48 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 |
64 | 64, 128, 256, 460 | N/A | ||
8 (48 GB × 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 GB × 8 GPU memory) | 184 | 1800 | N/A | 30–6144 |
P16EN
GPU (cards) | vCPU | Memory (GiB) | Memory step size (GiB) | Storage (GiB) |
1 (96 GB 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 GB × 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 GB × 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 GB × 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 GB 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 GB 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 GB × 2 GPU memory) | 16 | 16–128 | 1 | 30–512 |
32 | 32, 64, 128, 230 | N/A | ||
4 (48 GB × 4 GPU memory) | 32 | 32, 64, 128, 256 | N/A | 30–1024 |
64 | 64, 128, 256, 460 | N/A | ||
8 (48 GB × 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 GB 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 | 30–1536 | |
2 (16 GB × 2 GPU memory) | 16 | 16–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–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 GB × 2 GPU memory) | 16 | 16–64 | 1 | 30–512 |
32 | 32, 64, 120 | N/A | ||
4 (24 GB × 4 GPU memory) | 32 | 32, 64, 128 | N/A | 30–1024 |
64 | 64, 128, 240 | N/A | ||
8 (24 GB × 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) | Network |
1 (32 GB 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 GB × 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 GB × 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 GB × 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 |
All GPU models share the same specifications across pay-as-you-go, capacity reservation, and BestEffort scenarios. Specifically:
For specifications with 16 GiB of memory or less, the memory overhead is handled by ACS. For specifications with more than 16 GiB of memory, the memory overhead is allocated to the corresponding pod. Ensure that you reserve sufficient resources for your application to guarantee stable operation.
System disks up to 30 GiB, including the image size, do not incur additional charges. If a system disk is larger than 30 GiB, you are billed for the excess amount.
Automatic specification adjustment
If you do not specify a specification, GPU container pods use the smallest pod specification based on the GPU type. For example, 2 vCPUs, 2 GiB of memory, and one GPU card.
ACS automatically adjusts unsupported specifications. After the adjustment, the container's .resources.requests remains unchanged, but the pod specification is available in the alibabacloud.com/pod-use-spec annotation. If a container's specified resource limit (resources.limits) exceeds the pod specification, ACS sets the container's resource limit to the pod specification.
CPU and memory adjustment logic: If the total resources of all containers sum to 2 vCPUs and 3.5 GiB of memory, ACS automatically adjusts the pod to 2 vCPUs and 4 GiB of memory. The additional resources are applied to the first container, and the pod receives 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, the container's resource limit is adjusted to 2 vCPUs and 5 GiB.GPU adjustment logic: If the requested GPU count is not listed in the table, the pod submission fails.
GPU-HPN compute class
For GPU-HPN compute classes, ACS aligns resource requests and limits by setting limits equal to requests. Additionally, pod specifications are constrained by the node capacity. If the specification exceeds the node capacity, the pod remains in the pending state due to insufficient resources. For more information about specific node specifications, see the purchase specifications documentation.
Kubernetes application limits
ACS integrates seamlessly with Kubernetes through virtual nodes. ACS pods are not deployed on centralized physical nodes but are distributed across Alibaba Cloud resource pools. Due to public cloud security requirements and virtual node limitations, ACS does not support certain Kubernetes features, such as HostPath and DaemonSet. The following table details these limits.
Limitations | Description | Handling policy on validation failure | Recommended alternative |
DaemonSet | DaemonSet workloads are not supported. | The pod runs but does not function as expected. | Use the sidecar pattern to deploy multiple containers in the pod. |
NodePort service | This service type maps host ports to containers. | The submission is rejected. | Use a |
HostNetwork | Mapping host ports to containers is not supported. | The value is rewritten to | Optional |
HostIPC | Inter-process communication between container and host processes is not supported. | The value is rewritten to | Not required |
HostPID | Containers cannot see the host PID namespace. | The value is rewritten to | Not required |
HostUsers | Restricting user namespaces | The value is rewritten to empty. | Not required |
DNSPolicy | Restricting the use of a specific DNSPolicy Note
|
| Use one of the allowed values. |
Container environment variables | In addition to the default constraints of the Kubernetes API server, ACS requires that for GPU and GPU-HPN compute classes, environment variable names consist of letters, digits, underscores, dots, or hyphens. The names cannot start with a digit. | The pod fails to start. | Use environment variable names that follow the required format. |
Port usage
The following table lists the ports that are used by ACS. Avoid using these ports when you deploy services.
Port | Description |
111, 10250, 10255 | Used by ACS clusters for exec, logs, metrics, and other interfaces. |