Overview of ACS pods

更新时间:
复制 MD 格式

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: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
        # 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.
Note

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.
Note

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

  • Some fluctuations in computing power may occur.

  • Instances are not forcefully evicted. If an instance fails, it is recovered through hot migration or by notifying the user to trigger an eviction.

  • Microservice applications

  • Web applications

  • Computing tasks

BestEffort

best-effort

  • Some fluctuations in computing power may occur.

  • Instances can be forcefully preempted and evicted. An event notification is sent 5 minutes before an eviction.

  • Big data computing

  • Audio and video transcoding

  • Batch processing tasks

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 
Note
  • 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

alibabacloud.com/cpu-vendors

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 
Warning

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

  • Specify resource requests: Configure resource requests for a container's CPU, memory, EphemeralStorage, and GPU using the standard Kubernetes resources.requests field. The resources of an ACS pod are the sum of the resources required by all containers within the pod. ACS automatically adjusts the pod's specifications.

  • Specify resource limits: Configure resource limits for a container's CPU, memory, EphemeralStorage, and GPU using the standard Kubernetes resources.limits field. If not specified, the default resource limit for a container equals the total resources of all containers in the adjusted pod.

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.

  • Cloud disk

    • Supports Enterprise SSDs (ESSDs), ESSD AutoPL disks, standard SSDs, and ultra disks. Select the preceding disk types based on requirements. For more information, see Disk volume overview.

    • ACS supports dynamic provisioning of cloud disks as persistent volumes (PVs). For more information, see Use a dynamic disk volume.

  • NAS

    • Statically provisioned NAS volumes support mounting Capacity and Extreme NAS file systems as volumes. Dynamically provisioned NAS volumes mount Capacity NAS file systems by default. For more information, see Details.

    • ACS supports static and dynamic provisioning of NAS volumes as PVs. For more information, see NAS volume overview.

  • OSS

  • 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 stdout or file logs and send them to Alibaba Cloud Simple Log Service (SLS).

Resource specifications

Warning

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

Important

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 space

The 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 space

Specify 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:

  1. If the resource specification format is incorrect, such as missing units, using MiB, or having the wrong order, the pod fails to create.

  2. If you set the annotation but do not define .resources for 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.

  3. If the value of the annotation is less than the sum of .resources.requests for all containers in the pod, the pod fails to create.

  4. If the value of the annotation is greater than the sum of .resources.limits for 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.limits of the primary container. The .resources.requests value 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 space

The 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 space

Accelerated 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

Important

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.

Note
  • 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 type=LoadBalancer.

HostNetwork

Mapping host ports to containers is restricted.

The value is rewritten to HostNetwork=false.

Not required.

HostIPC

Inter-process communication between container processes and host processes is restricted.

The value is rewritten to HostIPC=false.

Not required.

HostPID

Container visibility of the host PID space is restricted.

The value is rewritten to HostPID=false.

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
  • None

  • Default

  • ClusterFirst

  • A configuration of ClusterFirstWithHostNet is rewritten to ClusterFirst.

  • Submissions with other policies are rejected.

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 enableServiceLinks is set to true for a pod (the default value), information about all Services in the current namespace is injected into the container as environment variables. This may also cause the total number of environment variables to exceed the system limit.

The pod fails to start.

Reduce the number of container environment variables. If there are many Services, set enableServiceLinks to false for the pod.

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:

  • NET_RAW

  • NET_ADMIN

  • NET_BIND_SERVICE

  • CHOWN

  • DAC_OVERRIDE

  • FSETID

  • FOWNER

  • KILL

  • MKNOD

  • SETPCAP

  • SETFCAP

  • SYS_CHROOT

  • SYS_PTRACE

  • AUDIT_WRITE

Startup failed

Use an allowed value.

HostPath

Mounting local host files into containers is restricted.

Note

The following options are supported:

  • /etc/localtime

    • readOnly: true

  • /usr/share/zoneinfo/

    • readOnly: true

  • /runtime-mnt/

  • /dev/fuse

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:

  • kernel.shm*

  • kernel.msg*

  • kernel.sem

  • fs.mqueue.*

  • kernel.core_pattern

  • net.*

  • fs.inotify.max_user_watches

  • fs.aio-max-nr

  • fs.file-max

  • vm.min_free_kbytes

  • vm.max_map_count

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.