Aracılığıyla paylaş


Istio hizmet mesh eklentisi performansı ve ölçeklendirme

Istio tabanlı hizmet ağı eklentisi mantıksal olarak bir denetim düzlemine (istiod) ve bir veri düzlemine ayrılır. Veri düzlemi, iş yükü podları içindeki Envoy sepet proxy'lerinden oluşur. Istiod, bu Elçi proxy'lerini yönetir ve yapılandırr. Bu makalede kaynak tüketimi, sepet kapasitesi ve gecikme yükü dahil olmak üzere asm-1-19 düzeltmesi için hem denetim hem de veri düzleminin performansı gösterilir. Buna ek olarak, ağır yük dönemlerinde kaynaklar üzerindeki olası yükü ele almak için öneriler sağlar. Bu makalede ayrıca denetim düzlemi ve ağ geçitleri için ölçeklendirmenin nasıl özelleştirileceği de ele alınır.

Kontrol düzlemi performansı

Istiod'un CPU ve bellek gereksinimleri , dağıtım ve yapılandırma değişikliklerinin hızıyla ve bağlı proxy sayısıyla ilişkilidir. Test edilen senaryolar:

  • Pod değişim sıklığı: pod değişim sıklığının üzerindeki istiodetkisini inceler. Değişkenleri azaltmak için tüm sepetler için yalnızca bir hizmet kullanılır.
  • Birden çok hizmet: Istiod'un yönetebileceği maksimum sepetler (sepet kapasitesi) üzerinde birden çok hizmetin etkisini inceler ve her hizmetin sepetleri vardır N ve toplam maksimum değeri alır.

Test belirtimleri

Pod değişim sıklığı

ClusterLoader2 çerçevesi, Sepet değişim sıklığı olduğunda Istiod'un yönetebileceği maksimum sepet sayısını belirlemek için kullanılmıştır. Değişim sıklığı yüzdesi, test sırasında aşağı/yukarı hareket eden sepetlerin yüzdesi olarak tanımlanır. Örneğin, 10.000 sepet için %50 değişim sıklığı, 5.000 sepetin devre dışı bırakıldığı, ardından 5.000 sepette değişim olduğu anlamına gelir. Test edilen değişim sıklığı yüzdeleri, dağıtım dağıtımları () sırasındaki tipik değişim sıklığı yüzdesine göremaxUnavailable belirlendi. Değişim sıklığı oranı, değişim sıklığı işlemini tamamlamak için geçen gerçek süre boyunca değişim sıklığı (yukarı ve aşağı) toplam sepet sayısı belirlenerek hesaplandı.

Sepet kapasitesi ve Istiod CPU ve bellek

Azure CNI katmanı

Değişim Sıklığı (%) Değişim Sıklığı (sepet/sn) Sepet Kapasitesi Istiod Belleği (GB) Istiod CPU
0 -- 25000 32,1 15
25 31.2 15000 22.2 15
50 31.2 15000 25,4 15

Cilium ile Azure CNI katmanı

Değişim Sıklığı (%) Değişim Sıklığı (sepet/sn) Sepet Kapasitesi Istiod Belleği (GB) Istiod CPU
0 -- 30000 41.2 15
25 41.7 25000 36.1 16
50 37.9 25000 42.7 16

Birden çok hizmet

ClusterLoader2 çerçevesi , 1.000 hizmetle yönetilebilen en fazla sepet istiod sayısını belirlemek için kullanıldı. Sonuçlar, pod değişim sıklığı senaryosundaki %0 değişim sıklığı testiyle (bir hizmet) karşılaştırılabilir. Her hizmetin toplam maksimum sepet sayısına katkıda bulunan sepetleri vardı N . API Server kaynak kullanımı, eklentiden önemli bir stres olup olmadığını belirlemek için gözlemlendi.

Sepet kapasitesi

Azure CNI Katmanı Cilium ile Azure CNI Katmanı
20000 20000

CPU ve bellek

Kaynak Azure CNI Katmanı Cilium ile Azure CNI Katmanı
API Sunucusu Belleği (GB) 38.9 9.7
API Server CPU 6.1 4.7
Istiod Belleği (GB) 40.4 42.6
Istiod CPU 15 16

Veri düzlemi performansı

İstek boyutu, ara sunucu çalışan iş parçacığı sayısı ve istemci bağlantısı sayısı gibi çeşitli faktörler sepet performansını etkiler. Ayrıca, ağ üzerinden akan tüm istekler istemci tarafı proxy'sini ve ardından sunucu tarafı ara sunucusunu geçirir. Bu nedenle, veri düzlemi performansını belirlemek için gecikme süresi ve kaynak tüketimi ölçülür.

Fortio yükü oluşturmak için kullanıldı. Test, eklentiyle kullanılmak üzere değiştirilmiş olan Istio benchmark deposuyla gerçekleştirilen bir testtir.

Test belirtimleri

  • İki ağ eklentisiyle test edilmiştir: Azure CNI Yer Paylaşımı ve Cilium ile Azure CNI Katmanı (büyük ölçekli kümeler için önerilen ağ eklentileri)
  • Düğüm SKU'su: Standart D16 v5 (16 vCPU, 64 GB bellek)
  • Kubernetes sürümü: 1.28.5
  • İki proxy çalışanı
  • 1 KB yük
  • Farklı istemci bağlantılarında saniyede 1.000 sorgu (QPS)
  • http/1.1 protokol ve karşılıklı Aktarım Katmanı Güvenliği (TLS) etkin
  • 26 veri noktası toplandı

CPU ve bellek

Tüm ağ eklentisi senaryolarında 16 istemci bağlantısı ve 1.000 QPS için hem istemci hem de sunucu proxy'si için bellek ve CPU kullanımı kabaca 0,4 vCPU ve 72 MB'tır.

Gecikme süresi

Sepet Envoy proxy'si, istemciye yanıt verdikten sonra ham telemetri verilerini toplar ve bu da isteğin toplam işlem süresini doğrudan etkilemez. Ancak, bu işlem sonraki isteği işlemenin başlamasını geciktirerek kuyruk bekleme sürelerine katkıda bulunur ve ortalama ve kuyruk gecikme sürelerini etkilemektedir. Trafik düzenine bağlı olarak gerçek kuyruk gecikme süresi değişir.

Aşağıdaki sonuçlar, P90 ve P99 gecikme süresini göstererek veri yoluna sepet proxy'leri eklemenin etkisini değerlendirir.

  • Sepet trafik yolu: istemci --> istemci-sepet --> sunucu-sepet --> sunucu
  • Temel trafik yolu: istemci --> sunucu

Istio eklentisi ve AKS sürümleri arasında veri düzlemi gecikme süresi performansının karşılaştırması burada bulunabilir.

Azure CNI Katmanı Cilium ile Azure CNI Katmanı
Azure CNI Yer Paylaşımı için P99 gecikme süresini karşılaştıran diyagram. Azure CNI Katman için P99 gecikme süresini Cilium ile karşılaştıran diyagram.
Azure CNI Katman için P90 gecikme süresini karşılaştıran diyagram. Azure CNI Katmanı için P90 gecikme süresini Cilium ile karşılaştıran diyagram.

Ölçeklendirme

Yatay pod otomatik ölçeklendirme özelleştirmesi

ve giriş ağ geçidi podları için istiod yatay pod otomatik ölçeklendirmesi (HPA) etkinleştirilir. ve ağ geçitleri için istiod varsayılan yapılandırmalar şunlardır:

  • En Az Çoğaltma: 2
  • En Fazla Çoğaltma: 5
  • CPU Kullanımı: %80

Not

ile PodDisruptionBudgetçakışmaları önlemek için, eklenti aşağıdaki ilk varsayılan ayarının ayarlanmasına minReplicas 2izin vermez.

Ve giriş ağ geçidi HPA kaynakları şunlardır istiod :

NAMESPACE           NAME                                         REFERENCE
aks-istio-ingress   aks-istio-ingressgateway-external-asm-1-19   Deployment/aks-istio-ingressgateway-external-asm-1-19

aks-istio-ingress   aks-istio-ingressgateway-internal-asm-1-19   Deployment/aks-istio-ingressgateway-internal-asm-1-19

aks-istio-system    istiod-asm-1-19                              Deployment/istiod-asm-1-19

HPA yapılandırması, düzeltme ekleri ve doğrudan düzenlemeler aracılığıyla değiştirilebilir. Örnek:

kubectl patch hpa aks-istio-ingressgateway-external-asm-1-19 -n aks-istio-ingress --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'

Hizmet girişi

Istio'nun ServiceEntry özel kaynak tanımı, Istio'nun iç hizmet kayıt defterine başka hizmetler eklenmesini sağlar. ServiceEntry, ağ içinde bulunan hizmetlerin belirtilen hizmetleri yönlendirmesine veya erişmesine izin verir. Ancak, alanı DNS olarak ayarlanmış birden çok ServiceEntries resolution yapılandırması, Etki Alanı Adı Sistemi (DNS) sunucularında ağır yüke neden olabilir. Aşağıdaki öneriler yükü azaltmaya yardımcı olabilir:

  • resolution: NONE Ara sunucu DNS aramalarını tamamen önlemek için öğesine geçin. Çoğu kullanım örneği için uygundur.
  • Çözümlenen etki alanlarını denetlerseniz TTL'yi (Yaşam Süresi) artırın.
  • ServiceEntry kapsamını ile exportTosınırlayın.