全部产品
Search
文档中心

:ACS Pod实例概述

更新时间:Nov 18, 2024

在现代云计算和容器化环境中,Pod实例是Kubernetes中最小的可部署单元,通常由一个或多个容器组成。Pod实例的计算类型和算力质量对于应用的性能以及资源利用率有着重要的影响。容器计算服务 ACS(Container Compute Service)提供了多种计算类型和相对应的算力质量,以满足多样化的业务需求。本文主要介绍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。

  • BestEffort算力质量实例为动态库存,强烈建议您在生产环境配置库存优先调度策略,在库存不足时由平台自动切换至默认型。更多信息,请参见自定义资源调度策略

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

计算类型(标签)

支持的算力质量(标签)

通用型(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和CPFS四种持久化存储。

  • 云盘

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

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

  • NAS

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

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

  • OSS

  • CPFS

网络

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

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

日志采集

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

资源规格

General-Purpose/Performance计算类型

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等接口使用。