文档

ACS Pod实例概述

更新时间:

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

计算类定义

ACS当前提供了2种计算类型,2种类型均是运行在x86架构服务器上。不同的实例类型在资源供给上会有所区别,以适应不同的业务场景。

计算类

标签

特点

通用型(默认)

general-purpose

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

性能型

performance

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

GPU型

gpu

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

高性能网络GPU型(gpu-hpn)

gpu-hpn

满足 AI/HPC 等异构计算场景 ,如 GPU 分布式训练,分布式推理,GPU 高性能计算等。

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

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
          # 通用型(general-purpose), 性能型(performance)
          # 不填默认为通用型
        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应用的示例编排,指定了算力质量为默认型。

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
          # 默认型(default), BestEffort型(best-effort)
          # 不填默认为默认型
        alibabacloud.com/compute-qos: default
    spec:
      containers:
      - name: nginx
        image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest 
说明

ACS 算力质量定义和Kubernetes原生的QoS类型定义不同,目前所有ACS算力都使用Kubernetes原生的Guaranteed类型。

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

计算类(标签)

支持的算力质量(标签)

通用型(general-purpose)

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

性能型(performance)

默认型(default)

GPU型(gpu)

默认型(default)

高性能网络GPU型(gpu-hpn)

默认型(default)

Kubernetes应用限制

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

限制项

说明

校验失败时处理策略

推荐替代方案

DaemonSet

限制使用Daemonset类workload

Pod运行但无法正常工作

通过Sidecar形式在Pod中部署多个镜像

HostPath

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

拒绝提交

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

type=NodePort的Service

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

拒绝提交

使用type=LoadBalancer的负载均衡

HostNetwork

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

改写为HostNetwork=false

无需使用

HostIPC

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

改写为 HostIPC=false

无需使用

HostPID

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

改写为 HostPID=false

无需使用

HostUsers

限制使用用户命名空间

改写为 HostUsers=true

无需使用

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

改写为ImagePullPolicy=Always

使用允许值

DNSPolicy

限制使用特定的DNSPolicy

说明
  • None

  • Default

  • ClusterFirst

  • 配置为ClusterFirstWithHostNet将被改写为ClusterFirst

  • 其他策略拒绝提交

使用允许值

核心功能

功能项

说明

安全隔离

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

CPU/Memory资源或规格配置

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

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

镜像

镜像拉取

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

存储

ACS支持云盘和NAS两种持久化存储。

  • 云盘

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

    • 支持动态方式创建PV。

  • NAS

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

    • 支持以动态、静态方式创建PV。

网络

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

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

  • 使用Pod IP直接访问。

  • LoadBalancer Service挂载ACS Pod。

  • 访问ClusterIP Service:ACS Pod可以访问集群中的clusterIP地址。

  • 挂载EIP:支持给ACS Pod挂载EIP,可自动创建或者绑定到已有的EIP实例。

日志采集

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

资源规格

general-purpose/performace计算类

vCPU

Memory

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

存储

0.25

0.5, 1, 2 GiB

0.08

30GiB,

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

0.5

1, 2, 4 GiB

0.08

1

2, 4, 8 GiB

0.1

2

2 ~ 16 GiB, 支持2 GiB步长

1

4

4 ~ 32 GiB, 支持2 GiB步长

1.5

6

6 ~ 48 GiB, 支持2 GiB步长

1.5

8

8 ~ 64 GiB, 支持2 GiB步长

2.5

12

12, 24, 48, 96 GiB

2.5

16

16, 32, 64, 128 GiB

3

如不指定规格,对于general-purpose类型, 默认单个Pod的资源为0.25 vCPU和0.5 GiB内存; 对于performance类型, 默认单个Pod的资源为2 vCPU和4 GiB内存。

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

说明

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

gpu计算类

GPU

vCPU

Memory

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

存储

1

2

2 ~ 16 GiB, 支持2 GiB步长

1.25

30GiB

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

4

4 ~ 32 GiB, 支持2 GiB步长

2.5

6

6 ~ 48 GiB, 支持2 GiB步长

5

8

8 ~ 64 GiB, 支持2 GiB步长

10

16

16, 32, 64,115 GiB

20

2

16

16, 32, 64,128 GiB

40

32

32, 64,128, 230 GiB

4

32

32, 64, 128, 256 GiB

80

64

64, 128, 256, 460 GiB

8

64

64, 128, 256, 512 GiB

160

128

128, 256, 512, 920 GiB

gpu-hpn计算类

高性能网络 GPU 按节点预定,可提交的 Pod 规格受节点规格约束,具体节点规格请参照购买规格说明。

GPU

vCPU

Memory

存储

1

0~节点最大值

0~节点最大值

缺省 30GiB,用户可以指定,最大值为预定的节点规格

2

0~节点最大值

0~节点最大值

4

0~节点最大值

0~节点最大值

8

0~节点最大值

0~节点最大值

端口占用说明

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

端口

说明

111、10250、10255

ACS系统使用端口,exec、logs、metrics等接口使用