API-Aufrufe schlagen mit Zeitüberschreitungsfehlern fehl

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

Symptom

Möglicherweise tritt eines der folgenden Symptome auf:

  1. Die Clientanwendungen erhalten Zeitüberschreitungsfehler als Antwort auf API-Aufrufe in Apigee Hybrid.
  2. Sie beobachten Fehler wie Error from server (invalid) oder The Job "apigee-resources-install" is invalid , wenn Sie die Konfiguration (overrides.yaml) während der Apigee Hybrid-Installation auf den Cluster anwenden.

Fehlermeldungen

Möglicherweise tritt einer der folgenden Fehler auf:

Fehlerantwort auf API-Aufrufe

Die API-Anfragen in Apigee Hybrid können mit der folgenden Fehlermeldung fehlschlagen:

* 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

Beim Anwenden der Konfiguration (overrides.yaml) auf Cluster beobachtete Fehler

Während der Installation kann einer der folgenden Fehler auftreten, wenn Sie die Konfiguration (Datei overrides.yaml) auf Cluster anwenden:

Fehler Nr. 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"

Fehler Nr. 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,

Mögliche Ursachen

Diese Fehler können auftreten, wenn der Dienst istio-ingressgateway den Status pending hat und nicht an eine externe IP-Adresse gebunden werden kann, wie unten dargestellt:

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

Mögliche Gründe dafür, dass sich der istio-ingressgateway-Dienst im Status pending befindet:

Ursache Beschreibung
Jobs im Status "fehlerhaft"/"ausstehend" im istio-system-Namespace Die incomplete/erroneous-Jobs im istio-system-Namespace können dazu führen, dass sich der istio-ingressgateway-Dienst für immer im Status pending befindet und nicht an eine externe IP-Adresse gebunden werden kann.
apigee-resources-install-Job im Status "fehlerhaft"/"ausstehend" im apigee-system-Namespace Die incomplete-Jobs im apigee-system-Namespace können dazu führen, dass sich der istio- ingressgateway-Dienst für immer im Status pending befindet und nicht an eine externe IP-Adresse gebunden werden kann.
Dem externen Load-Balancer wurde ein falscher IP-Adressbereich zugewiesen In der Datei istio-operator.yaml ist möglicherweise ein falscher IP-Adressbereich konfiguriert, sodass der istio-ingressgateway-Dienst für immer den Status pending erhält und sich während der Installation nicht an eine externe IP-Adresse binden kann.

Ursache: Jobs im istio-system-Namespace im Status "fehlerhaft"/"ausstehend"

Diagnose

  1. Prüfen Sie den Status der Jobs im istio-system-Namespace mit dem folgenden Befehl:
    kubectl get jobs -n istio-system
    
  2. Der Status der Jobs muss complete lauten. Wenn der Status der Jobs erroneous/pending lautet, ist dies die Ursache des Problems.

Lösung

  1. Wenn einer der Jobs den Status pending oder erroneous hat, löschen Sie ihn mit dem folgenden Befehl:
    kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
    
  2. Führen Sie die Installation noch einmal aus, indem Sie die Datei overrides.yaml anwenden:
    apigeectl apply -f overrides.yaml
    

Ursache: Der apigee-resources-install-Job im apigee-system-Namespace kann sich im Status "fehlerhaft" befinden

Diagnose

  1. Prüfen Sie den Status der Jobs im apigee-system-Namespace mit dem folgenden Befehl:
    kubectl get jobs -n apigee-system
    
  2. Der Status der Jobs muss complete lauten. Wenn der Status der Jobs erroneous/pending lautet, ist dies die Ursache des Problems. Die folgende Beispielausgabe zeigt, dass der Job apigee-resources-install erfolgreich abgeschlossen wurde.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Lösung

  1. Wenn die Jobs den Status pending oder erroneous haben, löschen Sie sie mit dem folgenden Befehl:
    kubectl -n apigee-system delete job JOB_NAME_FROM_STEP_1
    
  2. Führen Sie die Installation noch einmal aus, indem Sie die Datei overrides.yaml anwenden:
    apigeectl apply -f overrides.yaml
    

Ursache: Dem externen Load-Balancer wurde ein falscher IP-Adressbereich zugewiesen

Diagnose

  1. Prüfen Sie die für den Load-Balancer konfigurierte IP-Adresse in der Datei istio- operator.yaml. Das folgende Snippet zeigt beispielsweise die Stelle in der Datei istio-operator.yaml, an der die IP-Adresse konfiguriert ist:
    -name: istio-ingressgateway
      enabled: true
      k8s:
        service:
          type: LoadBalancer
         loadBalancerIP: 10.195.24.23
  2. Der Dienst istio-ingressgateway wird in der Datei istio-operator.yaml als Load-Balancer konfiguriert (dargestellt durch den Typ). Während der ASM-Installation wird ein Load-Balancer mit der konfigurierten IP-Adresse erstellt und zur Kommunikation mit dem Dienst istio- ingressgateway verbunden. Daher sollte die konfigurierte IP-Adresse korrekt und für den Load-Balancer reserviert sein.
  3. Wenden Sie sich an Ihr Netzwerkteam und prüfen Sie, ob die für loadBalancerIP konfigurierte IP-Adresse korrekt ist. Wenn sie falsch ist, kann der Load-Balancer-Dienst nicht an die IP-Adresse gebunden werden. Dadurch bleibt der Dienst istio-ingressgateway dauerhaft im Status pending.

Lösung

  1. Arbeiten Sie mit Ihrem Netzwerkteam zusammen und konfigurieren Sie die richtige IP-Adresse in der Datei istio- operator.yaml.
  2. Führen Sie die ASM-Installation noch einmal aus und wenden Sie die Datei overrides.yaml an:
    apigeectl apply -f overrides.yaml
    

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an Google Cloud Customer Care:

  1. Die Google Cloud-Projekt-ID
  2. Der Name der Apigee Hybrid-Organisation
  3. Kubernetes-Clustername
  4. Google Cloud-Projektname, wenn sich der Kubernetes-Cluster in einem anderen Google Cloud-Projekt befindet
  5. Datei overrides.yaml
  6. Die Datei Istio-operator .yaml, die während der ASM-Installation verwendet wird
  7. Erfassen Sie die Logs von jedem istio-ingressgateway-Pod im istio-system-Namespace:
    kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
    
  8. Erfassen Sie die Beschreibung der einzelnen Pods im istio-system-Namespace:
    kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
    
  9. Erfassen Sie die Liste der Dienste im istio-system-Namespace:
    kubectl get svc -n istio-system