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 mengalami 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) ke cluster 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 diamati saat menerapkan konfigurasi (overrides.yaml) ke cluster

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

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 status pending 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 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 sistem apigee 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 menyebabkan layanan istio-ingressgateway masuk ke status pending selamanya dan tidak dapat terikat ke alamat IP eksternal selama penginstalan.

Penyebab: Tugas di namespace sistem istio 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 salah satu tugas berada dalam status 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 apigee-resources-install di namespace sistem apigee mungkin mengalami kesalahan

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 dalam status erroneous/pending, itulah 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 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 salah ditetapkan ke load balancer eksternal

Diagnosis

  1. Periksa alamat IP yang dikonfigurasi untuk load balancer di file istio- operator.yaml. Misalnya, cuplikan berikut menunjukkan lokasi dalam 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 verifikasi bahwa alamat IP yang dikonfigurasi untuk loadBalancerIP sudah benar. Jika salah, layanan load balancer tidak akan dapat mengikat ke alamat IP. 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 kembali penginstalan ASM dan terapkan file overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Harus mengumpulkan informasi diagnostik

Jika masalah terus berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Dukungan Apigee:

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