Berikut adalah daftar pertanyaan umum terkait ALB Ingress.
Indeks
Kategori | Tautan |
Pertanyaan umum | |
Anomali penggunaan | |
Optimasi Kinerja |
Pertanyaan Umum
Apa perbedaan antara ALB Ingress dan Nginx Ingress?
ALB Ingress menawarkan beberapa keunggulan dibandingkan Nginx Ingress. Tidak seperti Nginx Ingress yang harus dikelola sendiri, ALB Ingress didukung oleh Alibaba Cloud Application Load Balancer (ALB), sebuah layanan sepenuhnya dikelola yang menghilangkan kebutuhan untuk operasi manual. ALB menyediakan manajemen trafik masuk yang kuat serta layanan gerbang berperforma tinggi. Untuk perbandingan lebih rinci antara Nginx Ingress, ALB Ingress, dan MSE Ingress, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
Apakah ALB Ingress mendukung akses jaringan publik dan internal?
Gejala
Dalam beberapa skenario bisnis, Anda mungkin perlu mengakses ALB Ingress dari internet maupun jaringan internal.
Solusi
Ya, ALB Ingress mendukung kedua jenis akses tersebut. Untuk mengakses ALB Ingress dari internet dan jaringan internal, Anda dapat membuat instans ALB yang menghadap publik. Instans ini akan membuat alamat IP elastis publik (EIP) di setiap zona, memungkinkan komunikasi dengan internet. Selain itu, instans tersebut juga menyediakan alamat IP virtual (VIP) untuk akses internal. Jika hanya memerlukan akses internal, Anda cukup membuat instans ALB khusus untuk akses internal.
Bagaimana cara memastikan bahwa ALB Ingress menggunakan nama domain ALB tetap?
Setelah membuat instans ALB menggunakan AlbConfig, ALB Ingress mereferensikan AlbConfig melalui IngressClass untuk menggunakan nama domain instans ALB yang sesuai. Nama domain tetap tidak berubah selama IngressClass dan AlbConfig yang terkait tidak dimodifikasi.
Mengapa saya tidak dapat menemukan pod ALB Ingress Controller di kluster saya?
Gejala
Saat mencari pod ALB Ingress Controller di namespace kube-system, Anda tidak menemukan pod terkait.
Solusi
Pod ALB Ingress Controller hanya tersedia di namespace kube-system pada kluster ACK khusus. Pada kluster ACK standar, ACK Pro, dan ACK Serverless, komponen ALB Ingress Controller dikelola oleh Alibaba Cloud sehingga tidak dapat ditemukan secara langsung. Untuk informasi lebih lanjut tentang migrasi kluster ACK khusus ke ACK Pro, lihat Migrasi panas kluster ACK khusus ke kluster ACK Pro.
Bagaimana cara memasang server berbasis IP?
Gejala
Anda ingin memasang pod backend ke instans ALB sebagai server berbasis IP. Namun, konfigurasi default tidak mendukung pembuatan grup server berbasis IP, sehingga mencegah distribusi trafik ke layanan backend.
Solusi
Tambahkan anotasi alb.ingress.kubernetes.io/server-group-type: Ip ke layanan. Ini akan membuat grup server berbasis IP dan memungkinkan pendaftaran pod backend ke instans ALB berdasarkan alamat IP.
Jenis grup server tidak dapat diubah setelah dibuat. Dalam mode jaringan Flannel, jika Anda mengubah jenis layanan (misalnya beralih antara ClusterIP dan NodePort), jenis lampiran backend akan beralih antara IP dan ECS, mencegah backend ditambahkan ke grup server asli. Oleh karena itu, hindari modifikasi langsung pada jenis layanan.
Untuk mengubah jenis grup server, buat layanan baru dan tentukan anotasi
server-group-type: Ip. Hal ini menghindari dampak pada node yang terlampir ke grup server yang ada.Setelah menetapkan anotasi
server-group-type, jangan hapus anotasi tersebut. Penghapusan anotasi menyebabkan ketidakkonsistenan jenis grup server, yang mengakibatkan rekonsiliasi gagal dan mencegah penambahan node backend ke grup server.
apiVersion: v1
kind: Service
metadata:
annotations:
alb.ingress.kubernetes.io/server-group-type: Ip
name: tea-svc
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: tea
type: ClusterIPJika saya memilih ALB Ingress saat membuat kluster ACK yang dikelola, apakah instans ALB dibuat secara otomatis?
Tidak, instans ALB tidak dibuat secara otomatis. Saat memilih ALB Ingress saat membuat kluster ACK yang dikelola, hanya ALB Ingress Controller yang diinstal. Instans ALB harus dibuat secara manual.
Pendengar backend ALB meneruskan permintaan ke grup server kube-system-fake-svc-80 secara default. Apa tujuan dari grup server ini?
Grup server kube-system-fake-svc-80 dibuat untuk memungkinkan pendengar berfungsi. Grup ini tidak terlibat dalam pemrosesan bisnis dan tidak boleh dihapus.
Pemecahan Masalah
Mengapa aturan ALB Ingress saya tidak berlaku?
Gejala
Setelah membuat aturan ALB Ingress, aturan routing tidak berfungsi seperti yang diharapkan. Permintaan tidak diteruskan ke layanan backend yang sesuai.
Penyebab
Instans ALB memproses aturan routing secara serial. Jika satu ALB Ingress memiliki kesalahan konfigurasi, perubahan pada ALB Ingress lainnya tidak akan berlaku.
Solusi
Jika ALB Ingress baru tidak berlaku, kemungkinan besar ALB Ingress sebelumnya mengandung kesalahan. Perbaiki ALB Ingress yang rusak agar ALB Ingress baru dapat berfungsi.
Apa yang harus saya lakukan jika perubahan saya pada ALB Ingress tidak berlaku tetapi tidak ada aktivitas anomali yang dilaporkan?
Gejala
Setelah mengubah konfigurasi ALB Ingress atau mengaitkannya dengan AlbConfig, perubahan tersebut tidak berlaku meskipun tidak ada aktivitas anomali yang dilaporkan.
Solusi
Jika peristiwa rekonsiliasi terkait dengan AlbConfig tidak dieksekusi atau peristiwa perubahan tidak diproses, pengikatan antara IngressClass dan AlbConfig mungkin salah. Periksa parameter parameters yang ditentukan dalam IngressClass. Untuk informasi lebih lanjut, lihat Gunakan IngressClass untuk mengaitkan AlbConfig dengan Ingress.
Apa yang harus saya lakukan jika aturan pengalihan ALB Ingress dihapus segera setelah pembuatan dan kode status 503 dikembalikan?
Gejala
Aturan pengalihan ALB Ingress dihapus segera setelah dibuat, mengakibatkan permintaan ke layanan mengembalikan kode status 503 dan trafik tidak didistribusikan.
Solusi
Periksa apakah anotasi canary:true telah ditambahkan ke semua Ingress yang sesuai dengan aturan pengalihan. Rilis canary memerlukan versi utama untuk merutekan trafik, sehingga anotasi canary:true tidak perlu ditambahkan ke Ingress versi utama. Untuk informasi lebih lanjut tentang implementasi rilis bertahap menggunakan ALB Ingress, lihat Implementasikan rilis bertahap menggunakan ALB Ingress.
Metode rilis canary hanya mendukung dua Ingress dan memiliki keterbatasan. Gunakan aturan pengalihan kustom untuk solusi pengalihan trafik yang lebih fleksibel. Untuk informasi lebih lanjut, lihat Kustomisasi aturan pengalihan untuk ALB Ingress.
Mengapa sumber daya AlbConfig melaporkan kesalahan "pendengar tidak ada di alb, port: xxx"?
Gejala
Saat mencoba mengakses port selain port 80, permintaan gagal terhubung. Sumber daya AlbConfig melaporkan kesalahan "pendengar tidak ada di alb, port: xxx", menunjukkan bahwa port terkait tidak sedang didengarkan dan trafik tidak diteruskan.
Solusi
Secara default, AlbConfig hanya berisi pendengar untuk port 80. Untuk mendengarkan port lain, tambahkan konfigurasi pendengar untuk port tersebut ke AlbConfig. Untuk informasi lebih lanjut, lihat Buat pendengar.
Setelah saya mengonfigurasi pendengar HTTP dan HTTPS di AlbConfig, mengapa saya tidak dapat mengakses port pendengar HTTP dan HTTPS?
Gejala
Meskipun telah mengonfigurasi port pendengar HTTP dan HTTPS di AlbConfig, baik port HTTP maupun HTTPS tidak mendengarkan atau meneruskan trafik, sehingga layanan tidak dapat diakses melalui port-port ini.
Solusi
Pastikan Anda telah menambahkan anotasi alb.ingress.kubernetes.io/listen-ports ke anotasi sumber daya Ingress. Anotasi ini menentukan bahwa ALB Ingress mendengarkan port HTTP (80) dan HTTPS (443). Contohnya:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: https-ingress
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' # Tambahkan anotasi ini untuk memastikan bahwa ALB Ingress berfungsi dengan benar saat beberapa pendengar digunakan.
spec:
#...Mengapa perubahan konfigurasi manual yang dibuat di konsol ALB hilang, aturan tambahan dihapus, dan log akses dinonaktifkan?
Gejala
Setelah memodifikasi konfigurasi secara manual di konsol ALB, Anda melihat bahwa perubahan tersebut hilang atau dihapus secara otomatis. Fitur log akses juga dinonaktifkan.
Solusi
Untuk mengubah konfigurasi ALB Ingress, modifikasi harus dilakukan pada sumber daya di kluster. Konfigurasi terkait disimpan di API Server kluster sebagai ALB Ingress atau AlbConfig. Perubahan manual di konsol ALB tidak memodifikasi sumber daya di API Server, sehingga tidak berlaku. Jika operasi rekonsiliasi dipicu di kluster, konfigurasi di Ingress atau AlbConfig akan menimpa konfigurasi di konsol, menyebabkan perubahan manual hilang. Modifikasi ALB Ingress atau AlbConfig diperlukan untuk mengubah konfigurasi terkait.
Mengapa saya menerima kesalahan "Parameter array yang ditentukan berisi terlalu banyak item, maksimal 15 item, Sertifikat tidak valid" selama rekonsiliasi?
Gejala
Selama rekonsiliasi, pesan kesalahan berikut muncul: "Parameter array yang ditentukan berisi terlalu banyak item, maksimal 15 item, Sertifikat tidak valid". Hal ini mencegah ALB Ingress dikaitkan dengan sertifikat yang diperlukan.
Solusi
Mulai dari versi v2.11.0-aliyun.1, komponen ALB Ingress Controller mendukung paging sertifikat. Jika Anda menerima kesalahan ini, itu berarti versi ALB Ingress Controller Anda tidak mendukung paging sertifikat dan Anda mencoba mengaitkan lebih dari 15 sertifikat dalam satu rekonsiliasi. Untuk menyelesaikan masalah ini, tingkatkan komponen ALB Ingress Controller ke versi terbaru. Untuk informasi lebih lanjut tentang versi komponen, lihat ALB Ingress Controller. Untuk informasi lebih lanjut tentang cara meningkatkan komponen, lihat Kelola komponen ALB Ingress Controller.
Setelah saya mengonfigurasi instans ALB di konsol, mengapa beberapa pendengar dihapus ketika saya menjalankan perintah kubectl apply untuk memperbarui konfigurasi daftar kontrol akses (ACL) AlbConfig?
Gejala
Setelah membuat dan mengonfigurasi instans ALB di konsol, Anda menjalankan perintah kubectl apply untuk memperbarui konfigurasi ACL AlbConfig. Akibatnya, beberapa pendengar dihapus secara tidak terduga, menyebabkan port atau aturan terkait menjadi tidak valid.
Solusi
Gunakan perintah kubectl edit untuk langsung memperbarui konfigurasi sumber daya. Jika Anda harus menggunakan perintah kubectl apply, jalankan perintah kubectl diff untuk melihat pratinjau perubahan sebelum menjalankan perintah kubectl apply. Pastikan perubahan memenuhi harapan Anda, lalu jalankan perintah kubectl apply untuk menerapkan perubahan ke kluster Kubernetes.
Perintah kubectl apply akan menimpa AlbConfig. Oleh karena itu, saat menggunakan perintah kubectl apply untuk memperbarui konfigurasi ACL AlbConfig, pastikan file YAML mencakup konfigurasi pendengar secara lengkap guna mencegah penghapusan pendengar yang tidak terdaftar.
Jika pendengar dihapus setelah menjalankan perintah kubectl apply, pulihkan pendengar sebagai berikut:
Periksa apakah file YAML menentukan daftar pendengar lengkap.
Jika pendengar yang dihapus tidak ada dalam daftar, lanjutkan ke langkah berikutnya. Jika tidak, tidak ada tindakan yang diperlukan.
Jalankan perintah berikut untuk mengedit AlbConfig dan menambahkan konfigurasi pendengar yang dihapus.
kubectl -n <namespace> edit AlbConfig <albconfig-name> # Ganti <namespace> dan <albconfig-name> dengan namespace dan nama sumber daya AlbConfig.
Optimasi Kinerja
Optimalkan waktu rekonsiliasi server untuk penskalaan pod dalam layanan
Masalah
Dalam lingkungan Kubernetes, proses rekonsiliasi server dapat memakan waktu lama saat pod yang terkait dengan layanan diskalakan masuk atau keluar. Penundaan ini memengaruhi kinerja real-time dari penskalaan elastis, terutama seiring dengan bertambahnya jumlah Ingress yang terkait.
Solusi
Untuk meningkatkan efisiensi rekonsiliasi server, terapkan optimasi berikut:
Batasi jumlah Ingress: Jangan melampirkan lebih dari 30 Ingress ke layanan tunggal.
Gabungkan aturan Ingress: Lampirkan beberapa layanan ke satu Ingress dan tentukan beberapa aturan pengalihan dalam sumber daya Ingress tersebut untuk meningkatkan kinerja rekonsiliasi server.
Tetapkan bobot node secara otomatis saat menggunakan Plugin Flannel dan layanan mode Lokal
Masalah
Saat menggunakan Plugin Jaringan Flannel dan mengonfigurasi layanan dalam mode Lokal, trafik tidak didistribusikan secara merata di seluruh node. Ketidakseimbangan ini menyebabkan beban tinggi pada beberapa node dan mencegah distribusi trafik yang seimbang. Tujuannya adalah untuk menetapkan bobot ke node berdasarkan jumlah pod pada setiap node untuk distribusi trafik yang lebih efektif.
Solusi
Mulai dari versi v2.13.1-aliyun.1, ALB Ingress Controller mendukung penugasan bobot node otomatis. Pastikan Anda memperbarui ke versi terbaru untuk menggunakan fitur ini. Untuk informasi lebih lanjut, lihat Tingkatkan komponen ALB Ingress Controller.
Dalam kluster yang menggunakan Plugin Flannel, bobot node dihitung berdasarkan jumlah pod pada setiap node ketika layanan disetel ke mode Lokal. Gambar berikut menunjukkan contoh di mana pod aplikasi (app=nginx) diterapkan pada tiga Instance ECS dan diekspos melalui Service A.
Jumlah total pod backend untuk layanan | Deskripsi |
Jumlah pod <= 100 | ALB Ingress Controller menetapkan bobot setiap node ke jumlah pod pada node tersebut. Sebagai contoh, dalam gambar sebelumnya, ketiga Instance ECS memiliki 1, 2, dan 3 pod. Bobot untuk Instance ECS ini ditetapkan menjadi 1, 2, dan 3 masing-masing. Trafik kemudian didistribusikan ke instance dalam rasio 1:2:3, yang menghasilkan beban yang lebih seimbang di seluruh pod. |
Jumlah pod > 100 | ALB Ingress Controller menghitung bobot node berdasarkan persentase total pod yang diterapkan pada node. Sebagai contoh, jika ketiga Instance ECS dalam gambar sebelumnya memiliki 100, 200, dan 300 pod, bobot ECS yang sesuai ditetapkan menjadi 16, 33, dan 50. Trafik kemudian didistribusikan ke Instance ECS ini dalam rasio 16:33:50 untuk mencapai distribusi beban pod yang lebih seimbang. |