Masalah load balancing di Google Kubernetes Engine (GKE) dapat menyebabkan gangguan layanan, seperti error HTTP 502, atau mencegah akses ke aplikasi.
Gunakan dokumen ini untuk mempelajari cara memecahkan masalah error 502 dari Ingress eksternal dan cara menggunakan log load balancer serta alat diagnostik, seperti check-gke-ingress, untuk mengidentifikasi masalah.
Informasi ini penting bagi admin dan operator Platform serta Developer aplikasi yang mengonfigurasi dan memelihara layanan yang di-load balance di GKE. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam Cloud de Confiance by S3NS konten, lihat Peran dan tugas pengguna GKE umum.
Ingress Eksternal menghasilkan error HTTP 502
Gunakan panduan berikut untuk memecahkan masalah error HTTP 502 dengan resource Ingress eksternal:
- Aktifkan log untuk setiap layanan backend yang terkait dengan setiap Layanan GKE yang direferensikan oleh Ingress.
- Gunakan detail status untuk mengidentifikasi penyebab respons HTTP 502. Detail status yang menunjukkan bahwa respons HTTP 502 yang berasal dari backend memerlukan pemecahan masalah dalam Pod penyaluran, bukan load balancer.
Grup instance tidak terkelola
Anda mungkin mengalami error HTTP 502 dengan resource Ingress eksternal jika Ingress eksternal Anda menggunakan backend grup instance yang tidak dikelola. Masalah ini terjadi saat semua persyaratan berikut terpenuhi:
- Cluster memiliki jumlah total node yang besar di antara semua kumpulan node.
- Pod yang aktif untuk satu atau beberapa Layanan yang direferensikan oleh Ingress hanya terletak di beberapa node.
- Layanan yang dirujuk oleh Ingress menggunakan
externalTrafficPolicy: Local.
Untuk menentukan apakah Ingress eksternal Anda menggunakan backend grup instance yang tidak dikelola, lakukan hal berikut:
Buka halaman Ingress di Cloud de Confiance konsol.
Klik nama Ingress eksternal Anda.
Klik nama Load balancer. Halaman Detail load balancing ditampilkan.
Periksa tabel di bagian Layanan backend untuk menentukan apakah Ingress eksternal Anda menggunakan NEG atau grup instance.
Untuk mengatasi masalah ini, gunakan salah satu solusi berikut:
- Gunakan cluster native VPC.
- Gunakan
externalTrafficPolicy: Clusteruntuk setiap Layanan yang dirujuk oleh Ingress eksternal. Solusi ini menyebabkan Anda kehilangan alamat IP klien asli di sumber paket. - Gunakan anotasi
node.kubernetes.io/exclude-from-external-load-balancers=true. Tambahkan anotasi ke node atau kumpulan node yang tidak menjalankan Pod penayangan untuk Layanan apa pun yang direferensikan oleh Ingress eksternal atau LayananLoadBalancerdi cluster Anda.
Konfigurasi logging load balancer L4
Bagian ini memberikan informasi pemecahan masalah jika Anda telah mengaktifkan logging untuk Load Balancer Jaringan passthrough eksternal atau Load Balancer Jaringan passthrough internal.
Memantau status konfigurasi logging
Pengontrol L4LB GKE memberikan masukan tentang status rekonsiliasi logging melalui jenis status.conditions Layanan. Anda dapat memeriksa status ini dengan menjalankan perintah berikut:
kubectl get svc SERVICE_NAME -o yaml
Ganti kode berikut:
SERVICE_NAME: nama cluster.
Di output, cari jenis kondisi LoggingConfigManaged. Tabel berikut menjelaskan kemungkinan alasan kondisi tersebut:
| Status kondisi | Alasan | Deskripsi |
|---|---|---|
| Benar | Direkonsiliasi | Pengontrol secara aktif menerapkan konfigurasi logging yang ditentukan dalam L4LBConfig CRD. |
| Salah | Tidak dikelola | Bagian logging tidak ada dalam L4LBConfig CRD, atau anotasi dihapus. Pengontrol telah menghentikan pengelolaan dan membiarkan layanan backend dalam status terakhir yang diketahui. |
| Salah | Tidak ada | Resource L4LBConfig yang direferensikan dalam anotasi Layanan tidak dapat ditemukan. |
| Salah | Tidak valid | Resource L4LBConfig gagal dalam
validasi silang parameter optionalFields. |
| Salah | Error | Terjadi error selama rekonsiliasi layanan backend. |
Memahami perilaku coast
Jika anotasi networking.gke.io/l4lb-config dihapus dari manifes Layanan, atau resource L4LBConfig yang direferensikan dihapus, konfigurasi akan memasuki status Coast.
Dalam status ini, pengontrol GKE berhenti mengelola setelan logging , tetapi tidak mereset layanan backend Cloud de Confiance by S3NS ke setelan default-nya. Sebagai gantinya, layanan backend tetap berada dalam status baik terakhir yang diketahui. Peristiwa peringatan biasanya dikeluarkan untuk memberi tahu Anda bahwa Kubernetes tidak lagi mengontrol konfigurasi.
Menggunakan log load balancer untuk memecahkan masalah
Anda dapat menggunakan log Load Balancer Jaringan passthrough internal dan log Load Balancer Jaringan passthrough eksternal untuk memecahkan masalah dengan load balancer dan menghubungkan dari load balancing hingga resource GKE.
Log digabungkan per koneksi dan diekspor hampir secara real time. Log dibuat untuk setiap node GKE yang terlibat di jalur data Layanan LoadBalancer, untuk traffic ingress dan egress. Entri log mencakup kolom tambahan untuk resource GKE, seperti:
- Nama cluster
- Lokasi cluster
- Nama layanan
- Namespace layanan
- Nama pod
- Namespace pod
Menggunakan alat diagnostik untuk memecahkan masalah
Alat diagnostik check-gke-ingress memeriksa resource Ingress untuk menemukan kesalahan konfigurasi umum. Anda dapat menggunakan alat check-gke-ingress dengan cara berikut:
- Jalankan
alat command line
gcpdiagdi cluster Anda. Hasil traffic ingress muncul di bagiangke/ERR/2023_004aturan pemeriksaan. - Gunakan alat
check-gke-ingresssaja atau sebagai plugin kubectl dengan mengikuti petunjuk di check-gke-ingress.