View a markdown version of this page

Risoluzione dei problemi relativi al gateway Amazon EKS Hybrid Nodes - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi relativi al gateway Amazon EKS Hybrid Nodes

Questa pagina fornisce una guida per la diagnosi e la risoluzione di problemi comuni con il gateway Amazon EKS Hybrid Nodes. Ogni sezione descrive un sintomo, le possibili cause, i passaggi diagnostici e le soluzioni. Per i dettagli operativi, vedereOperazioni del gateway Amazon EKS Hybrid Nodes.

Pod su nodi ibridi non raggiungibili da VPC

I pod in esecuzione su nodi ibridi non sono raggiungibili dalle risorse del VPC, come le istanze EC2, i sistemi di bilanciamento del carico o il piano di controllo di Kubernetes.

Possibili cause:

  • Le voci della tabella di routing del VPC sono mancanti o indirizzano all'ENI sbagliato.

  • Il gateway leader pod non è in esecuzione o non ha completato la configurazione.

  • Cilium VTEP non è abilitato o configurato sui nodi ibridi.

  • Source/destination il controllo è abilitato sull'istanza EC2 del gateway.

Fasi diagnostiche:

  1. Controlla le voci della tabella di routing del VPC. Verifica che i percorsi per i CIDR del tuo pod ibrido esistano e puntino all'ENI primario dell'istanza del gateway attivo:

    aws ec2 describe-route-tables \ --route-table-ids ROUTE_TABLE_ID \ --query "RouteTables[].Routes[?DestinationCidrBlock=='POD_CIDR']"

    Se mancano delle route, controlla i log del gateway per eventuali errori nella tabella delle route. Se le route puntano all'ENI sbagliato, è possibile che un failover non sia stato completato correttamente.

  2. Controlla lo stato del gateway pod e l'elezione del leader. Verifica che due gateway pod siano in esecuzione e uno detenga il contratto di locazione leader:

    kubectl get pods -n eks-hybrid-nodes-gateway kubectl get lease -n eks-hybrid-nodes-gateway

    Se nessun pod detiene il contratto di locazione, vedi. Problemi relativi alle elezioni dei leader

  3. Verifica la configurazione VTEP di Cilium sui nodi ibridi. Verifica che la CiliumVTEPConfig risorsa esista e contenga l'IP del nodo del leader:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    spec.endpoints[0].tunnelEndpointDeve corrispondere all'indirizzo IP del nodo del gateway leader. Se la risorsa è mancante o ha un IP obsoleto, è possibile che la configurazione del gateway non sia stata completata.

  4. Controlla source/destination controlla. source/destination Verifica che il controllo sia disabilitato sulle istanze EC2 del gateway:

    aws ec2 describe-instance-attribute \ --instance-id GATEWAY_INSTANCE_ID \ --attribute sourceDestCheck

    In caso sourceDestCheck affermativotrue, disattivatelo. Consulta Inizia a usare il gateway EKS Hybrid Nodes.

Le chiamate Webhook ai nodi ibridi hanno esito negativo

Il server API Kubernetes non può raggiungere gli endpoint webhook in esecuzione su nodi ibridi. L'ammissione di Webhook richiede un timeout o restituisce errori di connessione.

Possibili cause:

  • Il gateway non sta indirizzando il traffico dal piano di controllo ai pod ibridi.

  • La CiliumVTEPConfig risorsa è mancante o ha un IP dell'endpoint obsoleto.

Fasi diagnostiche:

  1. Verificare che il piano di controllo possa raggiungere l'IP del nodo gateway. Il piano di controllo invia il traffico alla tabella delle rotte VPC, che lo inoltra all'ENI del gateway. Conferma che le voci della tabella di routing VPC siano corrette utilizzando i passaggi indicati. Pod su nodi ibridi non raggiungibili da VPC

  2. Controlla la risorsa CiliumVTepConfig. Verifica che la risorsa esista e che tunnelEndpoint corrisponda all'IP del nodo del leader corrente:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Se l'endpoint del tunnel è obsoleto (rimanda a un leader precedente), il gateway potrebbe non aver completato la sequenza di configurazione del leader. Verificate la presenza di errori nei log del gateway durante l'upsertCiliumVTEPConfig.

Gli aggiornamenti della tabella di routing di VPC non riescono

I log del gateway mostrano errori relativi alle operazioni della tabella di routing VPC e i percorsi per i CIDR pod ibridi non vengono creati o aggiornati.

Possibili cause:

  • Il ruolo IAM del gateway non dispone delle autorizzazioni EC2 richieste.

  • Gli ID delle tabelle di routing nella configurazione non sono corretti o le tabelle di route non esistono.

  • Il gateway non può raggiungere l'endpoint dell'API EC2.

Fasi diagnostiche:

  1. Verifica le autorizzazioni IAM. Il gateway richiede le seguenti azioni IAM:

    • ec2:DescribeRouteTables

    • ec2:CreateRoute

    • ec2:ReplaceRoute

    • ec2:DescribeInstances

      Controlla il ruolo IAM associato al profilo di istanza del nodo del gateway o alla configurazione dell'identità del pod.

  2. Controlla gli ID della tabella di routing nella configurazione. Verifica che la variabile di ROUTE_TABLE_IDS ambiente contenga ID validi della tabella di routing nella distribuzione del gateway:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].env}' | jq .

    Verifica che gli ID della tabella di routing siano presenti nel tuo VPC:

    aws ec2 describe-route-tables --route-table-ids ROUTE_TABLE_ID
  3. Controlla i log del gateway per individuare eventuali errori nella tabella di routing. Cerca i messaggi di errore relativi alle operazioni della tabella di routing:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "route table"

    I messaggi di errore più comuni includono:

    • Failed to verify route table access— Il gateway non è in grado di descrivere la tabella delle rotte. Controlla le autorizzazioni IAM e gli ID della tabella di routing.

    • Failed to update route tables— Il gateway non può creare o sostituire percorsi. Controlla le autorizzazioni IAM.

    • failed to access route table— L'ID della tabella di routing potrebbe essere errato o il ruolo IAM non è valido. ec2:DescribeRouteTables

I gateway pod non si avviano o non sono integri

I gateway pod sono attivi o sono in CrashLoopBackOff Pending stato oppure l'endpoint di integrità restituisce un errore. Error

Possibili cause:

  • Le variabili di ambiente richieste (VPC_CIDR,POD_CIDRS,ROUTE_TABLE_IDS) non sono impostate.

  • L'inoltro IP non è abilitato sul nodo gateway.

  • L'etichetta del nodo o i vincoli anti-affinità impediscono la pianificazione.

Fasi diagnostiche:

  1. Controlla i log dei pod. Visualizza i log del pod in errore per identificare l'errore:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD
  2. Controlla le variabili di ambiente richieste. Il gateway richiedeNODE_IP,VPC_CIDR, ePOD_CIDRS. Se ne manca uno, il gateway esce immediatamente. Verifica le specifiche del pod:

    kubectl get pod -n eks-hybrid-nodes-gateway LEADER_POD -o jsonpath='{.spec.containers[0].env}' | jq .
    • NODE_IPviene impostato automaticamente dalle status.hostIP specifiche del pod. Se è vuoto, il pod potrebbe non essere ancora pianificato su un nodo.

    • VPC_CIDRe POD_CIDRS provengono dai valori di Helm. Verificate che siano impostati correttamente.

  3. Controlla l'inoltro IP. Il gateway verifica che l'inoltro IP sia abilitato all'avvio ed esce in caso contrario. Cerca il messaggio di errore IP forwarding is not enabled nei log del pod. Abilita l'inoltro IP sul nodo:

    # Check current setting cat /proc/sys/net/ipv4/ip_forward # Enable if not set sudo sysctl -w net.ipv4.ip_forward=1

    Per un'impostazione persistente, configura l'inoltro IP tramite il kubelet o aggiungi a. net.ipv4.ip_forward=1 /etc/sysctl.d/

  4. Controlla l'etichetta del nodo e i vincoli di pianificazione. I gateway pod richiedono nodi con l'hybrid-gateway-node=trueetichetta. L'antiaffinità dei pod assicura che ogni pod funzioni su un nodo separato. Se i pod lo sonoPending, verifica la presenza di problemi di pianificazione:

    kubectl describe pod -n eks-hybrid-nodes-gateway LEADER_POD

    Cerca gli eventi che indicano nodi insufficienti, etichette mancanti o conflitti di anti-affinità.

Problemi relativi alle elezioni dei leader

I gateway pod sono funzionanti ma nessun pod acquisisce il contratto di leadership, oppure le transizioni di leadership avvengono frequentemente.

Possibili cause:

  • Mancano le autorizzazioni RBAC per gli oggetti Lease.

  • La connettività di rete tra i gateway pod e il server API Kubernetes non è affidabile.

  • I parametri di elezione dei leader non sono configurati correttamente.

Fasi diagnostiche:

  1. Controlla l'oggetto Lease. Verifica l'esistenza del contratto di locazione e ispeziona il suo attuale titolare:

    kubectl get lease -n eks-hybrid-nodes-gateway hybrid-gateway-leader -o yaml

    Il spec.holderIdentity campo mostra il leader attuale. spec.renewTimeIndica quando il contratto di locazione è stato rinnovato l'ultima volta. Se renewTime è obsoleto, il leader potrebbe aver perso la connettività al server API.

  2. Controlla le autorizzazioni RBAC. L'account del servizio gateway necessita delle autorizzazioni per ottenere, creare e aggiornare oggetti Lease nel namespace del gateway. Verifica il ruolo e: RoleBinding

    kubectl get role -n eks-hybrid-nodes-gateway kubectl get rolebinding -n eks-hybrid-nodes-gateway

    Il ruolo deve includere getcreate, e i update verbi per la leases risorsa nel gruppo coordination.k8s.io API.

  3. Controlla i log dei pod per eventuali errori di leasing. Cerca gli errori di elezione dei leader nei log del pod:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "leader\|lease"

    I problemi comuni includono:

    • Failed to acquire lease— Il pod non può creare o aggiornare l'oggetto Lease. Controlla le autorizzazioni RBAC.

    • Frequenti Leadership ended seguiti da Leader setup complete messaggi: il leader perde e riacquista il contratto di locazione. Ciò può indicare l'instabilità della rete tra il pod e il server API. Considerate l'idea di aumentare--leader-election-lease-duration.

  4. Controlla i parametri di elezione dei leader. Verifica i valori configurati:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].args}'

    Assicurati che --leader-election-renew-deadline sia inferiore a--leader-election-lease-duration. Se il termine di rinnovo supera la durata del contratto di locazione, il conduttore perde il contratto di locazione prima che possa rinnovarlo. Per ulteriori informazioni, consulta Ottimizzazione delle elezioni dei leader.

Messaggi di errore comuni

La tabella seguente elenca i messaggi di errore che potresti visualizzare nei log dei pod del gateway e le relative risoluzioni.

Messaggio di errore Causa Risoluzione

IP forwarding is not enabled

Il parametro kernel non net.ipv4.ip_forward è impostato 1 sul nodo gateway.

Abilita l'inoltro IP tramite la configurazione kubelet o eseguendo. sysctl -w net.ipv4.ip_forward=1

Failed to setup VXLAN

Il gateway non è in grado di creare l'interfaccia di rete VXLAN. Ciò si verifica in genere quando il pod non è in grado di funzionare. NET_ADMIN

Verifica che le specifiche di distribuzione siano incluse NET_ADMIN in. securityContext.capabilities.add Verifica che il diagramma Helm sia distribuito correttamente.

Failed to verify route table access

Il gateway non può descrivere una o più tabelle di route VPC all'avvio.

Verifica che il ruolo IAM disponga dell'ec2:DescribeRouteTablesautorizzazione e che gli ID della tabella di routing nella configurazione siano corretti.

Failed to update route tables

Il gateway non può creare o sostituire percorsi nelle tabelle di routing VPC.

Verifica che il ruolo IAM disponga delle ec2:ReplaceRoute autorizzazioni ec2:CreateRoute e delle autorizzazioni.

Failed to create route table manager

Il gateway non può inizializzare il client AWS EC2 o recuperare l'ENI primario dell'istanza.

Verifica che il ruolo IAM disponga dell'ec2:DescribeInstancesautorizzazione e che il servizio di metadati dell'istanza (IMDS) sia accessibile.

NODE_IP is required

La variabile o il --node-ip flag di NODE_IP ambiente non è impostato.

Verifica che le specifiche del pod siano NODE_IP impostate status.hostIP utilizzando unfieldRef. Verifica che il diagramma Helm sia distribuito correttamente.

Invalid NODE_IP

Il valore fornito non NODE_IP è un indirizzo IP valido.

Controlla il valore della variabile di NODE_IP ambiente nelle specifiche del pod.

pod-cidrs and vpc-cidr are required

La variabile di VPC_CIDR ambiente POD_CIDRS or è vuota.

Imposta i valori podCIDRs e vpcCIDR Helm durante l'installazione.

No valid route table IDs provided

Il ROUTE_TABLE_IDS valore è stato impostato ma non contiene ID validi della tabella di routing dopo l'analisi.

Controlla il valore routeTableIDs Helm per eventuali errori di formattazione. Gli ID della tabella di routing devono essere separati da virgole (ad esempio,). rtb-abc123,rtb-def456

Failed to auto-detect AWS region

Il gateway non può recuperare la AWS regione dai metadati delle istanze EC2.

Verifica che il servizio di metadati dell'istanza (IMDS) sia accessibile. In alternativa, imposta il --aws-region flag o la variabile di AWS_REGION ambiente in modo esplicito.

Failed to auto-detect AWS instance ID

Il gateway non può recuperare l'ID dell'istanza dai metadati dell'istanza EC2.

Verifica che il servizio di metadati dell'istanza (IMDS) sia accessibile. In alternativa, imposta il --aws-instance-id flag o la variabile di AWS_INSTANCE_ID ambiente in modo esplicito.

CiliumNode has no internal IP

CiliumNodeL'oggetto di un nodo ibrido non ha un indirizzo IP interno nelle sue specifiche.

Verifica che il nodo ibrido sia registrato correttamente e che l'agente Cilium sia in esecuzione. Controlla la CiliumNode risorsa per il nodo.

CiliumNode <name> has no pod CIDRs allocated

CiliumNodeL'oggetto di un nodo ibrido non ha CIDR pod allocati da Cilium IPAM.

Verifica che Cilium IPAM sia configurato correttamente sul nodo ibrido. Controlla la CiliumNode risorsa per lo stato IPAM del nodo.

Failed to upsert CiliumVTEPConfig

Il gateway non può creare o aggiornare la risorsa CiliumVTEPConfig personalizzata.

Verifica che il CRD sia installato nel cluster e che l'account del servizio del gateway disponga delle autorizzazioni per gestire CiliumVTEPConfig le risorse.

Unable to create manager

L'inizializzazione del controller-runtime manager non è riuscita.

Controlla i log del pod per un contesto aggiuntivo. Le cause più comuni includono kubeconfig non valido o l'impossibilità di raggiungere il server API Kubernetes.

Failed to add gateway setup

Il runnable eletto dal leader non può essere registrato con il controller manager.

Si tratta in genere di un errore interno. Controlla i log completi del pod per ulteriori informazioni e segnala il problema nel GitHub repository.

Unable to create Node controller

Il CiliumNode riconciliatore non può essere registrato presso il controller manager.

Controlla i log del pod per un contesto aggiuntivo. Verifica che il CiliumNode CRD sia installato nel cluster.

Problem running manager

Il controller manager è uscito in modo imprevisto.

Controlla nei log del pod l'errore sottostante. Le cause più comuni includono la perdita di connettività al server API Kubernetes o un conflitto di porte nelle metriche o negli indirizzi di bind di health probe.

failed to access route table <id>

Il gateway non è in grado di descrivere una tabella di routing VPC specifica durante il controllo di verifica dell'avvio.

Verifica che il ruolo IAM disponga ec2:DescribeRouteTables dell'autorizzazione e che l'ID della tabella di routing sia corretto. La tabella di routing deve esistere nella stessa regione dell'istanza del gateway.