Chiamate API che generano errori di timeout

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza Documentazione di Apigee Edge.

Sintomo

Potresti osservare uno dei seguenti sintomi:

  1. Le applicazioni client ricevono errori di timeout in risposta alle chiamate API su Apigee hybrid.
  2. Durante l'applicazione della configurazione si verificano errori come Error from server (invalid) o The Job "apigee-resources-install" is invalid (overrides.yaml) al cluster durante l'installazione ibrida di Apigee.

Messaggi di errore

Potresti notare uno dei seguenti errori:

Risposta di errore alle chiamate API

Le richieste API su Apigee hybrid potrebbero non riuscire con il seguente messaggio di errore:

* Connection failed
* connect to 34.84.67.39 port 443 failed: Operation timed out
* Failed to connect to example.apis.com port 443: Operation timed out
* Closing connection 0
curl: (7) Failed to connect to example.apis.com port 443: Operation timed out

Errori osservati durante l'applicazione della configurazione (overrides.yaml) ai cluster

Durante l'applicazione della configurazione potresti notare uno dei seguenti errori (overrides.yaml file) ai cluster durante l'installazione:

Errore 1

apigeectl init -f overrides/overrides.yaml

...
...
Error from server (Invalid): error when applying patch:
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-10-1.4.6", Namespace: "istio-system"
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-11-1.4.6", Namespace: "istio-system"
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-14-1.4.6", Namespace: "istio-system"

Errore 2

apigeectl init -f overrides/overrides.yaml

...
...
The Job "apigee-resources-install" is invalid: spec.template: Invalid value:
core.PodTemplateSpec{ObjectMeta:v1.ObjectMeta{Name:"apigee-resources-install",
GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"",
Generation:0,

Cause possibili

Questi errori possono verificarsi se il servizio istio-ingressgateway è in una pending e impossibile eseguire l'associazione a un indirizzo IP esterno come mostrato di seguito:

kubectl get services -n istio-system
NAME                      TYPE         CLUSTER-IP   EXTERNAL-IP  PORT(S)             AGE
istio-ingressgateway      LoadBalancer 10.198.5.104 <pending>    15020:31927/TCP,    12h
                                                                 80:31381/TCP,
                                                                 443:31391/TCP,
                                                                 31400:31401/TCP,
                                                                 15443:32623/TCP

Le possibili cause per cui il servizio istio-ingressgateway si trova in un Lo stato pending è il seguente:

Causa Descrizione
Job in stato errato/in attesa nello spazio dei nomi istio-system I job incomplete/erroneous nello spazio dei nomi istio-system potrebbero il servizio istio-ingressgateway sarà sempre nello stato pending e non riesce ad associarsi a un indirizzo IP esterno.
Job apigee-resources-install in stato errato/in attesa nello spazio dei nomi apigee-system I job incomplete nello spazio dei nomi apigee-system potrebbero causare Il servizio istio- ingressgateway deve essere in stato pending per sempre e non è possibile per l'associazione a un indirizzo IP esterno.
Intervallo di indirizzi IP assegnato al bilanciatore del carico esterno Nel file istio-operator.yaml potrebbe essere configurato un intervallo di indirizzi IP errato causa l'attivazione dello stato pending per il servizio istio-ingressgateway e non è possibile associarsi a un indirizzo IP esterno durante l'installazione.

Causa: job nello spazio dei nomi del sistema istio in stato errato/in attesa

Diagnosi

  1. Controlla lo stato dei job nello spazio dei nomi istio-system utilizzando quanto segue :
    kubectl get jobs -n istio-system
    
  2. Lo stato dei job deve essere complete. Se lo stato dei job è nello stato erroneous/pending, questa è la causa del problema.

Risoluzione

  1. Se uno dei job è in stato pending o erroneous, elimina utilizzando il seguente comando:
    kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
    
  2. Esegui di nuovo l'installazione applicando il file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Causa: il job apigee-resources-install nello spazio dei nomi apigee-system potrebbe essere in stato errato

Diagnosi

  1. Controlla lo stato dei job nello spazio dei nomi apigee-system utilizzando seguente comando:
    kubectl get jobs -n apigee-system
    
  2. Lo stato dei job deve essere complete. Se lo stato dei job è in erroneous/pending, questa è la causa del problema. Le seguenti l'output di esempio mostra che il job apigee-resources-install è riuscito completata.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Risoluzione

  1. Se i job sono in stato pending o erroneous, eliminali utilizzando il seguente comando:
    kubectl -n apigee-system delete job JOB_NAME_FROM_STEP_1
    
  2. Esegui di nuovo l'installazione applicando il file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Causa: intervallo di indirizzi IP assegnato al bilanciatore del carico esterno non corretto

Diagnosi

  1. Controlla l'indirizzo IP configurato per il bilanciatore del carico nel file istio- operator.yaml. Ad esempio, il seguente snippet mostra la posizione nel istio-operator.yaml in cui è configurato l'indirizzo IP:
    -name: istio-ingressgateway
      enabled: true
      k8s:
        service:
          type: LoadBalancer
         loadBalancerIP: 10.195.24.23
    
  2. Il servizio istio-ingressgateway è configurato come bilanciatore del carico (indicato da ) nel file istio-operator.yaml. Durante l'installazione di ASM, un bilanciatore del carico viene creato con l'indirizzo IP configurato e viene cablato per comunicare con il servizio istio- ingressgateway. Di conseguenza, l'indirizzo IP configurato deve essere corretto riservate per il bilanciatore del carico.
  3. Coinvolgi il team responsabile della rete e verifica che l'indirizzo IP configurato per loadBalancerIP è la risposta corretta. In caso contrario, il servizio del bilanciatore del carico non sarà in grado di eseguire il collegamento all'indirizzo IP. Questo fa sì che il servizio istio-ingressgateway per rimanere nello stato pending per sempre.

Risoluzione

  1. Collabora con il tuo team di rete e configura l'indirizzo IP corretto nel file istio- operator.yaml.
  2. Esegui di nuovo installazione di ASM e applica il file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Raccogliere dati diagnostici

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni di diagnostica e contatta l'assistenza clienti Google Cloud:

  1. ID del progetto Google Cloud
  2. Il nome dell'organizzazione Apigee ibrida
  3. Nome cluster Kubernetes
  4. Nome del progetto Google Cloud se il cluster Kubernetes si trova in un progetto Google Cloud diverso
  5. Il file overrides.yaml
  6. Il file Istio-operator .yaml utilizzato durante l'installazione di ASM.
  7. Raccogli i log da ogni pod istio-ingressgateway nella Spazio dei nomi istio-system:
    kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
    
  8. Raccogli la descrizione di ogni pod nello spazio dei nomi istio-system:
    kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
    
  9. Raccogli l'elenco dei servizi nello spazio dei nomi istio-system:
    kubectl get svc -n istio-system