Tous les produits
Search
Centre de documentation

Elastic Container Instance:Integrate a VNode with a self-managed Kubernetes cluster on ECS

Dernière mise à jour :Sep 21, 2026

Déployez un nœud virtuel (VNode) dans votre cluster Kubernetes autonome hébergé sur ECS afin d'ordonnancer les pods via Elastic Container Instance (ECI) au sein du même VPC.

Contexte

ECI gère l'ordonnancement des pods et les ressources au niveau de l'infrastructure, tandis que Kubernetes assure la gestion des charges de travail. Ajoutez un VNode à votre cluster autonome sur ECS pour utiliser ECI. La rubrique Connecter un cluster Kubernetes autonome à ECI décrit l'intégralité du processus d'intégration.

Prérequis

  • Un cluster Kubernetes autonome (versions 1.13 à 1.30) sur ECS, créé avec kubeadm.

  • Le plug-in réseau Flannel, Calico ou Cilium est déployé dans le cluster.

Installer vnodectl

ECI fournit vnodectl pour connecter et gérer les VNodes. Nous vous recommandons de l'installer sur un nœud de plan de contrôle de votre cluster.

  1. Connectez-vous à votre cluster Kubernetes.

  2. Téléchargez le package VNodectl.

    wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.5-beta_linux_amd64.tar.gz -O vnodectl.tar.gz
  3. Extrayez le package.

    tar xvf vnodectl.tar.gz
  4. Déplacez le binaire vers un répertoire inclus dans votre PATH.

    cp vnodectl /usr/local/bin/vnode

Configurer le fichier ~/.vnode/config

  1. Modifiez le fichier ~/.vnode/config.

    vim ~/.vnode/config

    Ajoutez votre configuration. Exemple :

    Important
    • Le kubeconfig requiert les permissions cluster-admin. Des alternatives avec des permissions restreintes sont présentées dans la rubrique Configurer le cluster.

    • Le VNode doit pouvoir atteindre l'adresse du serveur API définie dans le kubeconfig.

    kind: vnode
    contexts:
        - name: default                                          # The name of the context.
          region-id: cn-hangzhou                                 # The region ID.
          access-key-id: <yourAccessKeyID>                       # The AccessKey ID.
          access-key-secret: <yourAccessKeySecret>               # The AccessKey secret.
          vswitch-id: vsw-7xv2yk45qp5etidgf****                  # The ID of the vSwitch to which the VNode belongs.
          security-group-id: sg-7xv5tcch4kjdr65t****             # The ID of the security group to which the VNode belongs.
          kubeconfig: /path/to/kubeconfig                        # The path to the cluster's kubeconfig file.
    current-context: default
  2. Définissez le contexte actif.

    vnode config set-context <context-name>

Créer un VNode

  1. Créez un VNode.

    vnode create

    La sortie inclut le VirtualNodeId :

    {"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}
  2. Vérifiez le nœud.

    kubectl get node

    Le VNode apparaît avec le statut Ready :

    NAME                                    STATUS     ROLES                  AGE    VERSION
    cn-hangzhou.vnd-7xvetkyase7gb62u****    Ready      agent                  174m   v1.20.6
    vnode-test001                           Ready      control-plane,master   23h    v1.20.6
    vnode-test002                           Ready      <none>                 22h    v1.20.6

Empêcher l'ordonnancement des DaemonSets sur un VNode

Un VNode est un nœud virtuel et ne peut pas exécuter de DaemonSets. Après la création d'un VNode, vous devez ajouter une nodeAffinity au DaemonSet kube-proxy pour empêcher l'ordonnancement des DaemonSets sur le VNode.

  1. Modifiez la configuration du DaemonSet.

    kubectl -n kube-system edit ds kube-proxy
  2. Configurez la nodeAffinity.

    Ajoutez le code YAML suivant à la section spec.template.spec :

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: type
              operator: NotIn
              values:
              - virtual-kubelet

Ordonnancer les pods sur un VNode

Une fois le VNode créé, vous pouvez utiliser les méthodes suivantes pour ordonnancer les pods en tant qu'instances ECI sur le VNode.

  • Ordonnancement manuel

    Vous pouvez ordonnancer manuellement les pods sur un VNode en configurant les sélecteurs de nœuds (nodeSelector) et les tolérances, ou en spécifiant un nodeName. Pour plus d'informations, consultez la rubrique Ordonnancer les pods sur un VNode.

  • Ordonnancement automatique

    Après avoir déployé le composant eci-profile, vous pouvez configurer un sélecteur personnalisé pour ordonnancer automatiquement les pods correspondants sur le VNode. Pour plus d'informations, consultez la rubrique Utiliser eci-profile pour ordonnancer les pods sur un VNode.

Établir la connectivité réseau des pods

Les pods exécutés sur le VNode reçoivent une ENI et une adresse IP interne depuis le vSwitch du VPC.

Par défaut, les pods du VNode ne peuvent pas atteindre les pods situés sur le réseau superposé du cluster (Flannel, Calico ou Cilium), bien que l'inverse soit possible. Ajoutez une entrée de routage à la table de routage du VPC pour diriger le trafic sortant des pods du VNode vers les nœuds ECS appropriés.

Exemple de configuration de routage :

  • Scénario d'exemple

    Dans cet exemple, test1 s'exécute sur le VNode et test2 sur un nœud ECS. Par défaut, test2 peut atteindre test1, mais pas l'inverse.

    NAME      READY     RESTARTS    AGE    IP                NODE                                   NOMINATED NODE   READINESS NODE
    test1     1/1       0           58s    192.168.0.245     cn-hangzhou.vnd-7xvetkyase7gb62u****   <none>           <none>
    test2     1/1       0           35s    10.88.1.4         vnode-test002                          <none>           <none>
  • Procédure

    1. Connectez-vous à la console VPC.

    2. Dans le volet de navigation de gauche, cliquez sur Route Tables.

    3. Sélectionnez la région de votre cluster, identifiez la table de routage du VPC et cliquez sur son ID.

    4. Sous l'onglet Route Entry List, cliquez sur l'onglet Custom Route.

    5. Cliquez sur Add Route Entry.

    6. Dans le panneau Add route entry, configurez l'entrée de routage et cliquez sur OK.

      Exemple de configuration :

      • Destination CIDR Block : saisissez le bloc CIDR des pods sur le nœud ECS cible, par exemple 10.88.1.0/24.

      • Next Hop Type : sélectionnez ECS Instance.

      • ECS Instance : sélectionnez le nœud ECS cible.

  • Vérifier le résultat

    Exécutez kubectl exec pour ouvrir un shell dans test1 et pinguer test2. Une réponse positive confirme que test1 peut désormais atteindre test2.

Documentation connexe