Alibaba Cloud Container Service propose plusieurs offres de conteneurs sans serveur basées sur des nœuds virtuels et Elastic Container Instance (ECI). Par exemple, le déploiement du composant de nœud virtuel Container Service for Kubernetes (ACK) connecte Kubernetes à ECI de manière transparente, ce qui vous permet de créer des pods ECI de façon flexible et dynamique à la demande, sans avoir à planifier la capacité du cluster.
Prérequis
Une instance ASM version 1.7.5.41 ou ultérieure est créée. Pour plus d'informations, consultez la rubrique Créer une instance ASM.
Le composant ack-virtual-node est déployé dans le cluster ACK et fonctionne correctement. Pour plus d'informations, consultez la section Étape 1 : Déployer le composant ack-virtual-node.
Le fichier kubeconfig du cluster est obtenu et kubectl est utilisé pour se connecter au cluster.
Étape 1 : Activer l'injection automatique de sidecar pour le namespace cible
Lorsque vous activez l'injection automatique de sidecar pour un namespace dans la console ASM, un proxy Envoy est automatiquement injecté en tant que sidecar dans chaque pod créé dans ce namespace. Ces proxies Envoy constituent le plan de données de l'instance ASM.
Dans cet exemple, l'injection automatique de sidecar est activée pour les namespaces default et vk. La méthode 1 utilise le namespace default et la méthode 2 utilise le namespace vk. Pour plus d'informations, consultez la rubrique Gérer les namespaces globaux.
Étape 2 : Créer une application de pod ECI
Après la création d'une application de pod ECI, ASM peut gérer l'application sur le plan de données via le sidecar injecté.
Les deux méthodes suivantes sont alternatives. Choisissez-en une en fonction de la portée que vous souhaitez attribuer au libellé alibabacloud.com/eci=true :
Méthode 1 : Libellé de pod — Spécifiez le libellé lors de la création du pod ; il s'applique uniquement à ce pod.
Méthode 2 : Libellé de namespace — Ajoutez le libellé au namespace avant de créer le pod ; il s'applique aux pods créés dans ce namespace.
Méthode 1 : Créer une application de pod ECI en configurant les libellés de pod
Spécifiez le libellé alibabacloud.com/eci=true lors de la création du pod. Le pod s'exécute alors en tant qu'instance ECI sur un nœud virtuel.
-
Exécutez la commande suivante pour vérifier que le namespace
defaultcontient le libelléistio-injection=enabled:kubectl get ns default --show-labelsRésultat attendu :
NAME STATUS AGE LABELS default Active 16d istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asm -
Exécutez la commande suivante pour déployer une application Nginx :
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueRésultat attendu :
pod/nginx created -
Exécutez la commande suivante pour afficher les informations du pod sur le nœud virtuel :
kubectl get pod -n default -o wide|grep virtual-kubeletRésultat attendu :
nginx 2/2 Running 0 8m49s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
Le nombre de pods prêts 2/2 dans le résultat indique que le sidecar injecté s'exécute aux côtés du conteneur d'application. ASM gère le pod sur le plan de données.
Méthode 2 : Créer une application de pod ECI en configurant les libellés de namespace
Ajoutez le libellé alibabacloud.com/eci=true au namespace avant de créer le pod. Les pods que vous créez ensuite dans ce namespace s'exécutent en tant qu'instances ECI sur un nœud virtuel.
-
Exécutez la commande suivante pour vérifier que le namespace
vkcontient le libelléistio-injection=enabled:kubectl get ns vk --show-labelsRésultat attendu :
NAME STATUS AGE LABELS vk Active 96m istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asm -
Exécutez la commande suivante pour ajouter le libellé au namespace
vk:kubectl label namespace vk alibabacloud.com/eci=trueRésultat attendu :
namespace/vk labeled -
Exécutez la commande suivante pour déployer une application Nginx :
kubectl -n vk run nginx --image nginxRésultat attendu :
pod/nginx created -
Exécutez la commande suivante pour afficher les informations du pod sur le nœud virtuel :
kubectl -n vk get pod -o wide|grep virtual-kubeletRésultat attendu :
nginx 2/2 Running 0 38s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
Le nombre de pods prêts 2/2 dans le résultat indique que le pod s'exécute avec le sidecar injecté. ASM gère le pod sur le plan de données via ce sidecar.