I problemi di bilanciamento del carico in Google Kubernetes Engine (GKE) possono causare interruzioni del servizio, ad esempio errori HTTP 502, o impedire l'accesso alle applicazioni.
Utilizza questo documento per scoprire come risolvere i problemi 502 dell'Ingress esterno e come utilizzare i log del bilanciatore del carico e gli strumenti di diagnostica, come check-gke-ingress, per identificare i problemi.
Queste informazioni sono importanti per gli amministratori e gli operatori della piattaforma e per gli sviluppatori di applicazioni che configurano e gestiscono servizi con bilanciamento del carico in GKE. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Cloud de Confiance by S3NS , consulta Ruoli e attività comuni degli utenti GKE.
Ingress esterno genera errori HTTP 502
Utilizza le seguenti indicazioni per risolvere i problemi relativi agli errori HTTP 502 con le risorse Ingress esterne:
- Abilita i log per ogni servizio di backend associato a ogni servizio GKE a cui fa riferimento Ingress.
- Utilizza i dettagli dello stato per identificare le cause delle risposte HTTP 502. I dettagli dello stato che indicano che la risposta HTTP 502 ha avuto origine dal backend richiedono la risoluzione dei problemi all'interno dei pod di pubblicazione, non del bilanciatore del carico.
Gruppi di istanze non gestite
Potresti riscontrare errori HTTP 502 con le risorse Ingress esterne se Ingress esterno utilizza backend di gruppi di istanze non gestiti. Questo problema si verifica quando sono soddisfatte tutte le seguenti condizioni:
- Il cluster ha un numero totale elevato di nodi in tutti i node pool.
- I pod di pubblicazione per uno o più servizi a cui fa riferimento l'ingresso si trovano solo su alcuni nodi.
- I servizi a cui fa riferimento l'oggetto Ingress utilizzano
externalTrafficPolicy: Local.
Per determinare se il tuo Ingress esterno utilizza backend di gruppi di istanze non gestite, svolgi i seguenti passaggi:
Vai alla pagina Ingress nella console Cloud de Confiance .
Fai clic sul nome dell'ingresso esterno.
Fai clic sul nome del bilanciatore del carico. Viene visualizzata la pagina Dettagli bilanciamento del carico.
Controlla la tabella nella sezione Servizi di backend per determinare se il tuo ingress esterno utilizza NEG o gruppi di istanze.
Per risolvere il problema, utilizza una delle seguenti soluzioni:
- Utilizza un cluster nativo di VPC.
- Utilizza
externalTrafficPolicy: Clusterper ogni servizio a cui fa riferimento l'ingresso esterno. Questa soluzione comporta la perdita dell'indirizzo IP client originale nelle origini del pacchetto. - Utilizza l'annotazione
node.kubernetes.io/exclude-from-external-load-balancers=true. Aggiungi l'annotazione ai nodi o ai node pool che non eseguono alcun pod di servizio per qualsiasi servizio a cui fa riferimento qualsiasi ingresso esterno o servizioLoadBalancernel cluster.
Configurazione del logging del bilanciatore del carico L4
Questa sezione fornisce informazioni sulla risoluzione dei problemi se hai attivato il logging per il bilanciatore del carico di rete passthrough esterno o il bilanciatore del carico di rete passthrough interno.
Monitorare lo stato della configurazione del logging
Il controller GKE L4LB fornisce un feedback sullo stato di riconciliazione del logging tramite il tipo status.conditions del servizio. Puoi controllare questo stato eseguendo il comando seguente:
kubectl get svc SERVICE_NAME -o yaml
Sostituisci quanto segue:
SERVICE_NAME: il nome del cluster.
Nell'output, cerca il tipo di condizione LoggingConfigManaged. La tabella seguente descrive i possibili motivi della condizione:
| Stato della condizione | Motivo | Descrizione |
|---|---|---|
| Vero | Riconciliato | Il controller applica attivamente la configurazione del logging definita nel CRD L4LBConfig. |
| Falso | Non gestita | La sezione logging non è presente nel CRD L4LBConfig o l'annotazione è stata rimossa. Il
controller ha interrotto la gestione e ha lasciato il servizio di backend nel suo ultimo
stato noto. |
| Falso | Mancante | Impossibile trovare la risorsa L4LBConfig a cui viene fatto riferimento nell'annotazione del servizio. |
| Falso | Non valida | La risorsa L4LBConfig non ha superato la
convalida incrociata del parametro optionalFields. |
| Falso | Errore | Si è verificato un errore durante la riconciliazione del servizio di backend. |
Comprendere il comportamento in modalità coast
Se l'annotazione networking.gke.io/l4lb-config viene rimossa dal manifest del servizio o la risorsa L4LBConfig a cui viene fatto riferimento viene eliminata, la configurazione entra nello stato Coast.
In questo stato, il controller GKE interrompe la gestione delle impostazioni di logging, ma non ripristina le impostazioni predefinite del servizio di backend Cloud de Confiance by S3NS . Il servizio di backend rimane invece nel suo ultimo stato noto. Un evento di avviso viene in genere emesso per comunicarti che Kubernetes non controlla più la configurazione.
Utilizzare i log del bilanciatore del carico per risolvere i problemi
Puoi utilizzare i log del bilanciatore del carico di rete passthrough interno e i log del bilanciatore del carico di rete passthrough esterno per risolvere i problemi relativi ai bilanciatori del carico e correlare il traffico dai bilanciatori del carico alle risorse GKE.
I log vengono aggregati per connessione ed esportati quasi in tempo reale. I log vengono generati per ogni nodo GKE coinvolto nel percorso dei dati di un servizio LoadBalancer, sia per il traffico in entrata che in uscita. Le voci di log includono campi aggiuntivi per le risorse GKE, ad esempio:
- Nome del cluster
- Località del cluster
- Nome servizio
- Spazio dei nomi del servizio
- Nome pod
- Spazio dei nomi pod
Utilizzare gli strumenti di diagnostica per risolvere i problemi
Lo strumento di diagnostica check-gke-ingress ispeziona le risorse Ingress per individuare configurazioni errate comuni. Puoi utilizzare lo strumento check-gke-ingress nei seguenti modi:
- Esegui lo
strumento a riga di comando
gcpdiagsul cluster. I risultati dell'ingresso vengono visualizzati nella sezionegke/ERR/2023_004della regola di controllo. - Utilizza lo strumento
check-gke-ingressda solo o come plug-in kubectl seguendo le istruzioni riportate in check-gke-ingress.