Panggilan API gagal dengan error waktu tunggu

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

Gejala

Anda mungkin melihat salah satu gejala berikut:

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

Pesan error

Anda mungkin melihat salah satu error berikut:

Respons error terhadap panggilan API

Permintaan API pada 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 melihat salah satu error berikut saat menerapkan konfigurasi (overrides.yaml file) ke kelompok selama pemasangan:

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

Kesalahan #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 pending berstatus dan tidak dapat mengikat 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 sistem istio Tugas incomplete/erroneous dalam namespace istio-system dapat menyebabkan layanan istio-ingressgateway berada dalam status pending selamanya dan tidak dapat mengikat ke alamat IP eksternal.
tugas apigee-resources-install dalam status salah/tertunda di namespace apigee-system Tugas incomplete dalam namespace apigee-system dapat menyebabkan Layanan istio- ingressgateway akan berada dalam status pending selamanya dan tidak dapat untuk mengikat ke alamat IP eksternal.
Rentang alamat IP yang ditetapkan ke load balancer eksternal salah Rentang alamat IP yang salah dapat dikonfigurasi di file istio-operator.yaml menyebabkan layanan istio-ingressgateway masuk ke status pending selamanya dan tidak dapat mengikat ke alamat IP eksternal selama instalasi.

Penyebab: Tugas di namespace sistem istio dalam status salah/tertunda

Diagnosis

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

Resolusi

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

Penyebab: tugas penginstalan apigee-resources-install di namespace sistem apigee mungkin dalam status yang salah

Diagnosis

  1. Periksa status tugas di namespace apigee-system menggunakan atribut perintah berikut:
    kubectl get jobs -n apigee-system
    
  2. Status tugas harus complete. Jika status pekerjaan dalam erroneous/pending, maka itulah penyebab masalah ini. Hal berikut contoh output menunjukkan bahwa tugas apigee-resources-install berhasil selesai.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Resolusi

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

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

Diagnosis

  1. Periksa alamat IP yang dikonfigurasi untuk load balancer di file istio- operator.yaml. Misalnya, cuplikan berikut menunjukkan lokasi pada 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 dengan ) dalam file istio-operator.yaml. Selama penginstalan ASM, load balancer dibuat dengan alamat IP yang dikonfigurasi dan berkabel untuk berkomunikasi dengan layanan istio- ingressgateway. Oleh karena itu, alamat IP yang dikonfigurasi harus benar dan yang dicadangkan untuk load balancer.
  3. Libatkan tim jaringan Anda dan verifikasi bahwa alamat IP yang telah dikonfigurasi untuk loadBalancerIP benar. Jika itu salah, layanan load balancer tidak 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 konfigurasi alamat IP yang benar di file istio- operator.yaml.
  2. Jalankan kembali Penginstalan ASM dan terapkan file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik, lalu hubungi Google Cloud Customer Care:

  1. ID Project Google Cloud
  2. Nama organisasi hybrid Apigee
  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