ACS Pod实例概述

更新时间: 2024-01-24 20:49:25

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

实例类型定义

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

实例类型

标签

实例特点

典型应用场景

通用型【默认】

standard

  • 适合大部分延迟敏感型工作负载。

  • 通用型实例支持常驻运行,规格灵活。

  • 微服务应用

  • Web应用

  • Java应用

  • AI推理、训练

任务型

best-effort

  • 具备价格优势,可以节省相当可观的资源成本。

  • 弹性算力,实例生命周期内的CPU平均算力略低于通用型。

  • 公测期间运行时长最大为24小时,24小时后会自动过期释放。

  • 大数据计算

  • 音视频转码

  • 批处理任务

独享型

exclusive

  • 适合对延迟极度敏感的工作负载。

  • 高性能网络服务器

  • 网关系统

  • 中间件系统

您可以通过Pod上的alibabacloud.com/instance-type标签来指定实例的类型。下面是一个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
          # 通用型(standard), 任务型(best-effort), 独享型(exclusive)
          # 不填默认为通用型
        alibabacloud.com/instance-type: standard 
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9 

Kubernetes应用限制

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

限制项

说明

推荐替代方案

HostPath

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

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

HostNetwork

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

使用type=LoadBalancer的负载均衡

HostIPC

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

用户不感知节点,无需使用

HostPID

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

用户不感知节点,无需使用

DaemonSet

限制使用Daemonset类workload

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

Linux capabilities

限制Linux系统特权(securityContext.capabilities)使用

说明

支持使用的特权:

  • CHOWN

  • DAC_OVERRIDE

  • FOWNER

  • FSETID

  • KILL

  • SETGID

  • SETUID

  • SETPCAP

  • NET_BIND_SERVICE

  • NET_RAW

使用允许值

Sysctl

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

暂无

Secret/Configmap引用

限制Pod使用过多的Secret/Configmap

说明

具体限制:

  • 不允许单个容器通过env引用超过64个configmap

  • 不允许单个容器通过env引用超过64个secret

  • 不允许单个容器通过volume挂载引用超过64个configmap

  • 不允许单个容器通过volume挂载引用超过64个secret

使用允许数量范围的引用

PrivilegeEscalation

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

使用默认配置

Privileged Container

限制容器拥有privileged权限

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

ProcMount

限制配置securityContext.procMount为Unmasked

使用默认(default)配置值

RuntimeClassName

限制配置RuntimeClassName

使用默认配置

Overhead

限制配置Overhead

使用默认配置

LivenessProbe/ReadinessProbe/StartupProbe

限制配置HTTPGet.Host及TCPSocket.Host字段值

使用默认配置

核心功能

功能项

说明

安全隔离

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

CPU/Memory资源或规格配置

  • 指定容器的CPU和Memory:可以通过Kubernetes标准方式配置单个容器预定的CPU和Memory(resources.requests)。如不指定,默认单个容器的资源为0.25 vCPU和0.5 GiB内存。ACS的Pod资源则是Pod内所有容器所需资源的总和。

    重要

    ACS会自动规整不支持的规格,例如所有容器相加的资源为2 vCPU和3 GiB内存,那么将会自动规整为2 vCPU和4 GiB内存。调整的额外资源会增加到第一个容器中。

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

说明

当容器指定的资源上限超过了整个Pod所有容器预定资源的总和,ACS会改写容器的资源上限为整个Pod所有容器预定资源的总和。例如所有容器相加的资源为2 vCPU和3 GiB内存,其中单个容器如果指定了资源上限为3 vCPU和5GIB内存,则该容器资源上限会被改写成2 vCPU 和4 GiB。

镜像

镜像拉取

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

存储

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

  • 云盘

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

    • 支持动态方式创建PV。

  • NAS

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

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

网络

ACS Pod默认使用独立的Pod IP,占用交换机vSwitch的一个成员网卡(Member ENI)资源。

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

  • 使用Pod IP直接访问。

  • LoadBalancer Service挂载ACS Pod。

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

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

日志采集

您可以直接配置Pod的Env收集stdout或者文件日志,采集到阿里云日志服务SLS中。您需要部署一个logtail sidecar容器,通过Sidecar方式使用采集日志

资源规格

Pod规格限制项

限制描述

CPU

  • 0.25vCPU-8vCPU

  • 通用型和任务型的Pod vCPU必须为0.25vCPU的整数倍

  • 独享型的Pod vCPU必须为2vCPU的整数倍

内存

  • 0.5GiB-64GiB

  • CPU的vCPU数和内存的GiB数的比例在1:1和1:8之间

存储

  • 根盘存储空间30GiB

  • 可以通过挂载云盘和NAS盘的方式扩展存储空间或者提升存储的IO速率

网络带宽(入 + 出)

  • 网络基础带宽:0.1Gbit/s-3.2Gbit/s

  • 网络突发带宽:1Gbit/s-8Gbit/s

  • CPU的vCPU数与基础带宽Gbit/s的比例为1:0.4

  • CPU的vCPU数与突发带宽Gbit/s的比例为1:1