文档

ACS Pod实例概述

更新时间:

本文主要介绍ACS Pod的使用准备工作、使用限制以及核心功能,包括安全隔离、CPU/Memory/GPU资源和规格配置、镜像拉取、存储、网络和日志收集等。

计算类型定义

ACS当前提供了3种计算类型,其中通用计算提供2种类型,异构计算提供1种类型。不同的计算类型在资源供给上会有所区别,以适应不同的业务场景。

计算类型

标签

特点

通用型(默认)

general-purpose

满足绝大部分无状态微服务应用 、Java Web应用、计算类任务等。

性能型

performance

满足性能需求更强的业务场景,如CPU Based AI/ML训练和推理、HPC批处理等。

GPU型

gpu

满足AI/HPC等异构计算场景 ,如GPU单卡、多卡推理,GPU并行计算等。

您可以通过Pod上的.alibabacloud.com/compute-class标签来指定实例的计算类型。下面是一个Nginx应用的示例编排,指定了计算类型为通用型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

算力质量定义

ACS当前提供了2种算力质量。不同的算力质量在资源供给上会有所区别,以适应不同的业务场景。

算力质量

标签

特点

典型应用场景

默认型

default

  • 有一定的算力扰动。

  • 不存在强制的实例驱逐,实例故障通过热迁移或者通知用户触发驱逐完成。

  • 微服务应用

  • Web应用

  • 计算类任务

BestEffort型

best-effort

  • 有一定的算力扰动。

  • 存在强制的实例抢占和驱逐,驱逐前5分钟会有事件通知。

  • 大数据计算

  • 音视频转码

  • 批处理任务

您可以通过Pod上的alibabacloud.com/compute-qos标签来指定实例的算力质量。下面是一个Nginx应用的示例编排,指定了算力质量为默认型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算力质量定义和Kubernetes原生的QoS类型定义不同,目前默认型的算力质量对应Kubernetes的原生QoS Class是Guaranteed。

计算类型与算力质量的对应关系

计算类型(标签)

支持的算力质量(标签)

通用型(general-purpose)

默认型(default)、BestEffort型(best-effort)

性能型(performance)

默认型(default)

GPU型(gpu)

默认型(default)

Kubernetes应用限制

ACS通过虚拟节点与Kubernetes实现无缝对接,因此ACS Pod实例并不会运行在一个集中式的真实节点上,而是打散分布在整个阿里云的资源池中。基于公有云的安全性和虚拟节点本身带来的限制,ACS目前还不支持Kubernetes中的HostPath、DaemonSet等功能,具体如下表所示。

限制项

说明

校验失败时处理策略

推荐替代方案

DaemonSet

限制使用Daemonset类工作负载

Pod运行但无法正常工作

通过Sidecar形式在Pod中部署多个容器

HostPath

限制挂载本地宿主机文件到容器中

拒绝提交

使用emptyDir、云盘或者NAS文件系统

type=NodePort的Service

将宿主机端口映射到容器上

拒绝提交

使用type=LoadBalancer的负载均衡

HostNetwork

限制将宿主机端口映射到容器上

改写为HostNetwork=false

无需使用

HostIPC

限制容器进程和宿主机进程间通信

改写为 HostIPC=false

无需使用

HostPID

限制容器可见宿主机PID空间

改写为 HostPID=false

无需使用

HostUsers

限制使用用户命名空间

改写为空值

无需使用

Linux capabilities

限制Linux系统特权(securityContext.capabilities)使用,不在允许值范围内的将被拒绝提交

说明

支持使用的特权:

  • CHOWN

  • DAC_OVERRIDE

  • FOWNER

  • FSETID

  • KILL

  • SETGID

  • SETUID

  • SETPCAP

  • NET_BIND_SERVICE

  • NET_RAW

  • NET_ADMIN

  • SYS_CHROOT

  • MKNOD

  • AUDIT_WRITE

  • SETFCAP

拒绝提交

使用允许值

Sysctl

限制内核参数(securityContext.sysctls)使用

说明
  • kernel.shm*

    • (kernel.shm_rmid_forced不允许)

  • kernel.msg*

  • kernel.sem*

  • fs.mqueue.*

  • net.*

    • (net.ipv4.tcp_syncookies不允许)

拒绝提交

使用允许值

PrivilegeEscalation

限制容器进行特权提升(securityContext.allowPrivilegeEscalation)

拒绝提交

使用默认配置

Privileged Container

限制容器拥有privileged权限

拒绝提交

使用Security Context为Pod添加允许的capability或sysctl

ImagePullPolicy

限制镜像的下载策略

改写为ImagePullPolicy=Always

使用允许值

DNSPolicy

限制使用特定的DNSPolicy

说明
  • None

  • Default

  • ClusterFirst

  • 配置为ClusterFirstWithHostNet将被改写为ClusterFirst

  • 其他策略拒绝提交

使用允许值

核心功能

功能项

说明

安全隔离

作为安全可靠的Serverless容器运行环境,每个ACS Pod实例底层通过轻量级安全沙箱技术完全强隔离,实例间互不影响。同时实例在调度时尽可能分布在不同的物理机上,进一步保障了高可用性。

CPU/Memory/GPU/EphemeralStorage资源规格配置

  • 指定容器的CPU、Memory、EphemeralStorage和GPU的资源请求:可以通过Kubernetes标准方式配置单个容器预定的CPU、Memory、EphemeralStorage和GPU的资源请求(resources.requests)。ACS的Pod资源则是Pod内所有容器所需资源的总和。ACS会自动规整Pod的规格。

  • 指定容器的CPU、Memory、EphemeralStorage和GPU的资源限制:可以通过Kubernetes标准方式限定单个容器的CPU、Memory、EphemeralStorage和GPU的资源限制(resources.limits)。如不指定,默认单个容器的资源限制为规整后Pod中所有容器的资源总和。

镜像

ACS Pod默认每次启动后使用与Pod关联的VPC从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关。建议您将容器镜像存储在阿里云容器镜像服务 ACR(Container Registry),通过VPC网络减少镜像拉取时间。另外,对于ACR上的私有镜像,ACS提供了免密拉取ACR镜像功能,方便您使用。

存储

ACS支持云盘、NAS和OSS三种持久化存储。

  • 云盘

    • 云盘支持ESSD、ESSD AutoPL、SSD、高效云盘类型。您可以根据自身需要选择对应的云盘类型。详细性能说明,请参见云盘存储卷概述

    • 支持动态方式创建PV。详细内容,请参见动态挂载云盘存储卷

  • NAS

    • NAS静态支持通用容量和极速型的规格,动态默认创建的是通用容量型。相关规格,请参见详细说明

    • 支持以动态、静态方式创建PV。详细内容,请参见NAS存储卷概述

  • OSS

网络

ACS Pod默认使用独立的Pod IP,占用交换机vSwitch的一个弹性网卡。

在ACS集群环境中,Pod互联互通的方法如下:

日志采集

您可以直接配置Pod的环境变量收集stdout或者文件日志,采集到阿里云日志服务SLS中。

资源规格

General-Purpose/Performace计算类型

vCPU

Memory(GiB)

Memory支持步长(GiB)

网络带宽(出+入)(Gbits/s)理论上限值

存储

0.25

0.5、1、2

N/A

0.08

30~512GiB,

额外的存储空间可以通过挂载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

如不指定规格,默认单个Pod的资源为0.25 vCPU和0.5 GiB内存。

ACS会自动规整不支持的规格,规整后容器的.resources.requests 不会变化,但Pod规格会通过.alibabacloud.com/pod-use-spec标注透出。 当容器指定的资源上限(.resources.limits) 超过了Pod的规格,ACS会以Pod规格来设置容器的资源上限。

说明

ACS规整逻辑:如果所有容器相加的资源为2 vCPU和3.5 GiB内存,那么ACS将会自动规整Pod为2 vCPU和4 GiB内存。调整的额外资源会生效到第一个容器中。Pod会透出标注.alibabacloud.com/pod-use-spec=2-4Gi。若Pod中单个容器指定了资源上限为3 vCPU和5 GiB内存,则该容器资源上限会生效成2 vCPU和4 GiB。

资源声明示例如下:

apiVersion: apps/v1 
kind: Deployment
...
  template:
    metadata:
      labels:
        app: nginx
        alibabacloud.com/compute-class: general-purpose
        alibabacloud.com/compute-qos: default
    spec:
      containers:
      - name: nginx
        resources:
          requests:
            cpu: 2 # 声明CPU为2 vCPU
            memory: "4Gi" #声明内存为 4 GiB
            ephemeral-storage: "30Gi" #声明存储空间为30 GiB

GPU计算类型

GPU

vCPU

Memory(GiB)

Memory支持步长(GiB)

网络带宽(出+入)(Gbits/s)理论上限值

存储

1

2

2~16

1

2

30~500GiB,

额外的存储空间可以通过挂载NAS等存储卷扩展。

4

4~32

1

4

6

6~48

1

6

8

8~64

1

8

10

10~80

1

10

12

12~96

1

12

14

14~112

1

14

16

16~128

1

16

2

16

16~128

1

16

32

32、64、128、230

N/A

32

4

32

32、64、128、256

N/A

32

64

64、128、256、460

N/A

64

8

64

64、128、256、512

N/A

64

128

128、256、512、920

N/A

100

如不指定规格,GPU容器Pod会根据GPU类型选择最小规格Pod(如上图是2 vCPU,2GiB内存和1卡GPU)。

ACS会自动规整不支持的规格,规整后容器的.resources.requests 不会变化,但Pod规格会通过.alibabacloud.com/pod-use-spec标注透出。 当容器指定的资源上限(resources.limits) 超过了Pod的规格,ACS会以Pod规格来设置容器的资源上限。

说明
  • CPU和Memory规整逻辑:如果所有容器相加的资源为2 vCPU和3.5 GiB内存,那么ACS将会自动规整Pod为2 vCPU和4 GiB内存。调整的额外资源会生效到第一个容器中。Pod会透出标注.alibabacloud.com/pod-use-spec=2-4Gi。若Pod中单个容器指定了资源上限为3 vCPU和5 GiB内存,则该容器资源上限会生效成2 vCPU和5 GiB。

  • GPU规整逻辑:Pod申请的GPU数量不在表格中时,Pod提交失败。

端口占用说明

下表为ACS占用的端口情况,在部署服务时,请您避免使用以下端口。

端口

说明

111、10250、10255

ACS集群使用端口,exec、logs、metrics等接口使用。