Execute workloads em lote em pods ECI que iniciam em segundos e interrompem o faturamento após a conclusão.
Como o faturamento cessa ao término do Job, os workloads em lote evitam custos com nós pré-provisionados e recursos ociosos. Isso torna o ECI ideal para demandas variáveis.

Pré-requisitos
Verifique os seguintes itens:
O add-on ACK Virtual Node está instalado. Consulte Deploy the ack-virtual-node component.
Funcionamento do agendamento
Para executar um pod no ECI, aplique o rótulo alibabacloud.com/eci=true ao pod ou ao namespace correspondente. O nó virtual (virtual-kubelet) intercepta o pod e o agenda no ECI em vez de um nó regular do cluster.
Este exemplo usa um rótulo no nível de namespace para agendar todos os pods desse namespace em nós virtuais. Para outros métodos, consulte Schedule pods to virtual nodes.
Procedimento
Etapa 1: Crie um namespace e adicione o rótulo ECI
kubectl create ns vk
kubectl label namespace vk alibabacloud.com/eci=true
Todos os pods no namespace vk são executados como pods ECI em nós virtuais.
Etapa 2: Crie o Job
-
Salve o seguinte conteúdo YAML como
job.yaml. Este Job usa 16 núcleos de CPU e 32 GiB de memória para calcular pi com 2.000 dígitos.apiVersion: batch/v1 kind: Job metadata: name: pi namespace: vk # Pods in this namespace are scheduled to Elastic Container Instances 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 -
Aplique o arquivo YAML.
kubectl -n vk apply -f job.yaml
Etapa 3: Verifique a conclusão do Job
Verifique o status do pod.
kubectl -n vk get pod -o wide
O status Completed e o prefixo de nome de nó virtual-kubelet confirmam a execução do pod em um nó virtual.
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>
Etapa 4: Confirme a interrupção do faturamento
Inspecione os eventos do pod.
kubectl -n vk describe pod <pod-name>
Um evento StopCharge na seção Events confirma a finalização do pod ECI e a interrupção do faturamento.
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.
Os pods ECI são faturados conforme o uso real de recursos e param de gerar custos após a conclusão. Consulte Billing of elastic container instances e Lifecycle of elastic container instance pods .
Próximas etapas
Para reduzir ainda mais os custos, use pods ECI preemptíveis. Consulte Use preemptible elastic container instances to execute Jobs.