Des échecs de création de pods ECI peuvent survenir lors de la mise à l'échelle de votre activité pour gérer des pics de trafic ou lors de l'exécution de tâches à grande échelle. Les causes fréquentes incluent un inventaire d'instances insuffisant dans une zone de disponibilité ou l'épuisement des adresses IP d'un vSwitch. Pour augmenter le taux de réussite des créations et garantir la continuité de vos activités, créez des pods ECI sur plusieurs zones de disponibilité.
Prérequis
Vous devez avoir créé plusieurs vSwitch dans différentes zones de disponibilité au sein du VPC cible.
Pour savoir comment créer un vSwitch, consultez la rubrique Créer et gérer un vSwitch.
Pour obtenir la liste des régions et zones de disponibilité prenant en charge ECI, consultez la rubrique Régions et zones.
Contexte
Lors de la création d'une instance ECI, vous pouvez spécifier plusieurs zones de disponibilité en indiquant plusieurs vSwitch. Le système répartit aléatoirement les demandes entre les zones de disponibilité spécifiées afin d'équilibrer la charge. Si l'inventaire d'une zone de disponibilité est insuffisant, le système tente automatiquement de créer l'instance dans une autre zone de disponibilité spécifiée.
Les limitations suivantes s'appliquent lorsque vous spécifiez plusieurs zones de disponibilité (vSwitch) :
Tous les vSwitch spécifiés doivent appartenir au même VPC.
Vous pouvez spécifier un maximum de 10 vSwitch.
La combinaison de plusieurs zones de disponibilité et de plusieurs types d'instances augmente encore davantage le taux de réussite de création des instances.
Configuration
Vous pouvez configurer plusieurs zones de disponibilité au niveau du cluster ou pour un pod ECI spécifique :
Cluster : spécifiez plusieurs vSwitch pour le cluster. Cette configuration s'applique à tous les pods ECI du cluster.
Pod ECI : spécifiez plusieurs vSwitch lors de la création d'un pod ECI. Cette configuration ne s'applique qu'à ce pod ECI spécifique.
Configuration d'un nouveau cluster
Avant de créer un cluster, nous vous recommandons de créer plusieurs vSwitch dans différentes zones de disponibilité au sein du VPC que vous prévoyez d'utiliser. Lors de la création du cluster, vous pouvez configurer plusieurs vSwitch pour activer la fonctionnalité multi-zones de disponibilité. L'exemple suivant illustre la création d'un cluster ACK Serverless dans la console Container Service for Kubernetes (ACK).
Dans la section Virtual Private Cloud, sélectionnez Use Existing et spécifiez le VPC cible. Ensuite, dans la section vSwitch, sélectionnez plusieurs vSwitch situés dans différentes zones de disponibilité (vous pouvez sélectionner de 1 à 10 vSwitch ; le système indique les zones de disponibilité Recommended).
Configuration d'un cluster existant
La méthode de configuration dépend de la version de VK (le composant ack-virtual-node).
Si votre version de VK est la v2.0.0.90-15deb126e-aliyun ou une version ultérieure, modifiez l'eci-profile.
Si votre version de VK est antérieure à la v2.0.0.90-15deb126e-aliyun, modifiez la variable d'environnement.
Eci-profile
Pour utiliser plusieurs zones de disponibilité, modifiez le ConfigMap nommé eci-profile et ajoutez les ID de vSwitch au champ data.vSwitchIds.
-
Modifiez l'eci-profile.
kubectl edit cm -n kube-system eci-profile -
Modifiez la valeur du champ
vSwitchIds.Ajoutez les ID de vSwitch séparés par des virgules.
data: enableClusterIp: "true" enableHybridMode: "false" enablePrivateZone: "false" resourceGroupId: "" securityGroupId: sg-2ze0b9o8pjjzts4h**** selectors: "" vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** vpcId: vpc-2zeghwzptn5zii0w7**** Enregistrez les modifications et quittez.
Environment variable
Nous vous recommandons de mettre à jour le composant VK vers la dernière version afin de bénéficier des nouvelles fonctionnalités.
Selon la méthode de déploiement de VK, vous pouvez mettre à jour la variable d'environnement ECI_VSWITCH du Deployment ou du StatefulSet pour utiliser plusieurs zones de disponibilité. L'exemple suivant utilise un Deployment :
-
Modifiez le Deployment.
kubectl -n kube-system edit deployment/virtual-node-controller -
Modifiez la variable d'environnement
ECI_VSWITCH.Ajoutez les ID de vSwitch à la valeur de la variable d'environnement
ECI_VSWITCH. Séparez les différents ID de vSwitch par une virgule.- name: ECI_VSWITCH value: vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k**** Enregistrez les modifications et quittez.
Configuration d'un pod ECI
Utilisez les annotations suivantes dans les métadonnées du pod pour spécifier plusieurs zones de disponibilité :
-
k8s.aliyun.com/eci-vswitch : spécifiez plusieurs vSwitch pour utiliser plusieurs zones de disponibilité.
RemarqueSi un pod ECI utilise l'annotation
k8s.aliyun.com/eci-vswitch, il ne prend pas en charge l'utilisation d'une StorageClass de typeWaitForFirstConsumerlors du montage d'un disque provisionné dynamiquement. -
k8s.aliyun.com/eci-schedule-strategy : configure la politique de planification pour plusieurs zones de disponibilité. Les valeurs valides sont
VSwitchOrderedetVSwitchRandom. Le tableau suivant décrit ces politiques.RemarqueSi vous ne spécifiez aucune politique de planification multi-zones de disponibilité, la politique
VSwitchRandomest utilisée par défaut.Politique de planification
Description
VSwitchOrdered (Séquentiel)
-
Si le pod ECI monte un disque, la zone de disponibilité du disque doit correspondre à celle du pod. Les zones de disponibilité ne répondant pas à cette exigence sont filtrées.
-
Le système tente de créer la ressource en essayant les zones de disponibilité spécifiées dans l'ordre. Si la première zone de disponibilité dispose d'un inventaire insuffisant, il essaie la seconde, et ainsi de suite, jusqu'à ce que la ressource soit créée avec succès.
VSwitchRandom (Optimisé pour l'inventaire)
-
Si le pod ECI monte un disque, la zone de disponibilité du disque doit correspondre à celle du pod. Les zones de disponibilité ne répondant pas à cette exigence sont filtrées.
-
Alibaba Cloud sélectionne un vSwitch approprié (et sa zone de disponibilité correspondante) selon une stratégie de planification optimale basée sur l'inventaire.
-
Si le pod ECI spécifie un type d'instance, le planificateur privilégie les zones de disponibilité disposant d'une instance réservée correspondante pour ce type.
-
Les zones de disponibilité offrant de meilleures performances de stockage sont prioritaires. Les anciennes zones de disponibilité suivantes ont une priorité de planification plus faible :
-
cn-beijing-e, cn-beijing-d
-
cn-shenzhen-a, cn-shenzhen-b, cn-shenzhen-c
-
cn-hangzhou-b, cn-hangzhou-e, cn-hangzhou-f
-
cn-shanghai-a, cn-shanghai-c
-
-
Les annotations doivent être ajoutées aux métadonnées dans le fichier de configuration du pod. Par exemple, lors de la création d'un Deployment, vous devez ajouter les annotations dans la section spec.template.metadata.
Les annotations liées à Elastic Container Instance ne s'appliquent qu'à la création d'un pod. L'ajout ou la modification de ces annotations sur un pod existant n'aura aucun effet.
Voici un exemple de configuration :
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-vswitch: "vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k****" # Specify multiple vSwitch IDs.
k8s.aliyun.com/eci-schedule-strategy: "VSwitchOrdered" # Configure the multi-availability zone scheduling policy.
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
Étapes suivantes
Si votre instance utilise une passerelle NAT pour se connecter à Internet, vous devez mettre à jour vos entrées SNAT après avoir spécifié plusieurs vSwitch.
Par exemple, si vos entrées SNAT existantes sont configurées au niveau du vSwitch, vous devez ajouter de nouvelles entrées pour les vSwitch nouvellement ajoutés. Cela garantit que les instances ECI lancées dans les nouveaux vSwitch peuvent accéder à Internet.