ALB Ingress Controller mengelola dan mengarahkan lalu lintas eksternal ke layanan dalam kluster Kubernetes. Saat Anda mengekspos suatu layanan melalui ALB Ingress, controller memantau perubahan pada resource Endpoint terkait, menyinkronkan status node backend ke grup server backend, dan menerapkan perubahan tersebut ke instans ALB. Sinkronisasi dapat gagal karena kesalahan konfigurasi atau batas kuota.
Sebelum melakukan troubleshooting, tingkatkan ALB Ingress Controller ke versi terbaru. Lihat Upgrade the ALB Ingress Controller untuk instruksi. Menjalankan versi lama dapat memicu masalah yang sebenarnya telah diperbaiki.
Cara kerja
Saat Anda mengakses suatu layanan melalui ALB Ingress, ALB Ingress Controller memantau perubahan berbagai resource dan menyinkronkannya ke instans ALB terkait. Gambar berikut menunjukkan hubungan logis antar resource dan proses sinkronisasi.
Langkah 1: Periksa event Ingress
Event Ingress menunjukkan aktivitas yang sedang dilakukan oleh controller serta titik kegagalannya. Periksa event terlebih dahulu untuk mengidentifikasi error spesifik sebelum mencari solusinya.
Menggunakan konsol: Buka Network > Ingresses. Pilih namespace, klik nama Ingress, lalu klik tab Events.
Menggunakan kubectl:
kubectl describe ingress <ingress-name> -n <namespace>Output yang diharapkan:
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS
Normal Sync 19s (x32 over 11d) ingress Scheduled for sync
Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciledKolom Description (konsol) atau bidang Message (kubectl) menampilkan detail event.
Scheduled for sync: Controller telah mulai memproses event.Successfully reconciled: Rekonsiliasi selesai tanpa error.Event
Warning: Controller mengalami masalah. Lihat Langkah 2 untuk solusi.
Jika tidak ada event yang muncul atau hanya event Normal yang muncul tetapi perubahan tidak berlaku, lanjutkan ke Langkah 3.
Langkah 2: Atasi event anomali
Temukan pesan error dari Langkah 1 pada tabel berikut dan ikuti solusinya.
| Pesan error | Penyebab | Solusi |
|---|---|---|
| listener does not exist in alb, port: 80, protocol: HTTP | Pada ALB Ingress Controller V2.11.0 dan versi lebih baru, listener hanya dikaitkan dengan Ingress, bukan dibuat secara otomatis. Error ini berarti listener tidak ada dalam AlbConfig. | Buat listener yang diperlukan untuk resource Ingress dalam AlbConfig. |
| listener not found for (80/HTTP), with ingresses 1 | Pada ALB Ingress Controller V2.11.0 dan versi lebih baru, error ini terjadi ketika listener dihapus dari AlbConfig yang masih dikaitkan dengan Ingress. Pesan error mencantumkan listener yang hilang dan jumlah Ingress terkait. | Hapus semua Ingress yang dikaitkan dengan listener sebelum menghapus listener dari AlbConfig. Jika listener dihapus secara tidak sengaja, tambahkan kembali. |
| no certificate found for host | TLS diaktifkan dengan auto-discovery sertifikat, tetapi tidak ditemukan sertifikat yang cocok untuk domain tersebut di Certificate Management Service. | - Konfigurasikan auto-discovery sertifikat: Buat sertifikat di konsol Certificate Management Service. Controller secara otomatis mencocokkan sertifikat dengan domain yang dikonfigurasi untuk TLS di ALB Ingress. <br>- Tentukan sertifikat secara langsung: Konfigurasikan sertifikat menggunakan AlbConfig. |
| The param Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal | Aturan pengalihan berisi nilai path yang tidak valid. | - Jika Ingress menggunakan anotasi rewrite, atur pathType ke Prefix. <br>- Jika tidak, periksa bidang path untuk karakter yang tidak valid. Untuk path non-regex, nilainya harus diawali dengan / dan hanya boleh berisi huruf, angka, serta karakter khusus berikut: $, +, /, &, ~, @, _, -, ., :. Karakter wildcard * dan ? juga didukung. |
| The param ServerGroupName is illegal | Nama grup server backend ALB memiliki format yang tidak valid. | Periksa nama grup server. Nama dihasilkan dalam format namespace+ServiceName+port. Nama harus terdiri dari 2–128 karakter, diawali huruf, dan hanya boleh berisi angka, ., _, dan -. |
| The specified resource sgp-vz2fb219vv792flx3u is in use | Grup server backend ALB yang dikelola ACK dirujuk oleh instans ALB lain. | Masuk ke konsol ALB. Buka ALB > Server Groups, temukan grup server backend, lalu putuskan kaitan dengan instans ALB. |
| Message: Invalid parameter. Check the parameter input. | ID sertifikat dalam AlbConfig dikonfigurasi salah — kemungkinan besar menggunakan ID numerik alih-alih ID resource. | Gunakan ID resource yang ditentukan oleh CertIdentifier, bukan ID numerik. |
| Message: Failed to create SSL Certificate with name default-https-secret-1-b585e6 ({namespace}-{name}-{identity}). Error: The certificate has expired. | Sertifikat Secret telah kedaluwarsa. Nama sertifikat dalam pesan error mengikuti format {namespace}-{name}-{identity}: {namespace} adalah namespace tempat Secret berada (misalnya, default), {name} adalah nama resource Secret (misalnya, https-secret-1), dan {identity} adalah hash konten Secret (misalnya, b585e6). | 1. Perbarui sertifikat yang kedaluwarsa di bidang secretName pada Ingress. Sertifikat baru harus masih berlaku minimal satu hari sejak tanggal saat ini. <br>2. Atau, hapus konfigurasi secretName dan beralih ke auto-discovery sertifikat. <br><br>Untuk detailnya, lihat Configure certificates for encrypted communication over HTTPS. |
| failed to createSSLCertificateWithName: XXX <br>ErrorCode: NameRepeat <br>Message: The name is already used. Please enter another name. | Ingress menggunakan sertifikat Secret. Setelah sertifikat kedaluwarsa, mengunggah sertifikat baru melalui AlbConfig menggunakan kembali nama sertifikat yang kedaluwarsa, sehingga menyebabkan duplikasi nama sertifikat SSL. | |
| invalid server group Cookie: | - Nilai cookie kosong: Persistensi sesi dikonfigurasi untuk menulis ulang cookie (sticky-session-type: "Server"), tetapi anotasi cookie kosong. <br>- Versi controller tidak didukung: Versi ALB Ingress Controller sebelum V2.15.0-aliyun.1 tidak mendukung cookie kustom untuk persistensi sesi grup server. | - Nilai cookie kosong: Tetapkan nilai cookie yang tidak kosong. Contoh: <br> alb.ingress.kubernetes.io/cookie: "test" <br> Untuk detail anotasi, lihat Use annotations to implement session persistence. <br>- Versi tidak didukung: Upgrade the ALB Ingress Controller. |
| The quota of alb_quota_server_added_num is exceeded for resource eni-xxxx, usage 202/200 | Kuota alb_quota_server_added_num telah tercapai. Kuota ini membatasi berapa kali alamat IP server backend dapat ditambahkan ke grup server backend ALB. | Buka Quota Center untuk meningkatkan kuota grup server. |
Langkah 3: Diagnosis kegagalan senyap
Jika perubahan tidak berlaku tetapi tidak muncul event Warning, kemungkinan besar binding antara IngressClass dan AlbConfig salah dikonfigurasi. Ketika IngressClass mengarah ke AlbConfig yang salah, controller tidak memproses event perubahan untuk Ingress tersebut.
Untuk mendiagnosis:
Verifikasi bahwa
spec.parametersdalamIngressClassmerujuk ke nama resourceAlbConfigyang benar.Periksa apakah event rekonsiliasi untuk
AlbConfigdipicu sama sekali.
Untuk detail binding antara IngressClass dan AlbConfig, lihat Use an IngressClass to associate an AlbConfig with an Ingress.