Suite penjadwalan trafik Service Mesh (ASM) menyediakan arsitektur penjadwalan trafik dinamis yang non-intrusif dan skalabel untuk manajemen serta kontrol terpusat atas semua trafik dalam sistem terdistribusi. Hal ini membantu meningkatkan keandalan aplikasi cloud-native, mengurangi biaya, dan meningkatkan pemanfaatan sumber daya. Topik ini menjelaskan suite penjadwalan trafik ASM dan fiturnya.
Apa itu suite penjadwalan trafik ASM?
Suite penjadwalan trafik ASM adalah model arsitektur penjadwalan trafik terpusat berbasis ASM. Dirancang untuk menjadwalkan dan mengelola permintaan dalam aplikasi terdistribusi cloud-native secara terpusat.
Suite penjadwalan trafik ASM terdiri dari Agen dan pengontrol yang menyediakan serangkaian kebijakan penjadwalan trafik yang telah ditentukan sebelumnya. Kebijakan tersebut diterbitkan oleh pengontrol ke Agen untuk secara dinamis mengontrol penjadwalan trafik. Ketika proxy sidecar meneruskan permintaan arah masuk atau arah keluar dari pod, Agen memberikan keputusan penjadwalan kepada proxy tersebut untuk membatasi atau menambah antrian permintaan.
Aktifkan suite penjadwalan trafik ASM
ACK Serverless dan Container Compute Service (ACS) tidak mendukung suite penjadwalan trafik ASM.
Untuk menggunakan suite penjadwalan trafik ASM, pastikan versi instance ASM Anda adalah 1.21.6.82 atau lebih baru dan klaster Kubernetes telah ditambahkan ke instance ASM Anda. Untuk informasi lebih lanjut, lihat Tambahkan klaster ke instance ASM.
Untuk mengaktifkan suite penjadwalan trafik ASM, ikuti langkah-langkah berikut:
Pada konsol ASM
Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih .
Klik nama instance ASM. Di panel navigasi di sebelah kiri, pilih .
Pilih tab Advanced Traffic Scheduling dan klik Enable Traffic Scheduling.
Lihat tabel di bawah ini, lalu klik OK.
Item konfigurasi
Deskripsi
Storage Class
Kelas penyimpanan yang valid yang diperlukan agar suite penjadwalan trafik dapat mengimplementasikan pertukaran data antara agen penjadwalan dan metadata.
Configure Resource
Konfigurasi untuk Pod Agen.
Limit default adalah 2 CPU dan 1.024MiB.
Request secara default adalah 0,5 CPU dan 512 MiB.
Timeout Period
Suite penjadwalan trafik mendukung antrian permintaan ketika sistem kelebihan beban. Permintaan yang berada dalam antrian selama periode tertentu akan dibuang.
Effective Scope
Jika tidak dikonfigurasi, cakupan default menjadi global. Cakupan yang didukung meliputi:
Cakupan Gateway: Berlaku untuk sumber daya yang terkait dengan gateway tertentu.
Cakupan Workload: Berlaku untuk workload tertentu.
Cakupan Namespace: Berlaku untuk namespace tertentu.
Dengan kubectl
Gunakan kubectl untuk terhubung ke instance ASM. Untuk informasi lebih lanjut, lihat Gunakan kubectl pada control plane untuk mengakses sumber daya Istio.
Jalankan perintah berikut:
kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'
Kebijakan penjadwalan trafik yang didukung oleh suite penjadwalan trafik ASM
Tabel berikut menjelaskan kebijakan yang didukung oleh suite penjadwalan trafik ASM.
Kebijakan | Deskripsi | Referensi |
Pembatasan laju trafik | Kebijakan pembatasan laju trafik dibuat menggunakan CustomResourceDefinition (CRD) RateLimtingPolicy. Kebijakan ini menyediakan throttling global untuk layanan tertentu dalam instance ASM. Dibandingkan dengan solusi throttling yang disediakan oleh Istio open source, kebijakan yang dibuat menggunakan CRD RateLimtingPolicy mendukung fitur throttling tingkat lanjut seperti throttling berbasis pengguna, pengaturan jendela trafik burst, dan konfigurasi laju konsumsi kustom untuk token permintaan. | Gunakan RateLimitingPolicy untuk mengimplementasikan throttling berbasis pengguna |
Penjadwalan permintaan berbasis prioritas berdasarkan latensi rata-rata | Kebijakan penjadwalan permintaan berbasis prioritas membandingkan latensi waktu nyata dengan latensi rata-rata historis untuk menentukan apakah terjadi overload trafik. Jika terjadi overload trafik, mekanisme penjadwalan berbasis bucket token dan prioritas digunakan untuk menjadwalkan permintaan. Saat sistem kelebihan beban, permintaan dengan prioritas tinggi dapat diproses terlebih dahulu. | |
Kontrol konkurensi | Kontrol konkurensi mencatat permintaan yang sedang diproses (yaitu, permintaan yang telah dikirim tetapi belum direspons). Ketika jumlah permintaan yang sedang diproses melebihi batas yang ditentukan, permintaan masuk berikutnya akan ditolak. | Gunakan ConcurrencyLimitingPolicy untuk mengimplementasikan pembatasan konkurensi permintaan |
Penjadwalan permintaan berbasis prioritas di bawah konkurensi terkendali | ConcurrencySchedulingPolicy menentukan apakah trafik kelebihan beban berdasarkan batas permintaan konkuren. Ketika jumlah permintaan konkuren melebihi batas atas yang ditentukan, permintaan berikutnya akan diatur dalam antrian dan dijadwalkan berdasarkan prioritas mereka. | |
Kebijakan rilis layanan progresif | Suite penjadwalan trafik ASM mendukung kebijakan rilis layanan progresif. Saat merilis layanan baru, Anda dapat mengonfigurasi kebijakan rilis progresif untuk secara bertahap meningkatkan trafik yang diterima oleh layanan. Ini memastikan bahwa layanan dirilis secara mulus. | Gunakan LoadRampingPolicy untuk mengimplementasikan rilis layanan progresif |
Penjadwalan permintaan berbasis prioritas dengan kuota permintaan tertentu | Ketika jumlah permintaan yang sedang diproses dalam satu unit waktu dalam sistem melebihi kuota yang ditentukan, permintaan berikutnya akan diatur dalam antrian dan permintaan dengan prioritas tinggi dapat diproses terlebih dahulu. | Gunakan QuotaSchedulingPolicy untuk mengimplementasikan manajemen kuota panggilan permintaan |
Konfigurasi untuk mengumpulkan metrik pemantauan suite penjadwalan trafik ASM
Jika klaster Kubernetes Anda terintegrasi dengan instance Managed Service for Prometheus atau instance Prometheus yang dibangun sendiri, Anda dapat melakukan konfigurasi berikut untuk mengumpulkan metrik pemantauan agen penjadwalan permintaan ASM. Ini membantu Anda memverifikasi apakah kebijakan tertentu dalam suite penjadwalan trafik ASM berlaku.
Layanan terkelola untuk Prometheus
Jalankan kode berikut untuk menambahkan aturan pengumpulan kustom. Untuk informasi lebih lanjut, lihat Konfigurasi penemuan layanan Prometheus lainnya.
scrape_configs:
- job_name: asm-adaptive-scheduler-stats
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_namespace
action: keep
regex: istio-system
- source_labels:
- __meta_kubernetes_pod_container_port_name
action: keep
regex: server
- source_labels:
- __meta_kubernetes_pod_container_name
action: keep
regex: aperture-agentInstance Prometheus yang dibangun sendiri
Tambahkan file JSON dari Layanan terkelola untuk Prometheus ke node scrape_configs instance Prometheus. Untuk informasi lebih lanjut, lihat Konfigurasi Prometheus.