View a markdown version of this page

Risoluzione dei problemi del 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 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 del gateway Amazon EKS Hybrid Nodes

Questa pagina fornisce indicazioni 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 Kubernetes.

Possibili cause:

  • Le voci della tabella delle rotte in VPC mancano o indicano l'ENI errato.

  • 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 dei percorsi in VPC. Verifica che i percorsi per i tuoi pod ibridi CIDR esistano e puntino all'ENI principale dell'istanza Active Gateway:

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

    Se mancano delle route, controlla i log del gateway per eventuali errori nella tabella delle rotte. Se le rotte puntano all'ENI errato, è 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 funzione e che uno disponga del 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. Controlla la configurazione di Cilium VTEP sui nodi ibridi. Verifica che la CiliumVTEPConfig risorsa esista e contenga l'IP del nodo leader:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

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

  4. Controlla e 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, disabilitalo. Per informazioni, 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. Le richieste di ammissione ai Webhook scadono o restituiscono errori di connessione.

Possibili cause:

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

  • La CiliumVTEPConfig risorsa è mancante o ha un indirizzo 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. Verifica che le voci della tabella di routing VPC siano corrette utilizzando i passaggi in. 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 leader corrente:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Se l'endpoint del tunnel è obsoleto (punta a un leader precedente), è possibile che il gateway non abbia completato la sequenza di configurazione del leader. Verificate la presenza di errori nei log del gateway durante l'upsert. CiliumVTEPConfig

Gli aggiornamenti della tabella di routing VPC non riescono

I log del gateway mostrano errori relativi alle operazioni della tabella di routing VPC e le route per i CIDR dei pod ibridi non vengono create o aggiornate.

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 routing 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 o alla configurazione dell'identità del pod del nodo gateway.

  2. Controlla gli ID della tabella delle rotte nella configurazione. Verifica che la variabile di ROUTE_TABLE_IDS ambiente contenga ID di tabella di routing validi 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 delle rotte esistano nel tuo VPC:

    aws ec2 describe-route-tables --route-table-ids ROUTE_TABLE_ID
  3. Controlla i log del gateway per verificare la presenza di errori nella tabella delle rotte. Cerca i messaggi di errore relativi alle operazioni sulla 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 delle tabelle 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 percorso potrebbe essere errato o il ruolo IAM potrebbe ec2:DescribeRouteTables mancare.

I gateway pod non si avviano o non sono integri

I gateway pod sono attivi o in CrashLoopBackOff Pending stato o 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 di antiaffinità impediscono la pianificazione.

Fasi diagnostiche:

  1. Controlla i registri dei pod. Visualizza i log del pod in cui si è verificato l'errore per identificare l'errore:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD
  2. Controlla le variabili di ambiente richieste. Il gateway richiede NODE_IPVPC_CIDR, ePOD_CIDRS. Se ne mancano alcuni, 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 programmato su un nodo.

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

  3. Controlla l'inoltro IP. Il gateway verifica che l'inoltro IP sia abilitato all'avvio e si chiude 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 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'etichetta. hybrid-gateway-node=true L'antiaffinità dei pod garantisce che ogni pod funzioni su un nodo separato. Se i pod lo sonoPending, verifica se ci sono 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 in funzione ma nessun pod acquisisce il contratto di locazione leader, oppure le transizioni di leadership avvengono frequentemente.

Possibili cause:

  • Mancano le autorizzazioni RBAC per gli oggetti Lease.

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

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

Fasi diagnostiche:

  1. Controllate 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 gli 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 update verbi per la leases risorsa nel gruppo di coordination.k8s.io API.

  3. Controlla i log dei pod per verificare la presenza di errori di leasing. Cerca gli errori relativi alle elezioni 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. Controllate le autorizzazioni RBAC.

    • Frequente Leadership ended seguito da Leader setup complete messaggi: il leader sta perdendo e riacquistando il contratto di locazione. Ciò può indicare un'instabilità di 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}'

    Assicurarsi --leader-election-renew-deadline che sia inferiore a--leader-election-lease-duration. Se la scadenza per il rinnovo supera la durata del contratto di locazione, il leader 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 è possibile 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 su nel 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 può creare l'interfaccia di rete VXLAN. Ciò si verifica in genere quando il pod non dispone della NET_ADMIN funzionalità necessaria.

Verifica che le specifiche di distribuzione siano incluse NET_ADMIN insecurityContext.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 routing VPC all'avvio.

Verifica che il ruolo IAM disponga dell'ec2:DescribeRouteTablesautorizzazione e che gli ID delle tabelle 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 le autorizzazioni ec2:CreateRoute e le ec2:ReplaceRoute autorizzazioni del ruolo IAM.

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 di NODE_IP ambiente o il --node-ip flag non sono impostati.

Verifica che i set di specifiche del pod NODE_IP status.hostIP utilizzino unfieldRef. Verifica che il diagramma di 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 percorso dopo l'analisi.

Controlla il valore routeTableIDs Helm per eventuali errori di formattazione. Gli ID delle tabelle delle rotte 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 dell'istanza 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 dispone di pod CIDR 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 gateway disponga delle autorizzazioni per gestire CiliumVTEPConfig le risorse.

Unable to create manager

Impossibile inizializzare il controller-runtime manager.

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

Failed to add gateway setup

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

Si tratta in genere di un errore interno. Controlla i log completi del pod per un contesto aggiuntivo 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. Verificate 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 dell'API Kubernetes o un conflitto di porte sugli indirizzi di associazione delle metriche o dell'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.