Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Run jobs on a preemptible elastic container instance

Dernière mise à jour :Aug 11, 2026

Les instances préemptibles s'exécutent au prix spot en temps réel, ce qui permet de réduire considérablement les coûts de calcul pour les charges de travail tolérantes aux pannes et éphémères, telles que les tâches par lots, les pipelines CI/CD et les services web sans état. Cette rubrique explique comment exécuter une tâche Kubernetes sur un pod basé sur une Elastic Container Instance (ECI) préemptible.

Fonctionnement des instances préemptibles

  • Facturation

    Le prix spot fluctue selon l'offre et la demande pour le type d'instance. Lors de la création d'une instance préemptible, vous spécifiez une stratégie d'enchère. Si votre prix d'enchère est supérieur au prix spot en temps réel et que des ressources sont disponibles, l'instance est créée. Elle entre ensuite dans une période de protection, durant laquelle elle est facturée au prix spot en vigueur au moment de l'achat. Par défaut, la période de protection dure 1 heure. À son expiration, la facturation bascule vers le prix spot en temps réel.

  • Mécanisme de réclamation

    Une fois la période de protection expirée, ECI vérifie le prix spot et l'inventaire des ressources toutes les 5 minutes. Si le prix spot en temps réel dépasse votre prix d'enchère ou si les ressources sont insuffisantes, l'instance est libérée. Environ 5 minutes avant la libération, ECI envoie un événement SpotToBeReleased à la liste des événements Kubernetes. Utilisez ce délai pour gérer l'interruption proprement, par exemple en configurant le refus du trafic entrant vers l'instance.

  • Méthodes de création

    Vous pouvez créer une instance préemptible en spécifiant des types d'instance ECS ou en indiquant le nombre de vCPU et la taille de la mémoire.

  • Stratégies d'enchère

    Ajoutez l'annotation k8s.aliyun.com/eci-spot-strategy aux métadonnées du pod pour définir la stratégie d'enchère.

    Valeurs valides :

    • SpotAsPriceGo : ECI utilise automatiquement le prix spot en temps réel comme prix d'enchère.

    • SpotWithPriceLimit : Vous définissez le prix horaire maximal que vous êtes prêt à payer. Ajoutez également l'annotation k8s.aliyun.com/eci-spot-price-limit pour spécifier ce prix maximal.

Pour plus d'informations, consultez la rubrique Créer une instance spot.

Exécuter une tâche sur une instance préemptible

Les tâches Kubernetes traitent par lot des travaux ponctuels et éphémères. Les étapes suivantes expliquent comment exécuter une tâche sur une instance préemptible.

Pour augmenter les chances de création de l'instance, spécifiez plusieurs types d'instance dans l'annotation k8s.aliyun.com/eci-use-specs.

  1. Créez le fichier de configuration de la tâche et enregistrez-le sous le nom spot_job.yaml.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      template:
        metadata:
          annotations:
            k8s.aliyun.com/eci-use-specs: ecs.c5.large,2-4Gi # Specifies multiple instance specifications to improve the success rate of instance creation.
            k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo    # The current market price is automatically used as the bid price.
        spec:
          containers:
          - name: pi
            image: registry-vpc.cn-beijing.aliyuncs.com/ostest/perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: Never
  2. Créez la tâche.

    kubectl create -f spot_job.yaml
  3. Vérifiez l'état du pod.

    kubectl get pod
    • Si la tâche est en cours d'exécution, l'état du pod est Running.

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   1/1     Running     0          35s
    • Si la tâche se termine avec succès, l'état du pod passe à Completed.

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   0/1     Completed   0          2h
    • Si l'instance est réclamée avant la fin de la tâche, l'état du pod passe à BidFailed et le contrôleur de tâche crée automatiquement un nouveau pod pour poursuivre la tâche.

      Le pod d'origine reste dans l'état BidFailed.

      Remarque

      Après sa création, l'instance préemptible s'exécute normalement pendant la période de protection. À l'expiration de cette période, l'instance est libérée si le prix spot en temps réel dépasse votre prix d'enchère ou si les ressources sont insuffisantes. Un événement de pré-libération (SpotToBeReleased) est généré environ 5 minutes avant la libération. Pour plus d'informations, consultez la section Détails de la réclamation.

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   1/1     BidFailed   0          4h53m
      pi-kp5zx   1/1     Running     0          3h45m