Chiamate API che generano errori di timeout

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

Sintomo

Potresti notare uno dei seguenti sintomi:

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

Messaggi di errore

Potresti riscontrare 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'installazione, potresti riscontrare uno dei seguenti errori durante l'applicazione della configurazione (file overrides.yaml) ai cluster:

Errore n. 1

helm upgrade operator apigee-operator/ \
  --install \
  --create-namespace \
  --namespace APIGEE_NAMESPACE \
  --atomic \
  -f OVERRIDES_FILE

...
...
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 n. 2

helm upgrade operator apigee-operator/ \
--install \
--create-namespace \
--namespace APIGEE_NAMESPACE \
--atomic \
-f OVERRIDES_FILE

...
...
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 si trova in uno stato pending e non è in grado di eseguire il binding 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 dello stato pending del servizio istio-ingressgateway sono le seguenti:

Causa Descrizione
Job in stato di errore/in attesa nello spazio dei nomi istio-system I job incomplete/erroneous nello spazio dei nomi istio-system potrebbero far sì che il servizio istio-ingressgateway rimanga per sempre nello stato pending e non sia in grado di eseguire il binding a un indirizzo IP esterno.
apigee-resources-install job in erroneous/pending state in apigee-system namespace I job incomplete nello spazio dei nomi apigee-system potrebbero causare lo stato pending del servizio istio- ingressgateway per sempre e l'impossibilità di eseguire il binding a un indirizzo IP esterno.
Intervallo di indirizzi IP errato assegnato al bilanciatore del carico esterno Nel file istio-operator.yaml potrebbe essere configurato un intervallo di indirizzi IP errato, il che fa sì che il servizio istio-ingressgateway entri nello stato pending per sempre e non riesca a eseguire il binding a un indirizzo IP esterno durante l'installazione.

Causa: job nello spazio dei nomi istio-system in stato di errore/in attesa

Diagnosi

  1. Controlla lo stato dei job nello spazio dei nomi istio-system utilizzando il seguente comando:
    kubectl get jobs -n istio-system
    
  2. Lo stato dei job deve essere complete. Se lo stato dei job è erroneous/pending, questo è il motivo del problema.

Risoluzione

  1. Se uno dei job si trova nello stato pending o erroneous, eliminalo utilizzando questo comando:
    kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
    
  2. Esegui di nuovo l'installazione applicando il file overrides.yaml:

    Aggiorna apigee-serving-cert utilizzando Helm:

    helm install operator apigee-operator/
    --namespace APIGEE_NAMESPACE \
    --atomic \
    -f OVERRIDES_FILE \
    --dry-run=server

    Assicurati di includere tutte le impostazioni mostrate, incluso --atomic in modo che l'azione venga annullata in caso di errore.

    Installa il grafico:

    helm upgrade operator apigee-operator/
    --namespace APIGEE_NAMESPACE \
    --atomic \
    -f OVERRIDES_FILE

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

Diagnosi

  1. Controlla lo stato dei job nello spazio dei nomi apigee-system utilizzando il comando seguente:
    kubectl get jobs -n apigee-system
    
  2. Lo stato dei job deve essere complete. Se lo stato dei job è erroneous/pending, questo è il motivo del problema. Il seguente output di esempio mostra che il job apigee-resources-install è stato completato correttamente.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Risoluzione

  1. Se i job si trovano nello 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 errato assegnato al bilanciatore del carico esterno

Diagnosi

  1. Controlla l'indirizzo IP configurato per il bilanciatore del carico nel file istio- operator.yaml. Ad esempio, lo snippet seguente mostra la posizione nel file 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 dal tipo) nel file istio-operator.yaml. Durante l'installazione di ASM, viene creato un bilanciatore del carico con l'indirizzo IP configurato e collegato per comunicare con il servizio istio- ingressgateway. Pertanto, l'indirizzo IP configurato deve essere corretto e riservato al bilanciatore del carico.
  3. Contatta il team di rete e verifica che l'indirizzo IP configurato per loadBalancerIP sia corretto. Se non è corretto, il servizio di bilanciamento del carico non potrà eseguire il binding all'indirizzo IP. In questo modo, il servizio istio-ingressgateway rimane 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 l'installazione per il gateway in entrata Apigee e applica il file overrides.yaml:
    helm upgrade $ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE

Deve raccogliere informazioni diagnostiche

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

  1. L'ID progetto Google Cloud
  2. Il nome dell'organizzazione Apigee hybrid
  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 nello 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