ECI支持秒级启动,按需扩容。对于短时间运行的Job任务,使用ECI来运行可以避免资源闲置浪费,在满足业务需求的同时有效降低资源使用成本,提升集群的弹性能力和资源利用率。
使用场景
Kubernetes集群的节点资源配置不足会导致Pod无法及时运行,购买过多的节点又会导致资源的闲置浪费。如果您的业务有明显的波峰谷特征,推荐您使用ECI作为弹性资源池。ECI支持秒级启动,按需扩容,能够很好地提升集群的弹性能力。使用ECI来应对突发流量和运行Job任务,您无需提前预估业务流量或预留闲置资源,在满足业务需求的同时能够有效降低使用和运维成本。
前提条件
集群中已安装ack-virtual-node组件。具体操作,请参见部署ack-virtual-node组件。
操作示例
创建一个Namespace用于测试,并为其添加
alibabacloud.com/eci=true
标签。说明为Namespace添加此标签后,该Namespace下的Pod均将调度到虚拟节点,以ECI运行。本文以该方式为例进行说明,更多关于ECI调度的信息,请参见调度Pod至虚拟节点。
kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=true
在测试的Namespace下创建Job。
修改以下YAML,保存为job.yaml文件。
apiVersion: batch/v1 kind: Job metadata: name: pi namespace: vk # 指定添加了特定Label的Namespace,将Pod调度到ECI spec: template: spec: containers: - name: pi image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] resources: requests: cpu: 16 memory: 32Gi restartPolicy: Never backoffLimit: 4
创建Job。
kubectl -n vk apply -f job.yaml
查看Job对应Pod的运行情况。
kubectl -n vk get pod -o wide
预期返回如下,可以看到Job已经运行结束(状态为Completed),所在节点为虚拟节点(节点前缀为
virtual-kubelet
)。NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pi-zw2lc 0/1 Completed 0 15m 192.168.XX.XX virtual-kubelet-cn-shanghai-b <none> <none>
查看Job对应Pod的详细信息。
kubectl -n vk describe pod <pod-name>
在返回的Events中,从StopCharge事件可以看到对应的ECI Pod已经运行结束,停止计费。
说明ECI Pod按需收费,当Pod执行完成后会停止计费。更多信息,请参见ECI实例计费和ECI Pod生命周期。
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ImageCacheMissed 16m EciService [eci.imagecache]Missed image cache. Normal Pulling 16m kubelet Pulling image "registry.cn--shanghai.aliyuncs.com/eci_open/perl:5.32" Normal Pulled 15m kubelet Successfully pulled image "registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32" in 12.951s (12.951s including waiting). Image size: 336066994 bytes. Normal Created 15m kubelet Created container: pi Normal Started 15m kubelet Started container pi Normal StopCharge 15m EciService [eci.containergroup]The charge of current ECI instance has been stopped, but the related resources are still being cleaned.
因此,基于ECI运行Job任务可以节省计算成本,减轻集群运维负担,您无需关心集群的计算资源是否充足,也无需关心节点的扩容和缩容问题。
相关文档
您也可以结合使用抢占式ECI实例来节约实例使用成本,请参见使用抢占式ECI实例运行Job任务。