Chiamate API che generano errori di timeout

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Sintomo

Potresti osservare uno dei seguenti sintomi:

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

Messaggi di errore

Potresti osservare 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 osservare uno dei seguenti errori durante l'applicazione della configurazione (overrides.yaml file) 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 è in 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 in stato pending per sempre e non sia in grado 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, che fa sì che il servizio istio-ingressgateway entri in stato pending per sempre e non sia in grado di 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 è in uno stato erroneous/pending, questa è la causa del problema.

Risoluzione

  1. Se uno dei job è in stato pending o erroneous, eliminali 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:

    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 ripristinata in caso di errore.

    Installa il grafico:

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

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, il seguente snippet mostra la posizione nel istio-operator.yaml file 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. Coinvolgi il tuo team di rete e verifica che l'indirizzo IP configurato per loadBalancerIP sia corretto. Se non è corretto, il servizio del bilanciatore del carico non sarà in grado di eseguire il binding all'indirizzo IP. In questo modo, il servizio istio-ingressgateway rimane in 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 del gateway in entrata di Apigee e applica il overrides.yaml file:
    helm upgrade $ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE

Informazioni di diagnostica da raccogliere

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni di diagnostica e 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 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 istio-ingressgateway pod nello istio-system spazio dei nomi:
    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