本文主要介绍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 |
|
|
BestEffort型 | best-effort |
|
|
您可以通过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 | 将宿主机端口映射到容器上 | 拒绝提交 | 使用 |
HostNetwork | 限制将宿主机端口映射到容器上 | 改写为 | 无需使用 |
HostIPC | 限制容器进程和宿主机进程间通信 | 改写为 | 无需使用 |
HostPID | 限制容器可见宿主机PID空间 | 改写为 | 无需使用 |
HostUsers | 限制使用用户命名空间 | 改写为空值 | 无需使用 |
Linux capabilities | 限制Linux系统特权(securityContext.capabilities)使用,不在允许值范围内的将被拒绝提交 说明 支持使用的特权:
| 拒绝提交 | 使用允许值 |
Sysctl | 限制内核参数(securityContext.sysctls)使用 说明
| 拒绝提交 | 使用允许值 |
PrivilegeEscalation | 限制容器进行特权提升(securityContext.allowPrivilegeEscalation) | 拒绝提交 | 使用默认配置 |
Privileged Container | 限制容器拥有privileged权限 | 拒绝提交 | 使用Security Context为Pod添加允许的capability或sysctl |
ImagePullPolicy | 限制镜像的下载策略 | 改写为 | 使用允许值 |
DNSPolicy | 限制使用特定的DNSPolicy 说明
|
| 使用允许值 |
核心功能
功能项 | 说明 |
安全隔离 | 作为安全可靠的Serverless容器运行环境,每个ACS Pod实例底层通过轻量级安全沙箱技术完全强隔离,实例间互不影响。同时实例在调度时尽可能分布在不同的物理机上,进一步保障了高可用性。 |
CPU/Memory/GPU/EphemeralStorage资源规格配置 |
|
镜像 | ACS Pod默认每次启动后使用与Pod关联的VPC从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关。建议您将容器镜像存储在阿里云容器镜像服务 ACR(Container Registry),通过VPC网络减少镜像拉取时间。另外,对于ACR上的私有镜像,ACS提供了免密拉取ACR镜像功能,方便您使用。 |
存储 | ACS支持云盘、NAS和OSS三种持久化存储。
|
网络 | ACS Pod默认使用独立的Pod IP,占用交换机vSwitch的一个弹性网卡。 在ACS集群环境中,Pod互联互通的方法如下:
|
日志采集 | 您可以直接配置Pod的环境变量收集 |
资源规格
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等接口使用。 |