Si vous devez créer rapidement un grand nombre de pods, la vitesse de mise à l'échelle des nœuds ECS peut s'avérer insuffisante. La réservation de nœuds ECS supplémentaires entraîne par ailleurs un gaspillage de ressources. Les nœuds virtuels résolvent ce problème en permettant d'ordonnancer les pods pour qu'ils s'exécutent en tant qu'instances Elastic Container Instance (ECI), sans réserver ni maintenir de pool de ressources fixe. Cette approche offre une élasticité optimale et réduit les coûts liés aux ressources.
Pourquoi utiliser des nœuds virtuels
Définition des nœuds virtuels
Dans les clusters ACK, les nœuds constituent les unités de base fournissant les ressources de calcul et de stockage nécessaires à l'exécution des charges de travail. La plupart des clusters ACK disposent d'au moins un pool de nœuds ECS. Lors de la création d'un pod, le kubelet l'ordonnance sur un nœud ECS du pool. Ce mode d'ordonnancement convient parfaitement aux applications au trafic stable. Toutefois, il peine à gérer les pics de trafic, car la création et le démarrage des instances ECS prennent du temps. Les nœuds virtuels permettent d'ordonnancer directement les pods sur Alibaba Cloud Elastic Container Instance (ECI), allégeant ainsi la charge opérationnelle liée à la gestion des nœuds et réduisant les coûts en évitant l'immobilisation de ressources inutilisées.
Contrairement aux nœuds ECS, les nœuds virtuels ne prennent pas en charge les libellés, annotations ou « taints » personnalisés.
Un nœud virtuel utilise le composant ack-virtual-node pour encapsuler les ressources de calcul, vous permettant de déployer des charges de travail sans gérer l'infrastructure sous-jacente. Ce composant ordonnance automatiquement les pods d'application pour qu'ils s'exécutent sur ECI. ECI est un service de conteneurs serverless où chaque instance ECI équivaut à un pod. Lorsque vous utilisez ECI pour déployer des applications conteneurisées, fournissez simplement une image de conteneur : vous ne payez que pour les ressources consommées par vos conteneurs.
Avantages
Les nœuds virtuels offrent les avantages suivants.
Entièrement géré : Inutile de créer des pools de ressources sous-jacents, ce qui réduit la charge de maintenance et d'exploitation. Les nœuds virtuels sont des ressources gérées et ne nécessitent aucune opération de maintenance courante propre aux nœuds Kubernetes, telle que les mises à niveau système ou l'installation de correctifs de sécurité.
-
Grande capacité : Augmentez la capacité jusqu'à 50 000 pods sans planification préalable.
ImportantSi de nombreux pods sont associés à des services, nous vous recommandons de maintenir leur nombre en dessous de 20 000.
Élasticité en quelques secondes : Créez des milliers de pods en peu de temps. Cela évite que la latence de création des pods n'affecte les services lors des pics de trafic.
Isolation sécurisée : Les pods sont créés sur la base d'ECI. Chaque instance de conteneur est fortement isolée des autres grâce à une technologie de conteneurs en bac à sable (sandbox) légère.
Rentabilité : Les applications sont créées à la demande et facturées selon le modèle de paiement à l'utilisation. Vous n'êtes pas facturé pour les ressources inutilisées. L'architecture serverless réduit également les coûts de maintenance et d'exploitation.
Cas d'utilisation
Les nœuds virtuels conviennent aux scénarios suivants.
-
Services en ligne
Pour les services en ligne confrontés à de fréquents pics de trafic, tels que l'éducation en ligne et le commerce électronique, les nœuds virtuels permettent une mise à l'échelle en quelques secondes. Cela prévient les pannes système causées par une montée en charge trop lente lors des pics de trafic et évite le gaspillage de ressources dues à l'inactivité.
-
Traitement des données
Pour le traitement d'un grand nombre de tâches de données en ligne simultanées, telles que les tâches Spark et Presto, la concurrence n'est plus limitée par le coût des ressources sous-jacentes. Augmentez rapidement la capacité jusqu'à des milliers de pods pour répondre aux exigences du traitement du Big Data.
-
Tâches d'IA
Pour les tâches d'IA telles que l'entraînement et l'inférence de modèles, qui ne s'exécutent pas en continu mais requièrent d'importantes ressources de calcul, inutile de réserver des ressources. Utilisez les ressources à la demande et payez à la seconde pour réduire les coûts d'inférence IA. De plus, l'élasticité à l'échelle de la seconde permet de répondre rapidement aux charges de travail explosives.
-
Environnements de préproduction CI/CD
Pour les tâches de test par lots dans le processus CI/CD, telles que l'emballage CI, les tests de charge et les tests de simulation, utilisez des nœuds virtuels pour créer et libérer des instances de conteneur à tout moment. Utilisez les ressources à la demande et soyez facturé à la seconde. Cette approche fournit des ressources à grande échelle à moindre coût.
-
Jobs et CronJobs
Les Jobs et CronJobs n'ont pas besoin de s'exécuter en continu. Une fois un job terminé, il s'arrête et le pod correspondant est supprimé. Avec les nœuds virtuels, la facturation s'arrête et les ressources de calcul sont libérées automatiquement à la fin du job. Cela évite le gaspillage de ressources inutilisées.
Limites
Avant d'utiliser les nœuds virtuels, prenez note des limites suivantes.
Les charges de travail DaemonSet ne sont pas prises en charge. Utilisez un conteneur sidecar comme solution de contournement.
Vous ne pouvez pas spécifier
HostPathniHostNetworkdans le fichiermanifestd'un pod.-
Les conteneurs privilégiés ne sont pas pris en charge. Utilisez un contexte de sécurité (Security Context) pour ajouter des capacités spécifiques à la place.
RemarqueLa fonctionnalité de conteneur privilégié est en aperçu interne. Pour tester cette fonctionnalité, soumettez un ticket.
Les services NodePort et l'affinité de session ne sont pas pris en charge.
Les régions Chine (Shenzhen Finance) et China GovCloud ne sont pas prises en charge.
Facturation
Les nœuds virtuels sont gratuits. Les pods ECI exécutés sur des nœuds virtuels sont facturés selon les règles de facturation d'ECI. Pour plus d'informations, consultez la rubrique Présentation de la facturation ECI.
Les pods ECI utilisent la méthode de facturation au paiement à l'utilisation. La facturation commence lorsqu'un pod ECI passe à l'état Pending et s'arrête lorsque le pod passe à l'état Succeeded ou Failed. Pour plus d'informations, consultez la rubrique Cycle de vie des pods ECI.
Utilisation des nœuds virtuels
Démarrage rapide
Pour savoir comment utiliser les nœuds virtuels, consultez la rubrique Ordonnancer des pods pour qu'ils s'exécutent sur ECI.
Déploiement du composant ack-virtual-node
Une fois le composant ack-virtual-node déployé dans un cluster ACK, activez la fonctionnalité de nœud virtuel.
Clusters managés ACK
Dans un cluster managé ACK, déployez le composant ack-virtual-node depuis la page Component Management. Le composant est géré par défaut et ne consomme pas de ressources de nœud de travail.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .
-
Sur la page Add-ons, cliquez sur l'onglet Core Components, recherchez ACK Virtual Node, puis cliquez sur Install. Suivez les instructions à l'écran pour terminer l'installation.
Pendant l'installation, le vSwitch et le groupe de sécurité par défaut du cluster servent de paramètres de configuration ECI initiaux. Pour modifier ces paramètres, mettez-les à jour en configurant un eci-profile.
Clusters dédiés ACK
Dans un cluster dédié ACK, déployez le composant ack-virtual-node depuis la page Marketplace. Une fois l'installation terminée, un déploiement nommé ack-virtual-node-controller est créé dans le namespace kube-system. Le déploiement s'exécute sur un nœud de travail.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur .
Sur la page Marketplace, cliquez sur l'onglet App Catalog. Recherchez et sélectionnez ack-virtual-node. Sur la page ack-virtual-node, cliquez sur Deploy.
-
Dans le panneau Create, sélectionnez un cluster et un namespace, puis cliquez sur Next.
Le Namespace est défini sur kube-system et le Release Name est défini sur ack-virtual-node.
-
Sur la page Parameters, sélectionnez la dernière Chart Version. Dans la section Parameters, configurez les paramètres du nœud virtuel et cliquez sur OK.
Paramètre
Propriétés facultatives
Description
Comment l'obtenir
ALIYUN_CLUSTERID
Obligatoire
ID du cluster.
Dans l'onglet Basic Information de la page Cluster Information, récupérez l'ID du cluster.
ALIYUN_RESOURCEGROUP_ID
Facultatif
ID du groupe de ressources.
Si vous ne configurez pas ce paramètre, le groupe de ressources par défaut est utilisé. Pour configurer ce paramètre, connectez-vous à la console Resource Management afin d'obtenir l'ID du groupe de ressources cible.
ECI_REGION
Obligatoire
ID de la région.
Dans l'onglet Basic Information de la page Cluster Information, récupérez les informations relatives à la Region.
RemarquePour plus d'informations sur la relation entre les noms de région et les ID de région, consultez la rubrique Régions et zones.
ECI_VPC
Facultatif
ID du VPC.
Dans l'onglet Basic Information de la page Cluster Information, récupérez l'ID du VPC du cluster.
ECI_VSWITCH
Obligatoire
ID du vSwitch.
Liste des ID de vSwitch utilisés pour attribuer des adresses IP aux pods d'application. Séparez plusieurs ID de vSwitch par des virgules (,), par exemple
vsw-xxx1, vsw-xxx2. Nous vous recommandons d'utiliser la même liste de vSwitches que celle du pool de nœuds.Sur la page Node Pools, cliquez sur un pool de nœuds. Dans l'onglet Details, récupérez l'ID du vSwitch du nœud dans la section Node Configurations.
RemarqueAssurez-vous que les vSwitches se trouvent dans les zones prises en charge par ECI.
ECI_SECURITY_GROUP
Obligatoire
ID du groupe de sécurité.
Dans l'onglet Basic Information de la page Cluster Information, récupérez l'ID du groupe de sécurité.
ECI_ACCESS_KEY
Obligatoire
Votre AccessKey ID.
Pour plus d'informations, consultez la rubrique Obtenir une paire de clés AccessKey.
Accordez la stratégie AliyunECIFullAccess à l'utilisateur RAM. Pour plus d'informations, consultez la rubrique Accorder des autorisations à un utilisateur RAM.
ECI_SECRET_KEY
Obligatoire
Votre AccessKey secret.
Pour plus d'informations, consultez la rubrique Obtenir une paire de clés AccessKey.
Accordez la stratégie AliyunECIFullAccess à l'utilisateur RAM. Pour plus d'informations, consultez la rubrique Accorder des autorisations à un utilisateur RAM.
KUBERNETES_APISERVER_HOST
Obligatoire
Adresse IP du serveur API.
Adresse IP et port du point de terminaison interne du serveur API. Vous pouvez consulter ces informations dans l'onglet Basic Information de la page Cluster Information.
KUBERNETES_APISERVER_PORT
Obligatoire
Port du serveur API.
-
Vérifiez l'état du déploiement du composant ack-virtual-node.
kubectl -n kube-system get deploy ack-virtual-node-controllerSortie attendue :
NAME READY UP-TO-DATE AVAILABLE AGE ack-virtual-node-controller 1/1 1 1 2m31s
Ordonnancer des pods pour qu'ils s'exécutent sur ECI
ACK propose plusieurs solutions d'ordonnancement pour répondre aux divers besoins dans les scénarios de déploiement hybride ECS et ECI. Pour plus d'informations, consultez la rubrique Ordonnancer des pods sur un nœud virtuel.
L'architecture CPU par défaut des pods ECI est x86 et le système d'exploitation par défaut est Linux. Pour créer un pod ECI utilisant l'architecture Arm ou le système d'exploitation Windows, consultez la rubrique Ordonnancer des pods sur un nœud virtuel basé sur Arm ou (Aperçu sur invitation) Ordonnancer des pods sur un nœud virtuel Windows.
Configuration flexible des pods ECI
Utilisez les annotations de pod pour configurer les fonctionnalités ECI, telles que la spécification des caractéristiques d'un pod ECI, l'activation d'un cache d'image pour accélérer la création du pod, l'attribution d'une adresse IPv6 à un pod ECI et l'augmentation de la taille de l'espace de stockage temporaire. Pour plus d'informations, consultez la rubrique Annotations des pods ECI.
Utilisez la fonctionnalité ECI Effect d'un eci-profile pour ajouter dynamiquement les annotations requises aux pods ECI répondant à des conditions spécifiques. Cela permet un orchestrement par lot des pods.
Gestion des nœuds virtuels
Mise à niveau du composant ack-virtual-node
Il peut être nécessaire de mettre à niveau le composant ack-virtual-node pour utiliser certaines fonctionnalités avancées des nœuds virtuels.
La mise à niveau prend environ 1 minute. Pendant cette opération, vous ne pouvez pas créer de pods, mais les pods existants ne sont pas affectés.
Clusters managés ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .
Sur la page Add-ons, cliquez sur l'onglet Core Components, recherchez ACK Virtual Node, puis cliquez sur Upgrade. Suivez les instructions à l'écran pour terminer la mise à niveau.
Clusters dédiés ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Dans la liste Helm, recherchez ack-virtual-node et cliquez sur Update dans la colonne Actions. Dans la section Version, sélectionnez la dernière version du Chart.
-
Dans la section de configuration des paramètres, mettez à jour les paramètres et cliquez sur OK.
Vous pouvez également spécifier
virtualNode.image.tagpour mettre à niveau l'image vers une version spécifique.
Modification de la configuration du nœud virtuel
Le eci-profile contient des configurations telles que le VPC et les vSwitches auxquels appartiennent les pods ACS et ECI, ainsi que l'activation ou non des nœuds virtuels Arm. Mettez à jour les éléments de configuration fixes dans le champ data selon vos besoins.
Suppression des nœuds virtuels
Lorsque vous désinstallez le composant ack-virtual-node, le nœud virtuel est automatiquement supprimé et les pods ACS et ECI du cluster sont automatiquement effacés.
Vérifiez les pods ACS et ECI dans le cluster pour vous assurer que vos services ne sont pas affectés après la suppression des pods.
-
Désinstallez le composant ack-virtual-node.
Clusters managés ACK : Sur la page Add-ons, désinstallez le composant ack-virtual-node.
Clusters dédiés ACK : Sur la page Helm, supprimez le composant ack-virtual-node.