全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Optimasi dorongan konfigurasi setelah rekomendasi sidecar diaktifkan

更新时间:Jun 28, 2025

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

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 command dalam 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.

  1. Sebarkan aplikasi HTTPBin di kluster.

    1. Buat file YAML bernama httpbin-{i} berdasarkan template berikut.

      Catatan

      Ganti {i} dalam httpbin-{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.

      Kembangkan untuk melihat template YAML untuk aplikasi HTTPBin

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
      ---
      apiVersion: v1
      kind: Service
      metadata:
        creationTimestamp: null
        labels:
          app: httpbin-{i}
          service: httpbin-{i}
        name: httpbin-{i}
      spec:
        ports:
        - name: http
          port: 8000
          targetPort: 80
        selector:
          app: httpbin-0
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        creationTimestamp: null
        labels:
          app: httpbin-{i}
        name: httpbin-{i}
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: httpbin-{i}
            version: v1
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: httpbin-{i}
              version: v1
          spec:
            containers:
            - image: docker.io/kennethreitz/httpbin
              imagePullPolicy: IfNotPresent
              name: httpbin
              ports:
              - containerPort: 80
            serviceAccountName: httpbin
    2. Jalankan perintah berikut untuk membuat aplikasi httpbin-{i}:

      kubectl apply -f httpbin-{i}.yaml

      Output yang diharapkan:

      deployment.apps/httpbin-{i} created
  2. Sebarkan aplikasi sleep di kluster.

    1. Buat file YAML bernama sleep-{i} berdasarkan template berikut.

      Catatan

      Ganti {i} dalam sleep-{i} dengan angka tertentu. Dengan cara ini, Anda dapat membuat beberapa aplikasi sleep dengan ID berbeda. Dalam template ini, parameter perintah curl httpbin-{i*10}:8000 yang ditambahkan ke bidang args mensimulasikan 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.

      Kembangkan untuk melihat template YAML untuk aplikasi sleep

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
      ---
      apiVersion: v1
      kind: Service
      metadata:
        creationTimestamp: null
        labels:
          app: sleep-{i}
          service: sleep-{i}
        name: sleep-{i}
      spec:
        ports:
        - name: http
          port: 80
          targetPort: 0
        selector:
          app: sleep-{i}
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        creationTimestamp: null
        labels:
          app: sleep-{i}
        name: sleep-{i}
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep-{i}
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: sleep-{i}
          spec:
            containers:
            - args:
              - curl httpbin-{i*10}:8000; curl httpbin-{i*10+1}:8000; curl httpbin-{i*10+2}:8000; curl httpbin-{i*10+3}:8000;
                curl httpbin-{i*10+4}:8000; curl httpbin-{i*10+5}:8000; curl httpbin-{i*10+6}:8000; curl httpbin-{i*10+7}:8000;
                curl httpbin-{i*10+8}:8000; curl httpbin-{i*10+9}:8000; sleep 3650d
              command:
              - /bin/sh
              - -c
              image: curlimages/curl
              imagePullPolicy: IfNotPresent
              name: sleep
              volumeMounts:
              - mountPath: /etc/sleep/tls
                name: secret-volume
            serviceAccountName: sleep
            terminationGracePeriodSeconds: 0
            volumes:
            - name: secret-volume
              secret:
                optional: true
                secretName: sleep-secret
    2. Jalankan perintah berikut untuk membuat aplikasi sleep-{i}:

      kubectl apply -f sleep-{i}.yaml

      Output 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

  1. Jalankan perintah berikut untuk mendapatkan nama pod yang menjalankan aplikasi httpbin-0:

    kubectl get pod -n ns-in-mesh | grep httpbin-0

    Output yang diharapkan:

    NAME                         READY   STATUS    RESTARTS   AGE
    httpbin-0-756995d867-jljgp   2/2     Running   0          9m15s
    httpbin-0-756995d867-whstr   2/2     Running   0          9m15s
  2. 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.json
  3. Jalankan perintah berikut untuk melihat ukuran file konfigurasi:

    du -sh config_dump.json

    Output yang diharapkan:

    1.2M    config_dump.json

    Output 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.

  1. 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: 5s
                            
  2. Lihat log bidang kontrol yang baru dihasilkan.

    Untuk instance ASM versi 1.17.2.35 atau lebih baru

    1. Masuk ke konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih Observability Management Center > Log Center.

    3. Di halaman Log Center, klik tab Control-Plane Logs untuk melihat log.

    Untuk instance ASM versi lebih lama dari 1.17.2.35

    1. Masuk ke konsol ASM.

    2. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    3. Di halaman Mesh Management, klik nama instance ASM.

    4. Di halaman detail instance ASM, pilih ASM Instance > Base Information.

    5. 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.4kB

    Konten 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

  1. 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.json
  2. Jalankan perintah berikut untuk melihat ukuran file konfigurasi:

    du -sh config_dump.json

    Output yang diharapkan:

    105k    config_dump.json

    Output 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.

  1. 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: 5s
                            
  2. Lihat log bidang kontrol yang baru dihasilkan.

    Untuk instance ASM versi 1.17.2.35 atau lebih baru

    1. Masuk ke konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih Observability Management Center > Log Center.

    3. Di halaman Log Center, klik tab Control-Plane Logs untuk melihat log.

    Untuk instance ASM versi lebih lama dari 1.17.2.35

    1. Masuk ke konsol ASM.

    2. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    3. Di halaman Mesh Management, klik nama instance ASM.

    4. Di halaman detail instance ASM, pilih ASM Instance > Base Information.

    5. 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.3kB

    Konten 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