Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Schedule pods to ECI with virtual nodes

Dernière mise à jour :Aug 11, 2026

Lorsque vous devez créer rapidement un grand nombre de Pods, le scale-out des instances ECS peut s'avérer trop lent et la réservation d'instances supplémentaires entraîne un gaspillage de ressources. Les nœuds virtuels ACK vous permettent de planifier les Pods sur Elastic Container Instance (ECI) sans provisionner ni gérer d'instances ECS. Cette rubrique décrit comment planifier l'exécution des Pods sur ECI dans un ACK managed cluster.

Remarques sur l'utilisation

Pour kube-scheduler v6.11.0 ou version ultérieure, si vous créez plus de 1 000 Pods ECI simultanément en ajoutant des libellés, mettez à jour vers la dernière version et activez la fonctionnalité SchedulerBatchMoveEvents=true.

Cas d'utilisation

L'exécution des Pods sur ECI est idéale pour gérer les pics de trafic et réduire les coûts de calcul. Parmi les cas d'utilisation courants, citons :

  • Services en ligne avec des modèles de trafic fluctuants

    Les Pods ECI vous aident à réagir plus rapidement aux pics de trafic, réduisent la maintenance des pools de ressources fixes et abaissent les coûts de calcul.

  • Tâches de calcul par lots ou de courte durée

    Lorsque vous exécutez des tâches de calcul sous forme de Pods ECI, vous n'avez pas besoin de maintenir des nœuds dédiés et ne payez que les ressources de calcul utilisées pendant l'exécution des tâches. Cette approche réduit les coûts pour les charges de travail telles que les jobs Spark et IA.

Prérequis

Votre cluster ACK doit exécuter Kubernetes 1.16 ou une version ultérieure et se trouver dans une région qui prend en charge ECI.

Remarque

Pour vérifier si la région de votre cluster est prise en charge, consultez Regions and zones supported by ECI. Ensuite, connectez-vous à la Elastic Container Instance console pour activer le service ECI.

Procédure

Étape 1 : Déployer le composant ack-virtual-node

Remarque

Les étapes suivantes utilisent un ACK managed cluster à titre d'exemple. Pour un ACK dedicated cluster, vous devez déployer le composant ack-virtual-node depuis la page Marketplace. Pour plus d'informations, consultez Deploy the ack-virtual-node component.

  1. Connectez-vous à la ACK console. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .

  3. Sur la page Add-ons, cliquez sur l'onglet Core Components, recherchez ACK Virtual Node, puis cliquez sur Install. Suivez les instructions affichées à l'écran pour terminer l'installation.

    Pendant l'installation, le vSwitch et le groupe de sécurité par défaut du cluster sont utilisés comme paramètres de configuration ECI initiaux. Pour modifier les paramètres, vous pouvez les mettre à jour en configurant un eci-profile.

Étape 2 : Planifier un Pod sur ECI

Remarque

Les exemples suivants montrent comment planifier un Pod sur un nœud virtuel pour qu'il s'exécute dans ECI en ajoutant un libellé au Pod ou au Namespace. Pour plus de méthodes de planification, consultez Schedule a Pod to a virtual node.

Pod

Pour exécuter un Pod individuel dans ECI, ajoutez le libellé alibabacloud.com/eci: "true" au Pod. Cela planifie le Pod sur un nœud virtuel d'architecture x86 pour qu'il s'exécute en tant que Pod ECI.

  1. Créez un Deployment à partir du fichier YAML suivant.

    kubectl create -f eci-pod.yaml

    Le code suivant présente un exemple de fichier eci-pod.yaml :

    Remarque

    Dans le fichier YAML ci-dessous, l'annotation k8s.aliyun.com/eci-use-specs spécifie la spécification de calcul pour le Pod ECI. Pour plus d'informations sur la configuration des spécifications des Pods ECI, consultez Specify the compute specification of an ECI pod.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"             # Add this label to schedule the Pod to ECI. 
          annotations:
            k8s.aliyun.com/eci-use-specs: "2-4Gi"   # Specify 2 vCPUs and 4 GiB of memory for the ECI pod.
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  2. Vérifiez que le Pod s'exécute sur un nœud virtuel.

    kubectl get pod -o wide -l app=nginx

    La sortie attendue montre que le Pod a été planifié sur un nœud virtuel, comme indiqué dans la colonne NODE.

    NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE                            NOMINATED NODE   READINESS GATES
    test-86f7fbc94f-g5m22   1/1     Running   0          38s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    test-86f7fbc94f-r4wcn   1/1     Running   0          38s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
  3. Consultez les détails du Pod ECI.

    kubectl get pod <pod-name> -o yaml

    Dans la sortie YAML, trouvez l'ID d'instance ECI correspondant dans l'annotation k8s.aliyun.com/eci-instance-id et confirmez la spécification de calcul du Pod ECI utilisée pour la facturation dans l'annotation k8s.aliyun.com/eci-instance-spec.

Namespace

Si vous souhaitez exécuter une catégorie spécifique de Pods dans ECI, vous pouvez créer un Namespace et lui ajouter le libellé alibabacloud.com/eci: "true". Tous les Pods créés dans ce Namespace sont alors planifiés sur un nœud virtuel d'architecture x86 pour s'exécuter en tant que Pods ECI.

  1. Créez un Namespace nommé vk et ajoutez-y le libellé requis.

    kubectl create ns vk
    kubectl label namespace vk alibabacloud.com/eci=true
  2. Utilisez le fichier YAML suivant pour créer un Deployment dans le namespace vk.

    kubectl create -f eci-namespace.yaml

    Le code suivant présente un exemple de fichier eci-namespace.yaml :

    Remarque

    Dans le fichier YAML ci-dessous, l'annotation k8s.aliyun.com/eci-use-specs spécifie la spécification de calcul pour le Pod ECI. Pour plus d'informations sur la configuration des spécifications des Pods ECI, consultez Specify the compute specification of an ECI pod.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      namespace: vk       # Specify the labeled Namespace to schedule Pods to ECI.
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: test
          labels:
            app: nginx
          annotations:
            k8s.aliyun.com/eci-use-specs: "2-4Gi"   # Specify 2 vCPUs and 4 GiB of memory for the ECI pod.
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  3. Vérifiez que le Pod s'exécute sur un nœud virtuel.

    kubectl get pod -o wide -l app=nginx -n vk

    La sortie attendue montre que le Pod a été planifié sur un nœud virtuel, comme indiqué dans la colonne NODE.

    NAME                   READY   STATUS    RESTARTS   AGE   IP            NODE                            NOMINATED NODE   READINESS GATES
    test-8f54bcfb5-86pvc   1/1     Running   0          14s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
    test-8f54bcfb5-skvkg   1/1     Running   0          14s   10.16.XX.XX   virtual-kubelet-cn-hangzhou-j   <none>           <none>
  4. Consultez les détails du Pod ECI.

    kubectl get pod <pod-name> -o yaml -n vk

    Dans la sortie YAML, trouvez l'ID d'instance ECI correspondant dans l'annotation k8s.aliyun.com/eci-instance-id et confirmez la spécification de calcul du Pod ECI utilisée pour la facturation dans l'annotation k8s.aliyun.com/eci-instance-spec.