Ajoutez des vSwitches pour étendre le pool d'adresses IP des Pods lorsqu'un vSwitch est saturé dans un cluster Terway.
Cette opération peut s'avérer nécessaire si :
Un vSwitch est épuisé et les Pods restent bloqués à l'état
ContainerCreating.Vous effectuez une mise à l'échelle horizontale des nœuds et avez besoin de plus de capacité IP dans une zone spécifique.
Vous souhaitez répartir l'utilisation des adresses IP sur plusieurs vSwitches pour un meilleur équilibre.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK fonctionnant en mode réseau Terway
Un accès à la console Virtual Private Cloud (VPC) et à la console Container Service Management
Les permissions nécessaires pour modifier la configuration du module complémentaire Terway ou les ConfigMaps dans le namespace
kube-system
Limitations
Le nouveau vSwitch doit se trouver dans la même zone que vos nœuds. Si aucun vSwitch configuré ne couvre la zone d'un nœud, Terway utilise par défaut le vSwitch de l'ENI principale du nœud.
Vous ne pouvez pas modifier le vSwitch d'une ENI existante. Pour appliquer les nouveaux paramètres de vSwitch pour les Pods, ajoutez de nouveaux nœuds ou effectuez un redémarrage progressif.
Détecter l'épuisement des adresses IP du vSwitch
Lorsqu'un vSwitch n'a plus d'adresses IP disponibles, les Pods nécessitant une nouvelle ENI restent à l'état ContainerCreating.
Vérifiez les journaux Terway sur le nœud où le Pod est planifié :
kubectl logs --tail=100 -f terway-eniip-***** -n kube-system -c terway
Si la sortie contient l'erreur suivante, cela signifie que le vSwitch ne dispose d'aucune adresse IP disponible :
time="20**-03-17T07:03:40Z" level=warning msg="Assign private ip address failed: Aliyun API Error: RequestId: 2095E971-E473-4BA0-853F-0C41CF52651D Status Code: 403 Code: InvalidVSwitchId.IpNotEnough Message: The specified VSwitch \"vsw-***\" has not enough IpAddress., retrying"
Vérifiez également le nombre d'Available IP Addresses dans la console VPC sous vSwitch. Un compte de 0 confirme l'épuisement.
Prise d'effet des modifications
Terway applique la nouvelle configuration de vSwitch uniquement lors de la création d'une nouvelle ENI. Les ENI existantes ne sont pas affectées.
Nœuds existants : La nouvelle configuration ne s'applique pas tant que :
Une ENI sur le nœud est encore utilisée (Pods en cours d'exécution ou ENI trunk).
Le nœud a atteint sa limite d'ENI (définie par le type d'instance).
Nouveaux nœuds : Les nœuds ajoutés après la mise à jour utilisent immédiatement le nouveau vSwitch.
Modifier le vSwitch pour les Pods
Méthode via la console
Requiert Terway v1.4.4 ou ultérieur. Pour les versions antérieures, utilisez la méthode kubectl.
-
Créez un vSwitch dans la console Virtual Private Cloud (VPC) dans la même zone que les nœuds cibles. Consultez la rubrique Créer et gérer des vSwitches.
RemarqueLa densité des Pods augmente avec le temps. Utilisez un masque de sous-réseau de /19 ou inférieur (au moins 8 192 adresses IP par bloc CIDR) pour les vSwitches de Pods.
Connectez-vous à la console Container Service Management. 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 Add-ons.
-
Sur la page Add-ons, cliquez sur l'onglet Network. Recherchez Terway et cliquez sur Upgrade. Si l'option Upgrade n'est pas disponible, la version est déjà à jour. Après la mise à niveau, cliquez sur Configuration.
RemarqueLes modifications apportées aux modules complémentaires via d'autres méthodes seront écrasées lors du redéploiement.

Sur la page Parameters pour terway-eniip, sélectionnez le nouveau vSwitch dans PodVswitchId. Conservez les autres paramètres par défaut.
Cliquez sur OK.
Méthode kubectl
Utilisez cette méthode pour les versions de Terway antérieures à la v1.4.4, ou pour gérer la configuration via kubectl.
-
Créez un vSwitch dans la console VPC dans la même zone que les nœuds cibles. Consultez la rubrique Créer et gérer des vSwitches.
RemarqueLa densité des Pods augmente avec le temps. Utilisez un masque de sous-réseau de /19 ou inférieur (au moins 8 192 adresses IP par bloc CIDR) pour les vSwitches de Pods.
-
Modifiez la ConfigMap Terway pour ajouter le nouveau vSwitch :
kubectl edit cm eni-config -n kube-systemAjoutez l'ID du nouveau vSwitch au champ
vswitches. Cet exemple ajoutevsw-BBBaux côtés devsw-AAA:eni_conf: | { "version": "1", "max_pool_size": 25, "min_pool_size": 10, "vswitches": {"cn-shanghai-f":["vsw-AAA", "vsw-BBB"]}, "service_cidr": "172.21.0.0/20", "security_group": "sg-CCC" } -
Redémarrez les Pods Terway pour appliquer la nouvelle configuration. Les Pods sont recréés automatiquement.
-
Supprimez les Pods Terway dans le scénario ENI multi-IP :
kubectl delete -n kube-system pod -l app=terway-eniip -
Supprimez les Pods Terway dans le scénario ENI single-IP :
kubectl delete -n kube-system pod -l app=terway-eni
-
-
Vérifiez que tous les Pods Terway sont en cours d'exécution :
kubectl get pod -n kube-system | grep terway -
Créez un Pod de test et vérifiez qu'il obtient une adresse IP du nouveau vSwitch.
RemarqueLes nouveaux paramètres de vSwitch s'appliquent uniquement aux ENI nouvellement créées. Les ENI existantes conservent le vSwitch d'origine. Pour appliquer les modifications à tous les nœuds, effectuez un redémarrage progressif.
Stratégies de sélection de vSwitch
Lorsque plusieurs vSwitches existent dans une zone, Terway en sélectionne un pour chaque nouvelle ENI en fonction du paramètre vswitch_selection_policy. Consultez la rubrique Personnaliser les paramètres de configuration Terway.
Par défaut : ordered
Terway choisit le vSwitch disposant du plus grand nombre d'adresses IP disponibles, ce qui fonctionne bien dans la plupart des cas.
Cas limite : Lors d'une mise à l'échelle rapide, les demandes concurrentes de création d'ENI s'exécutent avant la mise à jour des comptes d'IP, de sorte que toutes peuvent choisir le même vSwitch, entraînant une distribution inégale.
Alternative : random
Terway choisit un vSwitch au hasard pour chaque nouvelle ENI, répartissant les adresses IP de manière plus uniforme et empêchant les goulots d'étranglement lors d'une mise à l'échelle explosive.
Isoler les vSwitches par pool de nœuds
Pour un contrôle strict, configurez les paramètres réseau au niveau du nœud afin d'associer un vSwitch de Pod unique à chaque pool de nœuds par zone, éliminant ainsi la contention lors de l'allocation des adresses IP.
FAQ
Les Pods ont perdu l'accès à Internet après l'ajout d'un vSwitch
Le nouveau vSwitch ne dispose pas de règle SNAT, donc ses Pods ne peuvent pas atteindre Internet. Configurez une règle SNAT pour le nouveau vSwitch à l'aide de NAT Gateway. Consultez la rubrique Activer l'accès à Internet pour votre cluster.
L'adresse IP d'un Pod se trouve en dehors du bloc CIDR du vSwitch configuré
Les adresses IP des Pods proviennent des ENI, et vous ne pouvez spécifier un vSwitch qu'à la création de l'ENI. Par la suite, tous les Pods sur l'ENI obtiennent des adresses IP de ce vSwitch, indépendamment des modifications de configuration ultérieures.
Cela se produit généralement lorsque :
Le nœud possède des ENI restantes d'un cluster précédent (supprimé sans vidange des Pods).
Vous avez mis à jour la configuration du vSwitch, mais les ENI existantes sur le nœud utilisent toujours l'ancien vSwitch.
Ajoutez de nouveaux nœuds ou redémarrez progressivement les nœuds existants pour créer de nouvelles ENI avec la configuration mise à jour.
L'utilisation des adresses IP est déséquilibrée entre les vSwitches
La stratégie ordered est à l'origine de ce problème lors d'une mise à l'échelle rapide. Les demandes concurrentes de création d'ENI choisissent toutes le même vSwitch (celui qui possède le plus d'adresses IP), l'épuisant tandis que les autres restent sous-utilisés.
Selon votre situation :
Pour les nœuds existants dont les vSwitches sont presque épuisés : Redémarrez progressivement certains nœuds pour libérer les ENI et rendre les adresses IP au vSwitch.
Pour les nouveaux nœuds ou les déploiements futurs : Modifiez le paramètre
vswitch_selection_policydeorderedàrandom. Cela distribue les ENI de manière aléatoire pour éviter les goulots d'étranglement. Consultez la rubrique Personnaliser les paramètres de configuration Terway.Pour une isolation stricte : Utilisez la configuration réseau au niveau du nœud pour attribuer exactement un vSwitch de Pod par zone et par pool de nœuds.