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
istiod
etkisini 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
- Varsayılan ayarlara sahip bir
istiod
örnek - Yatay pod otomatik ölçeklendirme devre dışı
- İki ağ eklentisiyle test edilmiştir: Azure Container Networking Interface (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 v3 (16 vCPU, 64 GB bellek)
- Kubernetes sürümü: 1.28.5
- istio düzeltmesi: asm-1-19
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ı |
---|---|
![]() |
![]() |
![]() |
![]() |
Ö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
2
izin 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}}'
Not
Kanarya yükseltmesi sırasında hpa ayarlarının her iki düzeltmeye nasıl uygulandığı hakkında ayrıntılı bilgi için Istio eklenti yükseltme belgelerine bakın.
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
exportTo
sınırlayın.
Azure Kubernetes Service