Exécutez des charges de travail par lots sur des pods ECI qui démarrent en quelques secondes et pour lesquels la facturation s'arrête dès leur achèvement.
La facturation s'interrompant à la fin d'un Job, les charges de travail par lots évitent les coûts liés aux nœuds pré-provisionnés et aux ressources de calcul inactives. Cette approche rend ECI idéal pour les charges de travail dont la demande est variable.

Prérequis
Vérifiez les points suivants :
Le module complémentaire ACK Virtual Node est installé. Consultez la rubrique Déployer le composant ack-virtual-node.
Fonctionnement de la planification
Pour exécuter un pod sur ECI, appliquez l'étiquette alibabacloud.com/eci=true au pod ou à son namespace. Le nœud virtuel (virtual-kubelet) intercepte alors le pod et le planifie sur ECI plutôt que sur un nœud classique du cluster.
Cet exemple utilise une étiquette au niveau du namespace pour planifier tous les pods de ce namespace sur des nœuds virtuels. Pour découvrir d'autres méthodes, consultez la rubrique Planifier des pods sur des nœuds virtuels.
Procédure
Étape 1 : Créer un namespace et ajouter l'étiquette ECI
kubectl create ns vk
kubectl label namespace vk alibabacloud.com/eci=true
Tous les pods du namespace vk s'exécutent en tant que pods ECI sur des nœuds virtuels.
Étape 2 : Créer le Job
-
Enregistrez le code YAML suivant dans un fichier nommé
job.yaml. Ce Job utilise 16 cœurs CPU et 32 GiB de mémoire pour calculer pi avec 2 000 décimales.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 -
Appliquez le fichier YAML.
kubectl -n vk apply -f job.yaml
Étape 3 : Vérifier l'achèvement du Job
Vérifiez le statut du pod.
kubectl -n vk get pod -o wide
Un statut Completed et un préfixe de nom de nœud virtual-kubelet confirment que le pod a bien été exécuté sur un nœud virtuel.
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>
Étape 4 : Confirmer l'arrêt de la facturation
Inspectez les événements du pod.
kubectl -n vk describe pod <pod-name>
La présence d'un événement StopCharge dans la section Events confirme que le pod ECI a terminé son exécution et que la facturation a été interrompue.
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.
Les pods ECI sont facturés en fonction de l'utilisation réelle des ressources et la facturation s'arrête à la fin de l'exécution. Consultez les rubriques Facturation des instances de conteneur élastiques et Cycle de vie des pods d'instance de conteneur élastique.
Étapes suivantes
Pour réduire davantage les coûts, utilisez des pods ECI préemptibles. Consultez la rubrique Utiliser des instances de conteneur élastiques préemptibles pour exécuter des Jobs.