O ACK Serverless executa jobs em lote sob demanda. O faturamento cessa ao término do ciclo de vida do pod, o que elimina a necessidade de reservar nós ou expandir o cluster para picos de carga. Em tarefas em lote sensíveis a custos, use instâncias preemptíveis para reduzir ainda mais as despesas.
Pré-requisitos
Antes de começar, verifique se você:
Executar um job
Etapa 1: Crie o manifesto do job
Crie um arquivo chamado job.yaml com o seguinte conteúdo:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
resources:
requests:
cpu: 16
memory: 32Gi
restartPolicy: Never
backoffLimit: 4
Este exemplo calcula pi com 2.000 casas decimais usando 16 CPUs e 32 GiB de memória.
Etapa 2: Implantar o job
kubectl apply -f job.yaml
Etapa 3: Visualize o status do job
Execute o comando a seguir para verificar o estado do pod:
kubectl get pod
Saída esperada:
NAME READY STATUS RESTARTS AGE
pi-4f7w5 0/1 Completed 0 80s
Para visualizar detalhes sobre o estado do pod, execute este comando:
kubectl describe pod
Saída esperada:
Name: pi-4f7w5
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: virtual-kubelet-cn-hongkong-b/10.10.66.169
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulMountVolume 114s kubelet, eci MountVolume.SetUp succeeded for volume "default-token-8k4jz"
Normal Pulling 113s kubelet, eci pulling image "perl"
Normal Pulled 64s kubelet, eci Successfully pulled image "perl"
Normal Created 64s kubelet, eci Created container
Normal Started 64s kubelet, eci Started container
Usar instâncias preemptíveis
Instâncias preemptíveis reduzem os custos de computação. Para usar uma instância preemptível, adicione a anotação k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo ao modelo de pod:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
annotations:
k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
resources:
requests:
cpu: 16
memory: 32Gi
restartPolicy: Never
backoffLimit: 4
Para mais informações, consulte Usar instâncias preemptíveis.
Próximos passos
Consulte os conceitos de Job do Kubernetes para configurar paralelismo, contagens de conclusão e tratamento de falhas.