Jika Anda telah menerapkan sejumlah besar layanan dalam satu namespace, Anda dapat menggunakan fitur rekomendasi sidecar untuk mengurangi ukuran konfigurasi sidecar semaksimal mungkin. Dalam topik ini, kluster skala besar dengan 420 pod digunakan untuk menguji dan menganalisis optimasi dorongan konfigurasi Service Mesh (ASM) setelah rekomendasi sidecar diaktifkan.
Prasyarat
Anda telah terhubung ke kluster menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Log akses bidang data dikumpulkan menggunakan Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk mengumpulkan log akses di bidang data.
Menyebarkan aplikasi di kluster uji
Dalam pengujian ini, beberapa aplikasi sleep dan HTTPBin dibuat di namespace ns-in-mesh untuk mensimulasikan sejumlah besar layanan dengan sedikit dependensi panggilan di kluster. Untuk informasi lebih lanjut tentang cara membuat namespace, lihat Kelola Namespace Global.
Setelah aplikasi HTTPBin dimulai, aplikasi HTTPBin mengekspos layanan HTTP pada port 8000. Layanan HTTP ini mensimulasikan sejumlah besar layanan yang dipanggil di kluster.
Setiap aplikasi sleep berisi kontainer curl. Anda dapat memodifikasi bidang
commanddalam file konfigurasi aplikasi sleep. Dengan cara ini, Anda dapat mengonfigurasi aplikasi sleep untuk memanggil layanan yang disediakan oleh beberapa kontainer HTTPBin sebelum aplikasi sleep memasuki keadaan tidur. Layanan yang disediakan oleh aplikasi sleep ini mensimulasikan layanan yang bergantung pada layanan lain di kluster.
Sebarkan aplikasi HTTPBin di kluster.
Buat file YAML bernama httpbin-{i} berdasarkan template berikut.
CatatanGanti
{i}dalamhttpbin-{i}dengan angka tertentu. Dengan cara ini, Anda dapat membuat beberapa aplikasi HTTPBin dengan ID berbeda. Anda dapat menggunakan template ini untuk menghasilkan sebanyak mungkin aplikasi HTTPBin sesuai kebutuhan. Jumlah maksimum aplikasi yang dapat Anda hasilkan tergantung pada ukuran kluster Anda. Dalam contoh ini, 200 aplikasi HTTPBin dihasilkan menggunakan template ini, dan 400 pod diterapkan di kluster untuk menjalankan aplikasi HTTPBin.Jalankan perintah berikut untuk membuat aplikasi httpbin-{i}:
kubectl apply -f httpbin-{i}.yamlOutput yang diharapkan:
deployment.apps/httpbin-{i} created
Sebarkan aplikasi sleep di kluster.
Buat file YAML bernama sleep-{i} berdasarkan template berikut.
CatatanGanti
{i}dalamsleep-{i}dengan angka tertentu. Dengan cara ini, Anda dapat membuat beberapa aplikasi sleep dengan ID berbeda. Dalam template ini, parameter perintahcurl httpbin-{i*10}:8000yang ditambahkan ke bidangargsmensimulasikan dependensi panggilan pada aplikasi HTTPBin yang berbeda. ID aplikasi HTTPBin yang Anda tentukan dalam parameter perintah tidak boleh melebihi ID maksimum aplikasi HTTPBin yang diterapkan. Jika tidak, panggilan valid tidak dapat dilakukan. Dalam pengujian ini, setiap aplikasi sleep bergantung pada 10 aplikasi HTTPBin. Oleh karena itu, 20 aplikasi sleep dibuat, dan 20 pod diterapkan untuk menjalankan aplikasi sleep.Jalankan perintah berikut untuk membuat aplikasi sleep-{i}:
kubectl apply -f sleep-{i}.yamlOutput yang diharapkan:
deployment.apps/sleep-{i} created
Uji dorongan konfigurasi bidang kontrol sebelum rekomendasi sidecar diaktifkan
Pengujian 1: Uji ukuran konfigurasi setiap sidecar sebelum rekomendasi sidecar diaktifkan
Jalankan perintah berikut untuk mendapatkan nama pod yang menjalankan aplikasi httpbin-0:
kubectl get pod -n ns-in-mesh | grep httpbin-0Output yang diharapkan:
NAME READY STATUS RESTARTS AGE httpbin-0-756995d867-jljgp 2/2 Running 0 9m15s httpbin-0-756995d867-whstr 2/2 Running 0 9m15sJalankan perintah berikut untuk menyalin konfigurasi sidecar di pod yang menjalankan aplikasi httpbin-0 ke file lokal:
kubectl exec -it httpbin-0-756995d867-jljgp -c istio-proxy -n ns-in-mesh -- curl -s localhost:15000/config_dump > config_dump.jsonJalankan perintah berikut untuk melihat ukuran file konfigurasi:
du -sh config_dump.jsonOutput yang diharapkan:
1.2M config_dump.jsonOutput sebelumnya menunjukkan bahwa ukuran konfigurasi sidecar adalah sekitar 1,2 MB ketika 420 pod diterapkan di kluster. Jika sidecar dibuat untuk setiap pod di kluster, konfigurasi sidecar tersebut mencapai ukuran yang cukup besar dan meningkatkan beban dorongan konfigurasi bidang kontrol.
Skenario 2: Uji efisiensi dorongan konfigurasi bidang kontrol sebelum rekomendasi sidecar diaktifkan
Buat layanan virtual untuk aplikasi httpbin-0 di konsol ASM. Ini memicu bidang kontrol untuk mendorong konfigurasi ke sidecar di bidang data. Anda dapat melihat log bidang kontrol untuk menentukan efisiensi bidang kontrol dalam satu dorongan konfigurasi. Untuk informasi lebih lanjut tentang cara mengaktifkan pengumpulan log bidang kontrol, lihat Aktifkan Pengumpulan Log Bidang Kontrol dan Peringatan Berbasis Log dalam Instance ASM Versi Lebih Lama dari 1.17.2.35.
Gunakan file YAML yang berisi konten berikut untuk membuat layanan virtual untuk aplikasi httpbin-0 di instance Service Mesh untuk menangani batas waktu permintaan. Untuk informasi lebih lanjut tentang cara membuat layanan virtual, lihat Kelola Layanan Virtual.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin-0-timeout namespace: default spec: hosts: - httpbin-0.default.svc.cluster.local http: - route: - destination: host: httpbin-0.default.svc.cluster.local timeout: 5sLihat log bidang kontrol yang baru dihasilkan.
Untuk instance ASM versi 1.17.2.35 atau lebih baru
Masuk ke konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Log Center, klik tab Control-Plane Logs untuk melihat log.
Untuk instance ASM versi lebih lama dari 1.17.2.35
Masuk ke konsol ASM.
Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM.
Di halaman detail instance ASM, pilih .
Di halaman yang muncul, klik View log di sebelah kanan Control-plane log collection.
Contoh log:
021-12-01T10:20:09.708673Z info ads CDS: PUSH for node:httpbin-27-7dd8578b46-nkmvg.default resources:227 size:169.3kB 2021-12-01T10:20:09.710469Z info ads CDS: PUSH for node:httpbin-184-65d97797db-njst5.default resources:227 size:169.3kB 2021-12-01T10:20:09.713567Z info ads CDS: PUSH for node:httpbin-86-5b64586bbf-jv92w.default resources:227 size:169.3kB 2021-12-01T10:20:09.714514Z info ads LDS: PUSH for node:httpbin-86-5b64586bbf-jv92w.default resources:16 size:70.7kB 2021-12-01T10:20:09.792732Z info ads LDS: PUSH for node:httpbin-27-7dd8578b46-nkmvg.default resources:16 size:70.7kB 2021-12-01T10:20:09.792982Z info ads LDS: PUSH for node:httpbin-184-65d97797db-njst5.default resources:16 size:70.7kB 2021-12-01T10:20:09.796430Z info ads RDS: PUSH for node:httpbin-86-5b64586bbf-jv92w.default resources:8 size:137.4kB ... 2021-12-01T10:20:13.405850Z info ads RDS: PUSH for node:httpbin-156-68b85b4f79-2znmp.default resources:8 size:137.4kB 2021-12-01T10:20:13.406154Z info ads RDS: PUSH for node:httpbin-121-7c4cff97b9-sn5g4.default resources:8 size:137.4kB 2021-12-01T10:20:13.406420Z info ads CDS: PUSH for node:httpbin-161-7bc74c5fb5-ldgn4.default resources:227 size:169.3kB 2021-12-01T10:20:13.407230Z info ads LDS: PUSH for node:httpbin-161-7bc74c5fb5-ldgn4.default resources:16 size:70.7kB 2021-12-01T10:20:13.410147Z info ads RDS: PUSH for node:httpbin-161-7bc74c5fb5-ldgn4.default resources:8 size:137.4kB 2021-12-01T10:20:13.494840Z info ads RDS: PUSH for node:httpbin-57-69b756f779-db7vv.default resources:8 size:137.4kBKonten sebelumnya menunjukkan bahwa bidang kontrol mendorong perubahan konfigurasi ke semua sidecar di bidang data setelah layanan virtual ditambahkan. Sejumlah besar log dorongan dihasilkan di kluster yang memiliki 420 pod diterapkan. Jumlah data yang didorong ke setiap sidecar sangat besar. Untuk menerapkan layanan virtual di instance Service Mesh, bidang kontrol membutuhkan waktu sekitar 4 detik untuk mendorong konfigurasi ke bidang data. Efisiensi dorongan konfigurasi bidang kontrol rendah.
Uji dorongan konfigurasi bidang kontrol setelah rekomendasi sidecar diaktifkan
Gunakan fitur rekomendasi sidecar untuk merekomendasikan sidecar untuk setiap workload di kluster uji berdasarkan analisis log akses. Ini membantu meningkatkan efisiensi dorongan konfigurasi bidang kontrol. Untuk informasi lebih lanjut, lihat Gunakan Sidecar yang Direkomendasikan Secara Otomatis Berdasarkan Analisis Log Akses.
Pengujian 1: Uji ukuran konfigurasi setiap sidecar setelah rekomendasi sidecar diaktifkan
Jalankan perintah berikut untuk menyalin konfigurasi sidecar di pod yang menjalankan aplikasi httpbin-0 ke file lokal:
kubectl exec -it httpbin-0-756995d867-jljgp -c istio-proxy -n ns-in-mesh -- curl -s localhost:15000/config_dump > config_dump.jsonJalankan perintah berikut untuk melihat ukuran file konfigurasi:
du -sh config_dump.jsonOutput yang diharapkan:
105k config_dump.jsonOutput sebelumnya menunjukkan bahwa ukuran konfigurasi sidecar berkurang lebih dari 10 kali lipat setelah rekomendasi sidecar diaktifkan di kluster yang memiliki 420 pod diterapkan. Efisiensi mendorong konfigurasi dari bidang kontrol ke sidecar di bidang data meningkat secara signifikan.
Skenario 2: Uji efisiensi dorongan konfigurasi bidang kontrol setelah rekomendasi sidecar diaktifkan
Buat layanan virtual untuk aplikasi httpbin-0 di konsol ASM lagi. Ini memicu bidang kontrol untuk mendorong konfigurasi ke sidecar di bidang data.
Hapus layanan virtual yang Anda buat sebelumnya di instance Service Mesh. Gunakan file YAML yang berisi konten berikut untuk membuat layanan virtual untuk aplikasi httpbin-0 di instance Service Mesh untuk menangani batas waktu permintaan. Untuk informasi lebih lanjut tentang cara membuat layanan virtual, lihat Kelola Layanan Virtual.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin-0-timeout namespace: default spec: hosts: - httpbin-0.default.svc.cluster.local http: - route: - destination: host: httpbin-0.default.svc.cluster.local timeout: 5sLihat log bidang kontrol yang baru dihasilkan.
Untuk instance ASM versi 1.17.2.35 atau lebih baru
Masuk ke konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Log Center, klik tab Control-Plane Logs untuk melihat log.
Untuk instance ASM versi lebih lama dari 1.17.2.35
Masuk ke konsol ASM.
Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM.
Di halaman detail instance ASM, pilih .
Di halaman yang muncul, klik View log di sebelah kanan Control-plane log collection.
Contoh log:
2021-12-01T12:12:43.498048Z info ads Push debounce stable[750] 1: 100.03379ms since last change, 100.033692ms since last push, full=true 2021-12-01T12:12:43.504270Z info ads XDS: Pushing:2021-12-01T12:12:43Z/493 Services:230 ConnectedEndpoints:421 Version:2021-12-01T12:12:43Z/493 2021-12-01T12:12:43.507451Z info ads CDS: PUSH for node:sleep-0-b68c8c5d9-5kww5.default resources:14 size:7.8kB 2021-12-01T12:12:43.507739Z info ads LDS: PUSH for node:sleep-0-b68c8c5d9-5kww5.default resources:3 size:15.5kB 2021-12-01T12:12:43.508029Z info ads RDS: PUSH for node:sleep-0-b68c8c5d9-5kww5.default resources:1 size:6.3kBKonten sebelumnya menunjukkan bahwa setiap workload di bidang data tidak akan menerima perubahan terkait layanan dengan mana workload tersebut tidak memiliki dependensi setelah rekomendasi sidecar diaktifkan. Setelah Anda membuat layanan virtual untuk aplikasi httpbin-0, bidang kontrol hanya mendorong perubahan konfigurasi ke sidecar di pod yang menjalankan aplikasi sleep-0. Ini karena hanya aplikasi sleep-0 yang memiliki dependensi dengan aplikasi httpbin-0. Dorongan konfigurasi membutuhkan waktu sekitar 0,01 detik untuk selesai. Dibandingkan dengan waktu yang dibutuhkan sebelum optimasi, efisiensi dorongan konfigurasi meningkat sekitar 400 kali. Selain itu, jumlah data yang didorong berkurang sekitar 10 kali. Ini menunjukkan bahwa fitur rekomendasi sidecar dapat secara signifikan meningkatkan efisiensi bidang kontrol dalam mendorong konfigurasi ke bidang data.
Ringkasan pengujian
Pengujian ini menggunakan beberapa aplikasi sleep dan HTTPBin untuk mensimulasikan sejumlah besar layanan dengan sedikit dependensi panggilan di kluster. Totalnya, 200 aplikasi HTTPBin, 400 pod yang menjalankan aplikasi HTTPBin, 20 aplikasi sleep, dan 20 pod yang menjalankan aplikasi sleep diterapkan. Tabel berikut menggambarkan perbandingan sebelum dan sesudah rekomendasi sidecar diaktifkan.
Item | Sebelum rekomendasi sidecar diaktifkan | Setelah rekomendasi sidecar diaktifkan |
Ukuran konfigurasi sidecar | 1,2 MB | 105 KB |
Apakah informasi tentang layanan tidak terkait didorong | Ya | Tidak |
Waktu yang dibutuhkan bidang kontrol untuk mendorong konfigurasi | Sekitar 4 detik | Sekitar 0,01 detik |