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 risolvere i problemi relativi al plugin CNI di Amazon VPC per Amazon EKS?
Desidero risolvere i problemi con il plugin CNI di Amazon VPC per Amazon Elastic Kubernetes Service (Amazon EKS).
Risoluzione
Amazon EKS richiede una corretta assegnazione dell'IP del pod affinché il plugin Container Network Interface (CNI) di Amazon Virtual Private Cloud (Amazon VPC) funzioni correttamente. Per risolvere i problemi relativi al plugin CNI del VPC, verifica le seguenti configurazioni:
- Autorizzazioni AWS Identity and Access Management (AWS IAM), inclusa AmazonEKS_CNI_Policy che si collega al ruolo IAM del nodo worker. Oppure le autorizzazioni IAM fornite tramite i ruoli IAM dell'account di servizio.
- Un endpoint del server API di Amazon EKS raggiungibile dal nodo worker.
- Accesso di rete agli endpoint API per Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) e Amazon Simple Storage Service (Amazon S3).
- Un numero sufficiente di indirizzi IP disponibili nelle sottoreti.
- Un kube-proxy che viene eseguito correttamente affinché il pod aws-node passi allo stato Pronto.
- Versione di kube-proxy e versione di CNI del VPC allineate alla versione del cluster Amazon EKS.
Completa i seguenti passaggi per risolvere i problemi relativi al plugin CNI del VPC.
Verifica che il pod aws-node sia nello stato In esecuzione
Il plugin CNI del VPC viene eseguito come un pod DaemonSet chiamato aws-node nel namespace kube-system. Un pod aws-node viene eseguito in ogni nodo worker del cluster.
-
Per verificare che il pod aws-node sia in esecuzione in ogni nodo worker, esegui questo comando:
kubectl get pods -n kube-system -l k8s-app=aws-node -o wideNota: sostituisci k8s-app=aws-node con il tuo selettore di etichette.
-
Se l'output del comando mostra che il numero RESTARTS è maggiore di 0, verifica lo stato dei container e dei messaggi di errore. Esegui questo comando describe:
kubectl describe pod aws-node-pod-name -n kube-systemNota: sostituisci aws-node-pod-name con il nome del pod del tuo nodo AWS.
-
Il pod aws-node potrebbe essere bloccato nello stato ContainerCreating and l'output del comando describe potrebbe mostrare il seguente messaggio di errore negli eventi:
"Error while dialing dial tcp 127.0.0.1:50051: connect: connection refused"
In tal caso, completa i passaggi in Perché il mio Amazon EKS Pod è bloccato nello stato ContainerCreating con l'errore "failed to create pod sandbox"?
-
Per visualizzare i log di aws-node pod, esegui questi comandi logs:
kubectl logs daemonset/aws-node -n kube-system-oppure-
kubectl logs aws-node-pod-name -n kube-systemNota: sostituisci aws-node-pod-name con il nome del tuo pod aws-node.
-
Controlla i log del plugin CNI del VPC nel nodo worker. Accedi al nodo worker, quindi vai alla directory /var/log/aws-routed-eni/. Individua i nomi di file plugin.log e ipamd.log, quindi controlla i log in questi file.
-
Verifica che i nodi worker possano raggiungere l'endpoint del server API del cluster Amazon EKS. Per accedere al nodo worker, utilizza SSH o Gestione sessione di AWS Systems Manager, quindi esegui questo comando:
curl -ivk https://eks-api-server-endpoint-urlNota: sostituisci eks-api-server-endpoint-url con l'URL dell'endpoint del tuo server API di Amazon EKS.
Verifica la versione di CNI del VPC
Verifica che la versione di CNI del VPC sia aggiornata e compatibile con la versione del cluster Amazon EKS.
Per verificare la versione corrente del plugin CNI del VPC, esegui questo comando:
kubectl describe daemonset aws-node -n kube-system | grep Image | cut -d "/" -f 2
Confronta la versione attuale con l'ultima versione disponibile in Amazon VPC CNI plugin releases (Release del plugin CNI di Amazon VPC) sul sito web GitHub.
Se la versione è obsoleta, aggiorna il plugin CNI del VPC alla versione più recente. Per ulteriori informazioni, consulta Aggiornamento di CNI di Amazon VPC (componente aggiuntivo Amazon EKS).
Verifica la configurazione e i requisiti di rete
Verifica che le configurazioni del gruppo di sicurezza e della sottorete del cluster Amazon EKS siano configurate correttamente.
Verifica le regole del gruppo di sicurezza
I gruppi di sicurezza devono consentire la connettività tra il piano di controllo (control-plane) e il piano dati.
Se utilizzi un gruppo di sicurezza personalizzato per i nodi worker, controlla le porte. Le regole minime del gruppo di nodi consentono l'ingresso della porta 10250 dal gruppo di sicurezza del piano di controllo (control-plane) e la porta 443 in uscita dal gruppo di sicurezza del piano di controllo (control-plane). Per ulteriori informazioni, consulta Sicurezza di rete.
Se la funzionalità del gruppo di sicurezza del pod è attiva, controlla se i limiti del gruppo di sicurezza sono stati raggiunti. Se raggiungi i limiti del gruppo di sicurezza per ogni interfaccia di rete elastica, la configurazione di rete del pod potrebbe non riuscire. Per ulteriori informazioni, consulta Quote di Amazon VPC.
Per ulteriori informazioni sulle regole dei gruppi di sicurezza richieste, consulta Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster.
Verifica la configurazione della sottorete
Per elencare gli indirizzi IP disponibili in ciascuna sottorete nell'ID di Amazon VPC, esegui questo comando:
aws ec2 describe-subnets —filters "Name=vpc-id,Values= VPCID" | jq '.Subnets[] | .SubnetId + "=" + "\(.AvailableIpAddressCount)"'
Verifica che le regole della lista di controllo degli accessi alla rete del nodo worker per le sottoreti consentano la comunicazione con il server API di Amazon EKS. Per ulteriori informazioni sulla configurazione delle ACL, consulta Controllo del traffico della sottorete con le liste di controllo degli accessi alla rete.
Verifica che le sottoreti del piano di controllo (control-plane) dispongano di un numero sufficiente di indirizzi IP liberi. Ogni sottorete del piano di controllo (control-plane) deve avere almeno sei indirizzi IP utilizzabili da Amazon EKS. Tuttavia, AWS consiglia che ogni sottorete abbia almeno 16 indirizzi IP. Il valore AvailableIpAddressCount deve essere maggiore di 0 per la sottorete in cui vengono avviati i pod. Per ulteriori informazioni, consulta Considerazioni e requisiti relativi alle sottoreti.
Verifica che il pod kube-proxy sia nello stato In esecuzione
Il pod kube-proxy deve essere in esecuzione per una corretta connettività di rete.
Per verificare che kube-proxy sia in esecuzione, utilizza questo comando:
kubectl get pods -n kube-system -l k8s-app=kube-proxy
Verifica che tutti i pod kube-proxy siano nello stato In esecuzione. Se kube-proxy non è in esecuzione, controlla nei log del pod se sono presenti errori:
kubectl logs -n kube-system POD-NAME
Nota: sostituisci POD-NAME con il nome del tuo pod kube-proxy.
Verifica il valore per WARM_PREFIX_TARGET
Se la delega del prefisso è attivata, controlla nel file di log se è presente il seguente messaggio di errore:
"Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set. Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variable"
Per risolvere l'errore, WARM_PREFIX_TARGET deve essere impostato su un valore maggiore o uguale a 1. Se la delega del prefisso è attivata e WARM_PREFIX_TARGET è impostato su 0, aggiorna il valore ad almeno 1:
kubectl set env daemonset aws-node -n kube-system WARM_PREFIX_TARGET=1
Controlla lo spazio riservato nella sottorete
Quando la delega del prefisso è attivata, verifica che le sottoreti dispongano di un numero sufficiente di intervalli CIDR di indirizzi IP /28. Tutti i 16 indirizzi IP devono essere contigui. Se la delega del prefisso è attivata, controlla nel file di log se è presente il seguente messaggio di errore:
"InsufficientCidrBlocks"
Per risolvere l'errore, crea una nuova sottorete da cui avviare i pod. Utilizza una prenotazione CIDR della sottorete di Amazon EC2 per riservare spazio all'interno di una sottorete con un prefisso assegnato. Per altre informazioni, consulta Prenotazioni del CIDR per la sottorete.
Verifica la configurazione delle reti personalizzate
Per determinare se per il cluster Amazon EKS sono attive le reti personalizzate, esegui questo comando:
kubectl describe pod -n kube-system $(kubectl get pods -n kube-system -l k8s-app=aws-node -o jsonpath='{.items[0].metadata.name}')
Se questa variabile è impostata su True, le reti personalizzate sono attive.
Se sono attive le reti personalizzate, le CRD ENIConfig devono essere configurate correttamente per soddisfare i requisiti di rete del cluster. Esegui questo comando per recuperare un elenco e ispezionare tutte le CRD ENIConfig:
kubectl get ENIConfig -A -o yaml
Per descrivere una specifica ENIConfig, esegui questo comando:
kubectl describe ENIConfig eni-config-name
Nota: sostituisci Eni-config-name con il nome della tua ENIConfig.
Verifica che ogni ENIConfig abbia la configurazione corretta della sottorete e del gruppo di sicurezza per ciascuna zona di disponibilità.
Verifica che la sottorete specificata in ENIConfig corrisponda alla zona di disponibilità dei nodi worker.
Per ulteriori informazioni sulle reti personalizzate, consulta Distribuzione dei pod in sottoreti alternative con reti personalizzate.
Configura la risoluzione dei conflitti per prevenire i rollback
Quando utilizzi il Kit di sviluppo per il cloud AWS (AWS CDK), AWS CloudFormation o eksctl con componenti aggiuntivi gestiti, definisci un metodo di risoluzione dei conflitti per prevenire i rollback.
I metodi corretti sono NONE (Nessuno), OVERWRITE (Sovrascrivi) o PRESERVE (Mantieni).
- Se non è definito alcun metodo, l'impostazione predefinita è NONE (Nessuno). Quando il sistema rileva conflitti, l'aggiornamento allo stack CloudFormation viene annullato e non vengono apportate modifiche.
- Per impostare la configurazione predefinita dei componenti aggiuntivi, utilizza il metodo di sovrascrittura. Devi utilizzare OVERWRITE (Sovrascrivi) quando passi da componenti aggiuntivi self-managed a componenti aggiuntivi gestiti da Amazon EKS.
- Utilizza il metodo PRESERVE (Mantieni) quando sfrutti configurazioni personalizzate, come WARM_IP_TARGET o reti personalizzate.
Per ulteriori informazioni sull'impostazione dei metodi di risoluzione dei conflitti, consulta Aggiornamento di un componente aggiuntivo (console AWS).
- Argomenti
- Containers
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 9 mesi fa