Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Sidecar kaynağı uygulandıktan sonra yapılandırma gönderimi optimizasyonunun etkileri

Son Güncelleme:Oct 07, 2026

Bir Sidecar kaynağı, Alibaba Cloud Service Mesh (ASM) kontrol düzleminin her veri düzlemi Sidecar'ına gönderdiği yapılandırmayı sınırlar. Sidecar kaynağı öneri özelliği bu yapılandırmayı en aza indirir. 420 pod içeren bir küme üzerinde yapılan test, önerilen bir Sidecar kaynağı uygulanmadan önce ve sonra yapılandırma gönderimi verimliliğini analiz eder.

Önkoşullar

Test ortamı

Test, ASM örneği tarafından yönetilen tek bir ad alanında birden çok sleep ve httpbin uygulaması dağıtır. Her test poduna bir Sidecar eklenir ve küme, aralarında yalnızca birkaç çağrı bağımlılığı bulunan çok sayıda hizmet içerir. Bu konu, örnek bildirimler, komutlar ve kontrol düzlemi günlükleri tarafından başvurulan default ad alanını kullanır. Bir ASM örneğindeki ad alanları hakkında daha fazla bilgi için bkz. Global ad alanlarını yönetme.

  • httpbin uygulamaları — httpbin uygulaması başladıktan sonra 8000 bağlantı noktasında bir HTTP hizmeti sunar. Uygulama, küme içinde çağrılan çok sayıda hizmeti simüle eder. Test, 200 httpbin uygulama dağıtımı oluşturur ve kümede 400 httpbin uygulama podu dağıtır.

  • sleep uygulamaları — sleep uygulaması bir curl konteyneri içerir. Sleep uygulamasının uyumadan önce birden çok httpbin konteyneri tarafından sağlanan hizmetleri çağırması için uygulama dağıtımının command alanını değiştirin. Uygulama, kümedeki diğer hizmetlere bağımlı olan bir hizmeti simüle eder. Test, her sleep uygulamasına 10 httpbin uygulamasına bağımlılık atar. Bu nedenle toplamda 20 sleep uygulama dağıtımı ve 20 sleep podu dağıtılır.

  • Küme ölçeği — Test kümesinde toplam 420 pod çalışır.

Test uygulamalarını kümede dağıtma

  1. Kümede birden çok httpbin uygulaması dağıtın.

    1. Aşağıdaki YAML içeriğini kullanarak httpbin-{i}.yaml adlı bir YAML dosyası oluşturun.

      Not

      httpbin-{i} ifadesindeki {i} değerini belirli bir sayıyla değiştirerek numaralandırılmış birden çok httpbin hizmeti oluşturun. Bu şablonu istediğiniz sayıda httpbin uygulaması oluşturmak için kullanın. Maksimum uygulama sayısı kümenizin boyutuna bağlıdır.

      Aşağıdaki YAML içeriği, numaralandırılmış bir httpbin uygulamasının ServiceAccount, Service ve Deployment tanımlarını içerir:

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
        namespace: default
      ---
      apiVersion: v1
      kind: Service
      metadata:
        creationTimestamp: null
        labels:
          app: httpbin-{i}
          service: httpbin-{i}
        name: httpbin-{i}
        namespace: default
      spec:
        ports:
        - name: http
          port: 8000
          targetPort: 80
        selector:
          app: httpbin-{i}
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        creationTimestamp: null
        labels:
          app: httpbin-{i}
        name: httpbin-{i}
        namespace: default
      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. httpbin-{i} uygulamasını oluşturmak için aşağıdaki komutu çalıştırın.

      kubectl apply -f httpbin-{i}.yaml -n default

      Beklenen çıktı:

      deployment.apps/httpbin-{i} created
  2. Kümede sleep uygulamaları dağıtın.

    1. Aşağıdaki YAML içeriğini kullanarak sleep-{i}.yaml adlı bir YAML dosyası oluşturun.

      Not

      sleep-{i} ifadesindeki {i} değerini belirli bir sayıyla değiştirerek numaralandırılmış birden çok sleep hizmeti oluşturun. Bu şablonda, farklı httpbin uygulamalarına yapılan çağrıları simüle etmek için sleep uygulaması dağıtımının args alanına curl httpbin-{i*10}:8000 komut parametresini eklersiniz. Çağrdığınız httpbin hizmetinin numarası, daha önce dağıttığınız httpbin hizmetlerinin sayısını aşmamalıdır. Aksi takdirde çağrı geçersiz olur.

      Aşağıdaki YAML içeriği, numaralandırılmış bir sleep uygulamasının ServiceAccount, Service ve Deployment tanımlarını içerir:

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
        namespace: default
      ---
      apiVersion: v1
      kind: Service
      metadata:
        creationTimestamp: null
        labels:
          app: sleep-{i}
          service: sleep-{i}
        name: sleep-{i}
        namespace: default
      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}
        namespace: default
      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. sleep-{i} uygulamasını oluşturmak için aşağıdaki komutu çalıştırın.

      kubectl apply -f sleep-{i}.yaml -n default

      Beklenen çıktı:

      deployment.apps/sleep-{i} created

Sidecar kaynağı uygulanmadan önce kontrol düzlemi yapılandırma gönderimini test etme

Bir Sidecar kaynağı uygulamadan önce test kümesinde iki temel değeri ölçün: Tek bir poddaki Sidecar yapılandırmasının boyutu ve ASM kontrol düzleminin bir yapılandırma gönderimini tamamlaması için gereken süre.

Sidecar kaynağı uygulanmadan önce Sidecar yapılandırma boyutu

  1. httpbin-0 uygulamasının pod adını belirlemek için aşağıdaki komutu çalıştırın.

    kubectl get pod -n default | grep httpbin-0

    Beklenen çıktı:

    NAME                         READY   STATUS    RESTARTS   AGE
    httpbin-0-756995d867-jljgp   2/2     Running   0          9m15s
    httpbin-0-756995d867-whstr   2/2     Running   0          9m15s
  2. httpbin-0 uygulamasını çalıştıran podun Sidecar yapılandırmasını yerel makinenize indirmek için aşağıdaki komutu çalıştırın. httpbin-0-756995d867-jljgp değerini önceki adımda döndürülen bir pod adıyla değiştirin.

    kubectl exec -it httpbin-0-756995d867-jljgp -c istio-proxy -n default -- curl -s localhost:15000/config_dump > config_dump.json
  3. Sidecar yapılandırma dosyasının boyutunu görüntülemek için aşağıdaki komutu çalıştırın.

    du -sh config_dump.json

    Beklenen çıktı:

    1.2M    config_dump.json

Beklenen çıktı, kümede 420 pod dağıtıldığı test senaryosunda Sidecar yapılandırmasının yaklaşık 1,2 MB olduğunu gösterir. Kümedeki her pod için bir Sidecar dağıtılırsa, büyük miktardaki Sidecar yapılandırması kontrol düzlemindeki gönderim yükünü artırır.

Sidecar kaynağı uygulanmadan önce kontrol düzlemi gönderim verimliliği

Kontrol düzleminden veri düzlemindeki Sidecar'lara tek bir yapılandırma gönderimini tetiklemek için ASM'deki httpbin-0 hizmetine yeni bir sanal hizmet kuralı uygulayın. Kontrol düzlemi günlüklerinin içeriği, kontrol düzleminin tek bir gönderimi ne kadar verimli tamamladığını gösterir. Önkoşullar bölümünde açıklandığı gibi kontrol düzlemi günlük toplama zaten etkinleştirilmiş olmalıdır.

  1. httpbin-0 hizmetine zaman aşımı işlemi uygulayan ASM'de bir sanal hizmet oluşturmak için aşağıdaki YAML içeriğini kullanın. Sanal hizmet oluşturma hakkında daha fazla bilgi için bkz. Sanal hizmetleri yönetme.

    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. Kontrol düzlemi tarafından oluşturulan günlükleri görüntüleyin. Konsol gezinme yolu, ASM örneğinizin sürümüne bağlıdır.

    ASM örneği sürümü 1.17.2.35 veya üzeri

    1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

    2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde Observability Management Center > Log Center seçeneklerini seçin.

    3. Log Center sayfasında günlükleri görüntülemek için Control-Plane Logs sekmesini tıklayın.

    ASM örneği sürümü 1.17.2.35'ten önceki sürümler

    1. ASM konsolu üzerinde oturum açın.

    2. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

    3. Mesh Management sayfasında hedef örneğin adını tıklayın.

    4. Ağ ayrıntıları sayfasında Instance Information > Base Information seçeneklerini seçin.

    5. Basic Information sayfasında, Control-plane log collection öğesinin sağındaki View log öğesini tıklayın.

    Aşağıdaki kod parçacığında örnek günlükler gösterilmektedir:

    2021-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

420 podun dağıtıldığı test ortamında, bir sanal hizmet eklemek kontrol düzleminin değişikliği veri düzlemindeki her Sidecar'a göndermesine neden olur. Bu durum çok sayıda gönderim günlüğü oluşturur ve her gönderim büyük miktarda veri aktarır. ASM'de bir sanal hizmet kuralı uygulamak, kontrol düzleminin yaklaşık 4 saniye boyunca gönderim yapmasını gerektirir; bu da kontrol düzlemindeki düşük gönderim verimliliğini gösterir.

Sidecar kaynağı uygulandıktan sonra kontrol düzlemi yapılandırma gönderimini test etme

Aynı test kümesinde önerilen bir Sidecar kaynağı uygulayın ve ardından sonuçları temel değerlerle karşılaştırmak için iki ölçümü tekrarlayın.

  1. Erişim günlüğü analizine dayalı olarak Sidecar kaynaklarını otomatik olarak öneren özelliği kullanarak test kümesindeki her iş yükü için bir Sidecar kaynağı önerin ve uygulayın. Daha fazla bilgi için bkz. Erişim günlüğü analizine dayalı olarak otomatik olarak önerilen Sidecar kaynaklarını kullanma.

Sidecar kaynağı uygulandıktan sonra Sidecar yapılandırma boyutu

  1. httpbin-0 uygulamasını çalıştıran podun Sidecar yapılandırmasını yerel makinenize indirmek için aşağıdaki komutu çalıştırın. httpbin-0-756995d867-jljgp değerini httpbin-0 uygulamasını şu anda çalıştıran bir podun adıyla değiştirin.

    kubectl exec -it httpbin-0-756995d867-jljgp -c istio-proxy -n default -- curl -s localhost:15000/config_dump > config_dump.json
  2. Sidecar yapılandırma dosyasının boyutunu görüntülemek için aşağıdaki komutu çalıştırın.

    du -sh config_dump.json

    Beklenen çıktı:

    105k    config_dump.json

Beklenen çıktı, kümede 420 podun dağıtıldığı senaryoda erişim günlüğü analizine dayalı olarak Sidecar kaynaklarını otomatik olarak öneren özelliğin Sidecar yapılandırmasını 10 katından fazla azaltarak 105 KB'ye düşürdüğünü gösterir. Bu durum, kontrol düzleminden veri düzlemindeki Sidecar'lara yapılan yapılandırma gönderimlerinin verimliliğini büyük ölçüde artırır.

Sidecar kaynağı uygulandıktan sonra kontrol düzlemi gönderim verimliliği

Kontrol düzleminden veri düzlemindeki Sidecar'lara tek bir yapılandırma gönderimini tetiklemek için ASM'deki httpbin-0 hizmetine yeniden yeni bir sanal hizmet kuralı uygulayın.

  1. Optimizasyondan önce ASM'de oluşturduğunuz httpbin-0-timeout sanal hizmetini silin. Ardından, kontrol düzleminin httpbin-0 hizmeti için bir kez daha yapılandırma gönderimi gerçekleştirmesi amacıyla aynı YAML içeriğini kullanarak Sidecar kaynağı uygulanmadan önce kontrol düzlemi gönderim verimliliği bölümündeki gibi sanal hizmeti yeniden oluşturun. Sanal hizmet oluşturma hakkında daha fazla bilgi için bkz. Sanal hizmetleri yönetme.

  2. Kontrol düzlemi tarafından oluşturulan günlükleri görüntüleyin. Konsol gezinme yolu, ASM örneğinizin sürümüne bağlıdır.

    ASM örneği sürümü 1.17.2.35 veya üzeri

    1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

    2. Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde Observability Management Center > Log Center seçeneklerini seçin.

    3. Log Center sayfasında günlükleri görüntülemek için Control-Plane Logs sekmesini tıklayın.

    ASM örneği sürümü 1.17.2.35'ten önceki sürümler

    1. ASM konsolu üzerinde oturum açın.

    2. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneklerini seçin.

    3. Mesh Management sayfasında hedef örneğin adını tıklayın.

    4. Ağ ayrıntıları sayfasında Instance Information > Base Information seçeneklerini seçin.

    5. Basic Information sayfasında, Control-plane log collection öğesinin sağındaki View log öğesini tıklayın.

    Aşağıdaki kod parçacığında örnek günlükler gösterilmektedir:

    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

ASM tarafından önerilen Sidecar kaynağı uygulandıktan sonra, veri düzlemindeki her iş yükü artık bağımlı olmadığı hizmetlerle ilgili değişiklikleri almaz. httpbin-0 hizmetine bir sanal hizmet kuralı uygulandıktan sonra, kontrol düzlemi yapılandırma değişikliğini yalnızca sleep-0 uygulamasının podundaki Sidecar'a gönderir çünkü httpbin-0 hizmetine yalnızca sleep-0 uygulaması bağımlıdır. Sanal hizmet kuralının tetiklediği yapılandırma gönderimi yalnızca yaklaşık 0,01 saniye sürer; bu da optimizasyondan önceki süreden yaklaşık 400 kat daha hızlıdır. Değişikliğin veri hacmi de yaklaşık 10 kat azalır. Bu durum, kontrol düzleminden veri düzlemine yapılan yapılandırma gönderimlerinin verimliliğini büyük ölçüde artırır.

Karşılaştırma özeti

Aşağıdaki tabloda, önerilen bir Sidecar kaynağı uygulanmadan önce ve sonra bu test ortamında ölçülen değerler karşılaştırılmaktadır.


Ölçüm


Sidecar kaynağı optimizasyonu olmadan


Sidecar kaynağı optimizasyonu ile


Sidecar yapılandırma boyutu


1,2 MB


105 KB


Bağımlılığı olmayan hizmetlere gönderimler


Evet


Hayır


Kontrol düzlemi yapılandırma gönderim süresi


Yaklaşık 4 saniye


Yaklaşık 0,01 saniye