Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso scegliere sottoreti di indirizzi IP specifiche per i pod nel mio cluster Amazon EKS?
Desidero utilizzare sottoreti o intervalli di indirizzi IP personalizzati per i miei pod in Amazon Elastic Kubernetes Service (Amazon EKS).
Risoluzione
Per allocare ai pod indirizzi IP da sottoreti diverse rispetto alle sottoreti dei nodi worker, utilizza una rete personalizzata.
Attiva una rete personalizzata
Prima di configurare una rete personalizzata, rivedi i seguenti comportamenti predefiniti:
- I nodi e i pod utilizzano indirizzi IP degli stessi intervalli CIDR nel cluster Amazon Virtual Private Cloud (VPC). Per aggiungere altri intervalli CIDR di indirizzi IP ad Amazon VPC, consulta Come posso utilizzare più intervalli CIDR con Amazon EKS?
- Amazon EKS assegna indirizzi IP ai pod dalla sottorete del nodo worker.
- Non puoi controllare la sottorete che assegna gli indirizzi IP ai pod.
- Quando nella sottorete di un nodo non è disponibile alcun indirizzo IP, i nuovi pod non vengono avviati, anche se altre sottoreti hanno indirizzi disponibili.
- Tutto il traffico dai pods agli indirizzi IP esterni ad Amazon VPC per il blocco CIDR del cluster Amazon VPC utilizza l'interfaccia principale e l'indirizzo IP del nodo. Il traffico utilizza gruppi di sicurezza e una sottorete dall'interfaccia di rete elastica primaria del nodo. Non utilizza la sottorete e i gruppi di sicurezza definiti negli oggetti ENIConfig.
- Se utilizzi gruppi di sicurezza per i pod, i pod utilizzano il gruppo di sicurezza specificato in SecurityGroupPolicy. I pod non utilizzano il gruppo di sicurezza specificato negli oggetti ENIConfig.
Nota: per ulteriori informazioni sull'indirizzamento del traffico dei pod, consulta Abilita l'accesso a Internet in uscita per i pod.
Attiva una rete personalizzata nel plugin Amazon VPC Container Network Interface (Amazon VPC CNI) per Kubernetes. Utilizza la versione del plugin Amazon VPC CNI che corrisponde alla versione di Kubernetes. Per accedere al plugin, consulta amazon-vpc-cni-k8s sul sito web GitHub.
Esegui questo comando per verificare la versione in Amazon VPC per il cluster Amazon EKS:
kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
Se non hai la versione corretta, aggiorna il plugin Amazon VPC CNI.
Esegui questo comando per attivare la rete personalizzata:
kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true
VPC CNI v1.18 e versioni successive supportano il rilevamento automatico delle sottoreti e l'allocazione dinamica degli indirizzi in base all'utilizzo degli indirizzi IP nelle sottoreti disponibili. Per ulteriori informazioni, consulta Amazon VPC CNI introduces Enhanced Subnet Discovery (Amazon VPC CNI introduce il rilevamento avanzato delle sottoreti).
Puoi anche utilizzare il plugin Amazon VPC CNI per effettuare le seguenti operazioni:
- Specificare le sottoreti Amazon VPC da utilizzare per i pod.
- Definire gruppi di sicurezza separati per i Pod.
Crea oggetti EniConfig
Prima di creare oggetti EniConfig, rivedi i seguenti comportamenti predefiniti:
- Ogni oggetto ENIConfig definisce una sottorete e un elenco di gruppi di sicurezza.
- Puoi assegnare un solo oggetto ENIConfig a ciascun nodo. Tuttavia, puoi assegnare lo stesso oggetto ENIConfig a più nodi.
- Quando assegni un oggetto ENIConfig a un nodo, tutti i pod pianificati per il nodo utilizzano la sottorete e i gruppi di sicurezza nell'oggetto ENIConfig.
- Il nome dell'oggetto ENIConfig deve essere il nome della zona di disponibilità.
Esegui questo comando per creare gli oggetti ENIConfig:
cat EOF | kubectl apply -f - apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: example-availability-zone spec: securityGroups: - example-security-group-id subnet: example-subnet-id EOF
Nota: sostituisci example-availability-zone con la tua zona di disponibilità. Sostituisci example-security-group-id con l'ID del tuo gruppo di sicurezza. Sostituisci example-subnet-id con l'ID della tua sottorete.
Assegna oggetti ENIConfig
Per assegnare un oggetto ENIConfig con una zona di disponibilità, assegna automaticamente gli oggetti ENIConfig ai nodi. Per associare più oggetti ENIConfig alla stessa zona di disponibilità, assegna manualmente gli oggettiENIConfig ai nodi.
Assegna automaticamente gli oggetti ENIConfig
Esegui questo comando:
kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=topology.kubernetes.io/zone
Associa manualmente gli oggetti ENIConfig
Importante: assicurati che il nodo e la sottorete nell'oggetto ENIConfig associato si trovino nella stessa zona di disponibilità.
Esegui questo comando:
kubectl annotate node example-node-name k8s.amazonaws.com/eniConfig=example-availability-zone
Nota: sostituisci example-node-name con l'identificatore completo del tuo nodo. Sostituisci example-availability-zone con il nome della zona di disponibilità che hai utilizzato quando hai creato l'oggetto ENIConfig.
Avvia nuovi nodi
Per allocare interfacce di rete secondarie e indirizzi IP dalle sottoreti ENIConfig, devi avviare nuovi nodi. I nodi esistenti continuano a utilizzare la loro configurazione di rete originale finché non vengono sostituiti.
Completa i seguenti passaggi:
- Verifica se utilizzi l'ID di un'AMI (Amazon Machine Image) personalizzata con il gruppo di nodi gestiti o self-managed.
- Se utilizzi l'ID di un'AMI personalizzata, determina il numero massimo di pod per il valore di ogni nodo. Devi aggiungere il parametro**--cni-custom-networking-enabled** quando esegui lo script max-pods-calculator.sh.
Nota: se non utilizzi un modello di avvio o l'ID di un'AMI, Amazon EKS imposta automaticamente il numero massimo di pod. - Aggiorna lo script dei dati utente nei nuovi nodi per utilizzare il numero massimo di pod in base al sistema operativo in uso:
Amazon Linux 2, Bottlerocket, Ubuntu 20.04 e versioni successive, Windows Server 2019 e versioni successive#!/bin/bash /etc/eks/bootstrap.sh example-cluster-name --use-max-pods false --kubelet-extra-args '--max-pods=example-max-pods'
Nota: nei comandi precedenti, sostituisci example-cluster-name con il nome del tuo cluster EKS. Sostituisci example-max-pods con il valore massimo di pod per nodo.--user-data '#!/bin/bash /etc/eks/nodeadm init \ --container-runtime containerd \ --cluster-name example-cluster-name \ --max-pods example-max-pods'
Per ulteriori informazioni su bootstrap, consulta awslabs/amazon-eks-ami sul sito web GitHub. Per informazioni su nodeadm, consulta Aggiornamento da Amazon Linux 2 ad Amazon Linux 2023.
Amazon Linux 2023 (AL2023) - Ricrea i pod per utilizzare la nuova configurazione di rete personalizzata.
- Argomenti
- Containers
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 3 anni fa
AWS UFFICIALEAggiornata 2 mesi fa