Gejala
Pod apigee-ingressgateway
Anda hanya menampilkan 1 dari 2 container yang berjalan saat Anda mendapatkan listingan pod.
Misalnya, saat Anda menjalankan perintah berikut:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Output:
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
Selain itu, menjalankan perintah describe
pada salah satu pod di atas akan menunjukkan bahwa pemeriksaan kesiapan gagal dengan kode status 503.
Misalnya, di bagian Events
deskripsi pod, Anda mungkin melihat pesan berikut:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Kemungkinan penyebab
Penyebab | Deskripsi |
---|---|
Ingress Apigee dikonfigurasi untuk memproses port 80 | Konfigurasi ingress Apigee di port 80 tidak lagi didukung mulai dari Apigee Hybrid 1.9. |
Penyebab: Ingress Apigee dikonfigurasi untuk memproses port 80
Masalah ini disebabkan oleh gateway ingress Apigee yang dikonfigurasi untuk memproses di port 80, yang tidak lagi didukung mulai dari Apigee Hybrid 1.9.
Hal ini dapat terjadi jika Anda mengupgrade dari Apigee Hybrid versi sebelumnya yang mengizinkan port 80, atau jika ada kesalahan konfigurasi lain yang mengaktifkannya.
Diagnosis
-
Dapatkan listingan pod
apigee-ingressgateway
Anda.Jalankan perintah berikut:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Contoh output
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
-
Jelaskan salah satu pod yang tercantum untuk memeriksa peristiwa:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Dengan APIGEE_INGRESSGATEWAY_POD adalah pod
apigee-ingressgateway
yang tercantum dalam output perintah sebelumnya.Contoh output:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Dapatkan log untuk pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Anda mungkin melihat entri log yang menunjukkan bahwa port 80 gagal terikat karena error izin ditolak, diikuti dengan pesan bahwa Envoy belum siap.
2025-09-11T06:16:45.457621Z error envoy config external/envoy/source/common/listener_manager/listener_manager_impl.cc:1186 listener '0.0.0.0_80' failed to bind or apply socket options: cannot bind '0.0.0.0:80': Permission denied ... 2025-09-11T06:16:46.365818Z warn Envoy proxy is NOT ready: config received from XDS server, but was rejected: cds updates: 1 successful, 0 rejected; lds updates: 0 successful, 1 rejected
- Tinjau konfigurasi
apigeeroute
saat ini untuk menemukan konfigurasi yang mengaktifkan port 80 (HTTP).-
Mendapatkan daftar rute Apigee yang ditentukan.
kubectl -n apigee get apigeeroute
Contoh output:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Periksa setiap
apigeeroute
untuk mengetahui tempat port 80 ditentukan.Jalankan perintah berikut untuk setiap
apigeeroute
yang tercantum dalam output perintah sebelumnya:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Dengan APIGEE_ROUTE_NAME adalah nama
apigeeroute
individual.Contoh Perintah:
kubectl -n apigee get apigeeroute non-sni -o yaml
Contoh output:
apiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeRoute metadata: name: non-sni namespace: apigee resourceVersion: "240441468" spec: enableNonSniClient: true hostnames: - '*' ports: - number: 443 protocol: HTTPS tls: credentialName: myorg-hyb-dev-grp minProtocolVersion: TLS_AUTO mode: SIMPLE - number: 80 protocol: HTTP selector: app: apigee-ingressgateway status: lastAppliedGeneration: 1 state: running
apigeeroute
non-sni menunjukkan bahwa port 80 diaktifkan sebagai bagian dari rute ini.
-
Mendapatkan daftar rute Apigee yang ditentukan.
Resolusi
Untuk mengatasi masalah ini, nonaktifkan port 80 di file yaml apigeeroute
asli dengan menghapus baris berikut.
- number: 80 protocol: HTTP
Jika tidak memiliki file yaml apigeeroute
asli, Anda dapat mengikuti langkah-langkah berikut:
- Ekspor konfigurasi saat ini dengan perintah berikut:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
Dengan APIGEE_ROUTE_NAME adalah
apigeeroute
yang diperbarui untuk menghapus konfigurasi port 80.Dengan APIGEE_ROUTE_FILENAME adalah nama file output yang berisi konten yaml
apigeeroute
. -
Edit file yaml
apigeeroute
untuk menghapus konfigurasi port 80.Buka file APIGEE_ROUTE_FILENAME di editor teks dan hapus baris berikut:
- number: 80 protocol: HTTP
-
Ganti
apigeeroute
yang ada dengan file YAML yang telah diubah:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
Dengan APIGEE_ROUTE_FILENAME adalah file output yang berisi konfigurasi
apigeeroute
yang diperbarui. -
Pod
apigee-ingressgateway
sekarang harus berjalan dengan 2/2 container. Jika tidak, hapus pod untuk memungkinkan pod baru dibuat secara otomatis.NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 2/2 Running 0 25h apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 2/2 Running 0 26h
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:- Overrides.yaml
- Output dari perintah berikut:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Untuk setiap rute yang dinyatakan, jalankan:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- Sebagai alternatif, Anda dapat menjalankan dan memberikan informasi pengumpulan data wajib Apigee Hybrid.