Panggilan API gagal dengan error waktu tunggu

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.

Gejala

Anda mungkin mengamati salah satu gejala berikut:

  1. Aplikasi klien mendapatkan error waktu tunggu habis sebagai respons untuk panggilan API di Apigee hybrid.
  2. Anda mengamati error seperti Error from server (invalid) atau The Job "apigee-resources-install" is invalid saat menerapkan konfigurasi (overrides.yaml) ke cluster selama penginstalan Apigee Hybrid.

Pesan error

Anda mungkin melihat salah satu error berikut:

Respons error untuk panggilan API

Permintaan API di Apigee hybrid mungkin gagal dengan pesan error berikut:

* 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

Error yang diamati saat menerapkan konfigurasi (overrides.yaml) ke cluster

Anda mungkin mengamati salah satu error berikut saat menerapkan konfigurasi (file overrides.yaml) ke cluster selama penginstalan:

Error #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"

Error #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,

Kemungkinan penyebab

Error ini dapat terjadi jika layanan istio-ingressgateway berada dalam status pending dan tidak dapat terikat ke alamat IP eksternal seperti yang ditunjukkan di bawah:

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

Kemungkinan penyebab layanan istio-ingressgateway berada dalam status pending adalah sebagai berikut:

Penyebab Deskripsi
Tugas dalam status salah/tertunda di namespace istio-system Tugas incomplete/erroneous di namespace istio-system dapat menyebabkan layanan istio-ingressgateway berada dalam status pending selamanya dan tidak dapat terikat ke alamat IP eksternal.
Tugas apigee-resources-install dalam status salah/tertunda di namespace apigee-system Tugas incomplete di namespace apigee-system dapat menyebabkan layanan istio- ingressgateway berada dalam status pending selamanya dan tidak dapat terikat ke alamat IP eksternal.
Rentang alamat IP yang salah ditetapkan ke load balancer eksternal Rentang alamat IP yang salah dapat dikonfigurasi dalam file istio-operator.yaml sehingga menyebabkan layanan istio-ingressgateway masuk ke status pending selamanya dan tidak dapat terikat ke alamat IP eksternal selama penginstalan.

Penyebab: Tugas di namespace istio-system dalam status salah/tertunda

Diagnosis

  1. Periksa status tugas di namespace istio-system menggunakan perintah berikut:
    kubectl get jobs -n istio-system
    
  2. Status tugas harus complete. Jika status tugas dalam status erroneous/pending, maka itulah penyebab masalah ini.

Resolusi

  1. Jika ada tugas dalam status pending atau erroneous, hapus tugas tersebut menggunakan perintah berikut:
    kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
    
  2. Jalankan kembali penginstalan dengan menerapkan file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Penyebab: tugas apigee-resources-install di namespace apigee-system mungkin dalam status salah

Diagnosis

  1. Periksa status tugas di namespace apigee-system menggunakan perintah berikut:
    kubectl get jobs -n apigee-system
    
  2. Status tugas harus complete. Jika status tugas berada dalam status erroneous/pending, hal itu adalah penyebab masalah ini. Contoh output berikut menunjukkan bahwa tugas apigee-resources-install berhasil diselesaikan.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Resolusi

  1. Jika tugas berada dalam status pending atau erroneous, hapus tugas tersebut menggunakan perintah berikut:
    kubectl -n apigee-system delete job JOB_NAME_FROM_STEP_1
    
  2. Jalankan kembali penginstalan dengan menerapkan file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Penyebab: Rentang alamat IP yang salah ditetapkan ke load balancer eksternal

Diagnosis

  1. Periksa alamat IP yang dikonfigurasi untuk load balancer dalam file istio- operator.yaml. Misalnya, cuplikan berikut menunjukkan lokasi di file istio-operator.yaml tempat alamat IP dikonfigurasi:
    -name: istio-ingressgateway
      enabled: true
      k8s:
        service:
          type: LoadBalancer
         loadBalancerIP: 10.195.24.23
  2. Layanan istio-ingressgateway dikonfigurasi sebagai load balancer (ditunjukkan oleh jenis) dalam file istio-operator.yaml. Selama penginstalan ASM, load balancer dibuat dengan alamat IP yang dikonfigurasi dan dihubungkan untuk berkomunikasi dengan layanan istio- ingressgateway. Oleh karena itu, alamat IP yang dikonfigurasi harus benar dan dicadangkan untuk load balancer.
  3. Hubungi tim jaringan Anda dan pastikan alamat IP yang dikonfigurasi untuk loadBalancerIP sudah benar. Jika salah, layanan load balancer tidak akan dapat mengikat ke alamat IP. Hal ini menyebabkan layanan istio-ingressgateway berada dalam status pending selamanya.

Resolusi

  1. Bekerja samalah dengan tim jaringan Anda dan konfigurasikan alamat IP yang benar di file istio- operator.yaml.
  2. Jalankan ulang penginstalan ASM dan terapkan file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:

  1. ID Project Google Cloud
  2. Nama organisasi Apigee Hybrid
  3. Nama Cluster Kubernetes
  4. Nama project Google Cloud jika cluster Kubernetes berada di project Google Cloud yang berbeda
  5. File overrides.yaml
  6. File Istio-operator .yaml yang digunakan selama penginstalan ASM.
  7. Kumpulkan log dari setiap pod istio-ingressgateway di namespace istio-system:
    kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
    
  8. Kumpulkan deskripsi setiap pod di namespace istio-system:
    kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
    
  9. Kumpulkan daftar layanan di namespace istio-system:
    kubectl get svc -n istio-system