ACS Pod instance

Updated at:
Copy as MD

In modern cloud computing and containerization environments, a pod is the smallest deployable unit in Kubernetes and usually consists of one or more containers. The compute class and computing quality of service (QoS) of a pod significantly impact application performance and resource utilization. Container Compute Service (ACS) offers various compute classes and their corresponding computing quality of service (QoS) to meet diverse business needs. This topic describes the prerequisites, limits, and key features of ACS pods, including security isolation, CPU, memory, and GPU configurations, image pulling, storage, networking, and log collection.

Compute classes

ACS provides cost-effective compute classes for CPU and GPU containers. Each class offers specific resource allocations for different use cases.

Compute class

Label

Features

general-purpose (default)

general-purpose

Ideal for most stateless microservices, Java web applications, and general computing tasks.

performance-enhanced

performance

Suitable for high-performance tasks, such as CPU-based AI/ML training and inference, and HPC batch processing.

gpu-accelerated

gpu

Ideal for heterogeneous computing tasks like AI and HPC, including single-GPU and multi-GPU inference, and GPU parallel computing.

GPU-HPN

gpu-hpn

Suitable for heterogeneous computing tasks, such as distributed GPU training and inference, and GPU-based high-performance computing.

To specify the compute class for a pod, use the alibabacloud.com/compute-class label. The following examples show NGINX deployments configured for the general-purpose, gpu, and gpu-hpn compute classes.

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-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
        # Specify the compute class as gpu.
        alibabacloud.com/compute-class: "gpu"
        # Specify the GPU model series as example-model. Replace this with the actual 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. Replace the resource label and quantity with actual values. 
          requests:
            cpu: 4
            memory: "8Gi"
            nvidia.com/gpu: "1" # Specify the number of GPUs. Replace the resource label and quantity with actual values.
Note

For information about the GPU models and specifications supported by ACS, see Accelerated compute class specifications.

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 class 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" # Specify the number of GPUs. Replace the resource label and quantity with actual values. 
          requests:
            cpu: 4
            memory: "8Gi"
            nvidia.com/gpu: "1" # Specify the number of GPUs. Replace the resource label and quantity with actual values.
Note

To use GPU-HPN pods in ACS, you must first create a GPU-HPN capacity reservation.

QoS classes

ACS provides two QoS classes. Each class offers different resource provisioning and availability to suit various business scenarios.

QoS class

Label

Characteristics

Typical use cases

default

default

  • Subject to minor performance fluctuations.

  • These pods are not forcibly evicted. Instead, failures trigger hot migration or user-initiated eviction.

  • Microservice applications

  • Web applications

  • Computing tasks

BestEffort

best-effort

  • Subject to minor performance fluctuations.

  • These pods can be preempted and evicted. ACS sends an event notification 5 minutes before eviction.

  • Big data computing

  • Audio and video transcoding

  • Batch processing

You can specify the QoS class for a pod by adding the alibabacloud.com/compute-qos label to the pod manifest. The following sample manifest is for an NGINX application that specifies the default QoS class.

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 
Note
  • The ACS QoS classes differ from the native Kubernetes QoS classes. The default QoS class in ACS corresponds to the Guaranteed QoS class in Kubernetes.

  • BestEffort pods use a dynamic inventory, so their availability is not guaranteed. For production environments, we strongly recommend that you configure a custom resource scheduling policy to automatically fall back to the default class when BestEffort capacity is insufficient.

Mapping compute classes to QoS classes

Compute class

Supported QoS class

general-purpose (general-purpose)

default (default), best-effort (best-effort)

performance (performance)

default (default), best-effort (best-effort)

GPU-accelerated (gpu)

default (default), best-effort (best-effort)

GPU-HPN (gpu-hpn)

default (default)

Specify a CPU vendor

For the general-purpose and performance compute classes, you can choose between Intel and AMD CPUs.

To specify a CPU vendor, add the alibabacloud.com/cpu-vendors annotation to your Pod or define the alibabacloud.com/cpu-vendors annotation in the Pod template of your workload. To use AMD CPUs, you must submit a ticket to join the allowlist. This annotation is available only for the general-purpose and performance compute classes. Adding this annotation to other compute classes returns an error that CPU vendor specification is not supported. This annotation supports the following values:

Key

Value

Description

alibabacloud.com/cpu-vendors

intel (default)

Specifies an Intel CPU.

amd

Specifies an AMD CPU.

intel,amd

Allows the instance to use either an Intel or an AMD CPU, depending on inventory. You cannot specify a preference order.

After the instance is created, you can verify the assigned CPU vendor by checking the value of the alibabacloud.com/cpu-vendor label in the Pod YAML.

The following example shows a Deployment for an Nginx application that specifies the amd 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 
Warning

Do not use ACS system labels (such as alibabacloud.com/compute-class, alibabacloud.com/compute-qos, and alibabacloud.com/cpu-vendor) in a workload's matchLabels selector. The system may modify these labels, causing the controller to frequently recreate pods, which can destabilize the application.

Key features

Feature

Description

Security isolation

ACS provides a secure and reliable serverless container runtime. Each pod runs in a lightweight sandbox, providing strong isolation that prevents interference between pods. To further improve high availability, ACS schedules pods on different physical machines when possible.

CPU/Memory/GPU/EphemeralStorage resource configuration

  • Resource requests: You can specify CPU, memory, ephemeral storage, and GPU resource requests for each container in the standard Kubernetes resources.requests field. The total resource request for a pod is the sum of the requests for all its containers. ACS automatically adjusts the pod's specifications based on this total.

  • Resource limits: You can specify CPU, memory, ephemeral storage, and GPU resource limits for each container in the standard Kubernetes resources.limits field. If you do not specify a limit for a container, its limit defaults to the pod's total adjusted resource specification.

Image

By default, an ACS pod pulls container images from a remote registry over the associated virtual private cloud (VPC) each time it starts. To pull public images, you must enable a NAT gateway for the VPC. Storing your container images in Alibaba Cloud Container Registry (ACR) reduces image pull times over the VPC network. ACS also lets you pull private images from Container Registry without using Secrets, which simplifies access.

Storage

ACS supports four types of persistent storage: cloud disk, NAS, OSS, and Cloud Parallel File Storage (CPFS).

  • Cloud disk

    • Supports various cloud disk types, including ESSDs, ESSD AutoPL, SSDs, and Ultra Disks. You can select the disk type that best fits your needs. For performance details, see Cloud disk volume overview.

    • Supports dynamic provisioning of PersistentVolumes (PVs). For more information, see Use a dynamic disk volume.

  • NAS

    • For static provisioning, ACS supports General-purpose Capacity and Extreme NAS file systems. For dynamic provisioning, ACS creates General-purpose Capacity file systems by default. For more information about specifications, see Details.

    • Supports both static and dynamic provisioning of PersistentVolumes (PVs). For more information, see NAS volume overview.

  • OSS

  • CPFS

Networking

By default, ACS assigns each pod a dedicated IP address and one elastic network interface (ENI) from a vSwitch.

In an ACS cluster, pods can communicate with each other in the following ways:

Log collection

You can configure log collection by setting environment variables in your pod to send stdout and log files to Alibaba Cloud Simple Log Service (SLS).

Resource specifications

Warning

In an ACS cluster, pod specifications for the GPU and GPU-HPN compute classes are automatically normalized on submission. For example, the cluster assigns a Guaranteed QoS to pods of the GPU compute class by setting their resource request and limit to the same value. However, when you use ACS GPU computing power in other environments, such as an ACK cluster or an ACK One cluster, the pod metadata does not reflect this resource specification normalization. You must ensure that the pod's QoS class remains unchanged upon submission. For example, you must submit pods of the GPU compute class with Guaranteed QoS to prevent pod status update failures.

Compute classes

General-purpose

vCPU

Memory (GiB)

Memory step size (GiB)

Bandwidth (bidirectional) (Gbit/s)

Storage

0.25

0.5, 1, 2

N/A

0.08

The first 30 GiB of storage is free. Additional usage, up to a maximum of 512 GiB, is billed.

If you need more storage space, you can expand it by mounting volumes, such as Network Attached Storage (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

Performance

vCPU

Memory (GiB)

Memory step size (GiB)

Bandwidth (bidirectional) (Gbit/s)

Storage

0.25

0.5, 1, 2

N/A

0.1

The first 30 GiB of storage is free. Additional usage, up to a maximum of 512 GiB, is billed.

If you need more storage space, you can expand it by mounting volumes, such as Network Attached Storage (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

Important

To use ACS pods that exceed 16 vCPUs or 128 GiB of memory, you must submit a ticket.

If you do not specify resources by setting the .resources.requests or .resources.limits fields for a container, the pod defaults to 2 vCPUs and 4 GiB of memory.

ACS automatically performs specification adjustment for pods. ACS determines a pod's required resources by using the greater of the total .resources.requests and total .resources.limits from all containers, and then rounds this value up to the nearest supported specification. ACS records this final specification in the alibabacloud.com/pod-use-spec annotation. If the specification was rounded up, ACS also adjusts the container's .resources.requests or .resources.limits to ensure the container can use all provisioned resources.

ACS pod specification adjustment logic

For example, if the sum of .resources.requests or .resources.limits is 2 vCPU and 3.5 GiB memory, ACS automatically adjusts the Pod's specification to 2 vCPU and 4 GiB memory when the Pod starts. The additional resources are applied to the first container, and the Pod is annotated with alibabacloud.com/pod-use-spec=2-4Gi. An example of the resource declaration is as follows:

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

The following shows the resource declaration after adjustment:

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 via annotation

Scope

  • This feature is supported only for CPU pods of the general-purpose and performance compute classes.

  • The maximum specification available via the annotation is 64 vCPUs and 512 GiB of memory, subject to the limits of the general-purpose compute class.

Usage

For pods with a Burstable QoS (Quality of Service) class, where .resources.limits > .resources.requests, you can declare a target resource specification by using the alibabacloud.com/pod-required-spec: "X-YGi" annotation. The resource specification must follow the <CPU>-<Memory> format, where CPU is in cores (for example, "2" for 2 vCPUs) and memory is in GiB (for example, "4Gi" for 4 GiB). The following rules apply:

  1. If the resource specification format is invalid (for example, a unit is missing, Mi is used, or the order is reversed), pod creation will fail.

  2. If the annotation is set but no .resources are defined for any container, the system strictly follows the specification in the annotation and does not fall back to the default specification (2 vCPUs and 4 GiB of memory).

  3. If the value of the annotation is less than the sum of .resources.requests for all containers, pod creation will fail.

  4. If the value of the annotation is greater than the sum of .resources.limits for all containers, the system uses the annotation value as the target specification for the pod.

    In a multi-container pod, ACS identifies the first container as the main container. It then allocates the resource difference between the annotation value and the sum of all container limits to the main container's .resources.limits. The main container's .resources.requests may also be adjusted to ensure the pod's total resources align with the target specification.

Example

Consider a pod where you set the alibabacloud.com/pod-required-spec: "2-4Gi" annotation, and the sum of the container's .resources.requests or .resources.limits is 1 vCPU and 2 GiB of memory. When the pod starts, ACS applies the additional resources to the first container, and the pod is annotated with alibabacloud.com/pod-use-spec=2-4Gi.

The following shows the resource declaration before adjustment:

In this example, .resources.limits.memory is 3.5Gi.
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 # Limit to 2 vCPUs
        memory: "3.5Gi" # Limit to 3.5 GiB of memory
        ephemeral-storage: "30Gi" # Limit to 30 GiB of storage

The following shows the resource declaration after adjustment:

In this example, .resources.limits.memory is adjusted from 3.5Gi to 4Gi.
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 # Limit to 2 vCPUs
        memory: "4Gi" # Limit to 4 GiB of memory
        ephemeral-storage: "30Gi" # Limit to 30 GiB of storage

Accelerated computing type

The following are the GPU models supported by ACS. Specifications vary for different models. To obtain detailed specifications, submit a ticket.

GU8TF

GPU (count × memory)

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

1 × 96 GB

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

16

16–128

1

30–512

32

32, 64, 128, 230

N/A

46

64, 128, 230

N/A

4 × 96 GB

32

32, 64, 128, 256

N/A

30–1,024

64

64, 128, 256, 460

N/A

92

128, 256, 460

N/A

8 × 96 GB

64

64, 128, 256, 512

N/A

30–2,048

128

128, 256, 512, 920

N/A

184

256, 512, 920

N/A

GU8TEF

GPU

vCPU

Memory (GiB)

Memory increment (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, or 225

N/A

2 (141 GB GPU memory each)

16

16–128

1

30–1,536

32

32, 64, 128, or 256

N/A

46

64, 128, 256, or 450

N/A

4 (141 GB GPU memory each)

32

32, 64, 128, or 256

N/A

30–3,072

64

64, 128, 256, or 512

N/A

92

128, 256, 512, or 900

N/A

8 (141 GB GPU memory each)

64

64, 128, 256, or 512

N/A

30–6,144

128

128, 256, 512, or 1,024

N/A

184

256, 512, 1,024, or 1,800

N/A

L20(GN8IS)

GPU count

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

1 (48 GB)

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 each)

16

16–128

1

30–512

32

32, 64, 128, 230

N/A

4 (48 GB each)

32

32, 64, 128, 256

N/A

30–1,024

64

64, 128, 256, 460

N/A

8 (48 GB each)

64

64, 128, 256, 512

N/A

30–2,048

128

128, 256, 512, 920

N/A

L20X (GX8SF)

GPU

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

8 (141 GiB of GPU memory each)

184

1,800

N/A

30–6,144

P16EN

GPU count

vCPUs

Memory (GiB)

Memory increment (GiB)

Storage range (GiB)

1 (96 GiB)

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)

4

4–32

1

30–768

6

6–48

1

8

8–64

1

16

16–128

1

22

32, 64, 128, or 225

N/A

4 (96 GiB)

8

8–64

1

30–1,536

16

16–128

1

32

32, 64, 128, or 256

N/A

46

64, 128, 256, or 450

N/A

8 (96 GiB)

16

16–128

1

30–3,072

32

32, 64, 128, or 256

N/A

64

64, 128, 256, or 512

N/A

92

128, 256, 512, or 900

N/A

16 (96 GiB)

32

32, 64, 128, or 256

N/A

30–6,144

64

64, 128, 256, or 512

N/A

128

128, 256, 512, or 1,024

N/A

184

256, 512, 1,024, or 1,800

N/A

T4

GPU count

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

1 (16 GB)

2

2–8

1

30–1,536

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–1,536

2 (16 GB x 2)

16

16–64

1

24

24, 48, 96

N/A

32

32, 64, 128

N/A

48

48, 96, 180

N/A

A10

GPU

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 GPU memory each)

16

16–64

1

30–512

32

32, 64, or 120

N/A

4 (24 GB GPU memory each)

32

32, 64, or 128

N/A

30–1,024

64

64, 128, or 240

N/A

8 (24 GB GPU memory each)

64

64, 128, or 256

N/A

30–2,048

128

128, 256, or 480

N/A

G28Ti

GPU

vCPU

Memory (GiB)

Memory step size (GiB)

Storage (GiB)

1 (11 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

G49E

GPU

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

1 (48 GB VRAM)

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 VRAM each)

16

16–128

1

30–512

32

32, 64, 128, 230

N/A

4 (48 GB VRAM each)

32

32, 64, 128, 256

N/A

30–1,024

64

64, 128, 256, 460

N/A

8 (48 GB VRAM each)

64

64, 128, 256, 512

N/A

30–2,048

128

128, 256, 512, 920

N/A

G59

GPUs

vCPUs

Memory (GiB)

Memory step size (GiB)

Storage (GiB)

1 (32 GB video 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 (32 GB video memory per GPU)

16

16–128

1

30–512

32

32, 64, 128, 256

N/A

46

64, 128, 256, 360

N/A

4 (32 GB video memory per GPU)

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 video memory per GPU)

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

vCPU

Memory (GiB)

Memory step size (GiB)

Storage (GiB)

1 (48 GB video memory)

2

2–16

1

30–2,048

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 (48 GB each)

16

16–128

1

32

32, 64, 128, 256

N/A

64

64, 128, 256, 512

N/A

4 (48 GB each)

32

32, 64, 128, 256

N/A

64

64, 128, 256, 512

N/A

128

128, 256, 512, 1024

N/A

8 (48 GB each)

64

64, 128, 256, 512

N/A

128

128, 256, 512, 1024

N/A

256

256, 512, 1024, 2048

N/A

L20NE

GPU

vCPU

Memory (GiB)

Memory increment (GiB)

Storage (GiB)

1 (72 GB GPU memory)

2

2–16

1

30–2,048

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, or 256

N/A

2 (72 GB GPU memory each)

16

16–128

1

32

32, 64, 128, or 256

N/A

64

64, 128, 256, or 512

N/A

4 (72 GB GPU memory each)

32

32, 64, 128, or 256

N/A

64

64, 128, 256, or 512

N/A

128

128, 256, 512, or 1,024

N/A

8 (72 GB GPU memory each)

64

64, 128, 256, or 512

N/A

128

128, 256, 512, or 1,024

N/A

256

256, 512, 1,024, or 2,048

N/A

Important

The GPU models above share the same specifications for pay-as-you-go, capacity reservation, and BestEffort.

  • For specifications with 16 GB of memory or less, the memory overhead is covered by ACS. For specifications with more than 16 GB of memory, the memory overhead is distributed among the corresponding Pods. You must reserve sufficient resources for your application to ensure its stable operation.

  • For system disks of 30 GB or less (including the image size), you are not charged an additional fee. For system disks larger than 30 GB, you are billed for the overage.

Specification adjustment

If you do not specify a specification, ACS creates a GPU container pod with the minimum specification for its GPU type, for example, 2 vCPUs, 2 GiB of memory, and 1 GPU.

ACS automatically normalizes unsupported specifications. After normalization, the container's .resources.requests does not change, but the pod specification is exposed through the alibabacloud.com/pod-use-spec annotation. If the resource limit (resources.limits) specified for a container exceeds the pod specification, ACS uses the pod specification as the container's resource limit.

Note
  • CPU and memory normalization logic: If the resources for all containers in a Pod add up to 2 vCPUs and 3.5 GiB of memory, ACS automatically normalizes the Pod's resources to 2 vCPUs and 4 GiB of memory. The additional resources are applied to the first container. The Pod exposes 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 resource limit for that container is changed to 2 vCPUs and 5 GiB.

  • GPU adjustment: If a pod requests an unsupported number of GPUs, pod creation fails.

GPU-HPN

For High Performance Networking (HPN) GPU instances, ACS aligns resources by setting a pod's resource limit to its request. However, a pod's resources are also constrained by node capacity. If the requested resources exceed the node's capacity, the pod enters a pending state due to insufficient resources. For detailed node specifications, refer to the purchasing documentation.

Kubernetes limitations

ACS integrates with Kubernetes by using virtual nodes. This serverless architecture means each Pod runs in an isolated environment within the Alibaba Cloud resource pool, rather than on a dedicated node you manage. Due to this design and for security reasons, ACS does not support Kubernetes features that require direct host access, such as HostPath and DaemonSet. The following table details these limitations and provides recommended alternatives.

Limit

Description

Failure behavior

Recommended alternative

DaemonSet

DaemonSet workloads are not supported.

The Pod is created but fails to function correctly because there is no underlying node.

Use the sidecar pattern to deploy an agent or service in each application Pod.

Services of type NodePort

Mapping a port on the host to a container is not supported.

The system rejects the workload upon submission.

Use a Service of type=LoadBalancer.

HostNetwork

Using the host's network namespace is not supported.

Change to HostNetwork=false

Not applicable.

HostIPC

Sharing the host's IPC namespace is not supported.

Change to HostIPC=false

Not applicable.

HostPID

Sharing the host's PID namespace is not supported.

Change to HostPID=false

Not applicable.

HostUsers

Using a host user namespace is not supported.

ACS automatically sets this field to null.

Not applicable.

DNSPolicy

Only the following DNSPolicy values are supported:

Note
  • None

  • Default

  • ClusterFirst

  • If ClusterFirstWithHostNet is specified, ACS automatically changes it to ClusterFirst.

  • ACS rejects workloads with other policies.

Use a supported value.

Environment variable format

In addition to the default Kubernetes API server validation, ACS requires that for GPU and GPU-HPN compute types, environment variable names consist only of letters, numbers, underscores (_), dots (.), or hyphens (-), and must not start with a number.

The Pod fails to start.

Use a compliant environment variable name.

Number of environment variables

Linux system call limits on argument list length restrict the number of environment variables in a single container to approximately 2,000.

If a Pod has enableServiceLinks set to true (the default), Kubernetes injects information about all Services in the current namespace as environment variables. This can cause the total number of environment variables to exceed the system limit.

The Pod fails to start.

Reduce the number of environment variables. In namespaces with many Services, consider setting enableServiceLinks to false for the Pod.

Port usage

The following table lists the ports used by ACS. To prevent port conflicts, avoid using these ports when deploying services.

Port

Description

111, 10250, and 10255

The ACS cluster uses these ports for interfaces such as exec, logs, and metrics.