Attribuez une ENI exclusive à chaque pod pour bénéficier d'un débit élevé, d'une latence ultra-faible et de la prise en charge du multicast.
Limites
Les instances ECS nécessitent Terway v1.11.0 ou une version ultérieure ; les instances Lingjun nécessitent la v1.14.3 ou une version ultérieure. Consultez Terway pour mettre à niveau.
Lorsque la double pile est activée, l'ajout de nœuds suit les mêmes restrictions de type d'instance que le mode ENI partagé : le nombre d'adresses IPv4 (principales et secondaires) doit être égal au nombre d'adresses IPv6. Reportez-vous à la rubrique famille d'instances pour connaître les nombres pris en charge.
Les instances Lingjun ne prennent pas en charge la double pile.
Les pods dotés d'une ENI exclusive ne prennent pas en charge l'accélération réseau eBPF ni Kubernetes NetworkPolicy.
Le mode ENI exclusif requiert de nouveaux nœuds. Les nœuds existants ajoutés au pool n'utilisent pas leurs ENI attachées.
Le mode ENI exclusif s'applique uniquement aux nouveaux nœuds. Il est impossible de basculer entre les modes ENI partagé et exclusif après la création du pool de nœuds.
Il est impossible de configurer une chaîne CNI personnalisée.
Configuration du réseau de conteneurs au niveau du pool de nœuds
Terway propose l'ENI exclusive en tant que mode de mise en réseau au niveau du pool de nœuds. Pour plus d'informations, consultez la rubrique Mode ENI partagé et mode ENI exclusif.
1. Planifier le pool de nœuds ENI exclusif
En mode ENI exclusif, chaque nœud prend en charge moins de pods et nécessite plus de six ENI. Consultez la rubrique famille d'instances pour connaître le nombre d'ENI par type d'instance.
Planifiez les vSwitches et les groupes de sécurité pour vos pods.
Terway prend en charge les méthodes de configuration suivantes, classées par ordre de priorité décroissante :
Configurer une adresse IP fixe, un vSwitch indépendant et un groupe de sécurité pour un pod
-
Configuration par défaut du cluster : Personnaliser les paramètres de configuration Terway
ImportantIncluez des vSwitches pour chaque zone de nœud. À défaut, la création de pods échouera.
Les pools de nœuds Lingjun ne prennent pas en charge la configuration d'une adresse IP fixe, d'un vSwitch indépendant et d'un groupe de sécurité pour un pod.
2. Créer un pool de nœuds ENI exclusif et vérifier la configuration
-
Suivez les instructions de la rubrique Créer et gérer des pools de nœuds pour créer un pool de nœuds, et ajoutez le libellé
k8s.aliyun.com/exclusive-mode-eni-type: eniOnlyaux nœuds.Ajoutez également une taint pour empêcher la planification des pods ne nécessitant pas d'ENI exclusive dans ce pool.
ImportantAjoutez le libellé lors de la création du pool de nœuds. Les nœuds existants ne peuvent pas passer en mode ENI exclusif. Si le libellé est incorrect, supprimez et recréez le pool de nœuds.
-
Interrogez les ressources allouables sur un nœud pour vérifier que le mode ENI exclusif est activé :
kubectl describe node <node-name>Sortie attendue :
Capacity: aliyun/eni: 7 cpu: 16 ephemeral-storage: 123460788Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 31555380Ki pods: 213 Allocatable: aliyun/eni: 7 cpu: 15890m ephemeral-storage: 113781462033 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 28587828Ki pods: 213Le champ
aliyun/eniconfirme que le mode ENI exclusif est activé.
3. Planifier les pods dans le pool de nœuds ENI exclusif
Utilisez NodeAffinity ou une ressource personnalisée PodNetworking pour planifier les pods dans le pool de nœuds ENI exclusif.
NodeAffinity : ne prend pas en charge les configurations au niveau du pod telles que l'IP fixe, le vSwitch indépendant ou le groupe de sécurité.
-
PodNetworking : prend en charge les configurations de vSwitch, de groupe de sécurité et d'IP fixe au niveau du pod. Consultez la rubrique Configurer une adresse IP fixe, un vSwitch indépendant et un groupe de sécurité pour un pod.
Définissez
eniTypesurENIdans le champeniOptionspour planifier les pods dans le pool de nœuds ENI exclusif. Exemple :apiVersion: network.alibabacloud.com/v1beta1 kind: PodNetworking metadata: name: enionly spec: eniOptions: eniType: ENI allocationType: type: Elastic selector: podSelector: matchLabels: network: enionly
FAQ
Vérification de l'ENI exclusive d'un pod
Terway crée automatiquement une ressource PodENI portant le même nom et se trouvant dans le même namespace que le pod pour enregistrer sa configuration réseau.
Interrogez la ressource :
kubectl get podeni nginx-9d557694f-rcdzs -oyaml
Sortie attendue :
apiVersion: network.alibabacloud.com/v1beta1
kind: PodENI
metadata:
annotations:
k8s.aliyun.com/pod-uid: 05590939-fc51-47ab-a204-3dd187233bca
creationTimestamp: "2024-09-13T08:09:27Z"
finalizers:
- pod-eni
generation: 1
labels:
k8s.aliyun.com/node: cn-hangzhou.172.XX.XX.25
name: example-9d557694f-rcdzs
namespace: default
resourceVersion: "1131123"
spec:
allocations:
- allocationType:
type: Elastic
eni:
attachmentOptions: {}
id: eni-xxxx
mac: 00:16:3e:37:xx:xx
securityGroupIDs:
- sg-xxxx
vSwitchID: vsw-xxxx
zone: cn-hangzhou-j
ipv4: 172.16.0.30
ipv4CIDR: 172.16.0.0/24
ipv6: 2408:4005:xxxx:xxxx:xxxx:xxxx:xxxx:9ad4
ipv6CIDR: 2408:4005:39c:xxxx::/64
zone: cn-hangzhou-j
status:
eniInfos:
eni-xxxx:
id: eni-xxxx
status: Bind
type: Secondary
instanceID: i-xxxx
phase: Bind