Azure Kubernetes Service (AKS) ölçeklendirmeye genel bakış — HPA, VPA, Küme Otomatik Ölçeklendiricisi ve KEDA

uygulamaları Azure Kubernetes Service (AKS) çalıştırdığınızda podları, pod kaynaklarını, düğümleri veya olay temelli iş yüklerini talepteki değişikliklerle eşleşecek şekilde ölçeklendikleyebilirsiniz. AKS, el ile ölçeklendirme, Yatay Pod Otomatik Ölçeklendiricisi (HPA), Dikey Pod Otomatik Ölçeklendiricisi (VPA), Küme Otomatik Ölçeklendiricisi, Kubernetes Olay Odaklı Otomatik Ölçeklendirme (KEDA), düğüm otomatik sağlama ve Azure Container Instances (ACI) ile ani ölçeklendirmeyi destekler.

Doğru ölçeklendirme yöntemini seçin

Ölçeklendirme yöntemi En iyi kullanım alanları Anahtar ölçüm Guide
Yatay Pod Otomatik Ölçeklendiricisi (HPA) Değişken talebe sahip durum bilgisi olmayan veya bölümlenebilir iş yükleri CPU kullanımı, RPS, kuyruk derinliği Kubernetes'te Yatay Pod Otomatik Ölçeklendirme'yi (HPA) ne zaman kullanmalıyım?
Dikey Pod Otomatik Ölçeklendiricisi (VPA) Paralelleştirilebilir olmayan iş yükleri; pod kaynak isteklerini doğru boyutlandırma CPU/bellek kaynağı kullanımı AKS'de Dikey Pod Otomatik Ölçeklendiricisi kullanma
Küme Otomatik Ölçeklendiricisi Pod'lar Pending durumunda kaldığında düğüm düzeyinde kapasite Beklemedeki podlar AKS'de Küme Otomatik Ölçeklendiricisi'ni kullanma
Düğüm otomatik sağlama (NAP) Doğru boyutlu VM kapasitesine ihtiyaç duyan bekleyen iş yükleri Bekleyen pod kaynağı gereksinimleri Düğüm otomatik sağlamaya genel bakış
KEDA Olay odaklı iş yükleri; sıfıra kadar ölçeklendirme gerektiren Kuyruk uzunluğu, olay birikimi KEDA eklentisine genel bakış
ACI seri ölçeklendirme Sanal düğüm sınırlamalarını karşılayan ani talep içeren Linux iş yükleri Talep patlaması Azure Container Instances ile sanal düğümler oluşturma

Her ölçeklendirme yöntemi ne zaman kullanılır?

  • İş yükünüz birden çok özdeş çoğaltma çalıştırabildiğinde ve CPU, bellek veya istek hızına göre dalgalanmalar talep ettiğinde HPA kullanın.
  • İş yükünüz yatay olarak ölçeklendirilemiyorsa (paralelleştirilebilir olmadığında) veya daha iyi zamanlama için kaynak isteklerini doğru boyutlandırmanız gerektiğinde VPA'yı kullanın.
  • Önceden tanımlanmış düğüm havuzlarınız varsa ve bekleyen pod talebine göre düğüm eklemeniz veya kaldırmanız gerektiğinde Küme Otomatik Ölçeklendiricisi'ni kullanın.
  • Düğüm havuzlarını el ile yapılandırmadan otomatik VM SKU seçimi ve düğüm sağlama istediğinizde NAP kullanın.
  • Ölçeklendirmenin dış olaylara (kuyruklar, akışlar, iletiler) yanıt vermesi gerektiğinde veya sıfıra ölçekleme özelliğine ihtiyacınız olduğunda KEDA kullanın.
  • VM sağlamayı beklemeden (genellikle 2-5 dakika) Linux iş yükleri için hızlı kapasite genişletmeye ihtiyacınız olduğunda ACI hızlı ölçeklendirmeyi kullanın.

Hızlı öneri

Çoğu üretim iş yükü için NAP, VPA ve KEDA'yı önceden yapılandıran AKS Otomatik ile başlayın. AKS Standard'da bu özellikleri açıkça etkinleştirip yapılandırabilirsiniz.

Podları veya düğümleri el ile ölçeklendirme

Uygulamanızın kullanılabilir kaynaklardaki değişikliklere nasıl yanıt verdiğini test etmek veya sabit kapasiteyi korumak için pod çoğaltmalarını ve düğümlerini el ile ölçeklendikleyebilirsiniz. Manuel olarak ölçeklendirmek için gerekli replika veya düğüm sayısını belirleyin. Kubernetes pod’ları oluşturur veya kaldırır; AKS ise ilgili düğüm havuzuna düğüm ekler veya bu havuzdan düğüm kaldırır.

Düğümlerin sayısını azalttığınızda AKS, kümenin hesaplama türüne yönelik ilgili Azure Compute API'sini çağırır. Sanal Makine Ölçek Kümeleri üzerinde oluşturulan kümeler için, Sanal Makine Ölçek Kümeleri API hangi düğümlerin kaldırılacağını belirler. Daha fazla bilgi için Sanal Makine Ölçek Kümeleri SSS bölümüne bakın.

Başlamak için bkz:

Yatay Pod Otomatik Ölçeklendiricisi

İş yükünüz birden fazla aynı kopya olarak çalışabiliyorsa ve talebin dalgalandığı durumlarda HPA kullanın. CPU veya bellek, uygulama ölçümleri (saniye başına istek sayısı, gecikme süresi) veya dış kuyruk ve kapsam ölçümlerine göre ölçeklendirilir. Çoğaltmalar mevcut düğüm kapasitesini aştığında AKS Otomatik'te önceden yapılandırılmış NAP özelliğini kullanın veya AKS Standard'da Küme Otomatik Ölçeklendiricisi veya NAP'yi yapılandırın.

HPA ve VPA'yi aynı CPU veya bellek ölçümlerinde kullanmayın. Her iki otomatik ölçeklendiriciyi de kullanmak için öneri modunda VPA'yı kullanın veya HPA'yı ayrı özel ölçümleri kullanacak şekilde yapılandırın.

Yatay Pod Otomatik Ölçeklendiricisi'nin AKS ile nasıl çalıştığını gösteren diyagramın ekran görüntüsü.

Daha fazla bilgi edinin: Kubernetes'te Yatay Pod Otomatik Ölçeklendirme'yi (HPA) ne zaman kullanmalıyım?

Ayrıca bkz. Pod CPU ve bellek isteklerini doğru boyutlandırmak için AKS'de Dikey Pod Otomatik Ölçeklendiricisi'ni kullanma .

Dikey Pod Otomatik Ölçekleyici

Dikey Pod Otomatik Ölçeklendiricisi pod CPU ve bellek kullanımını analiz eder ve uygun kaynak isteklerini önerir veya uygular. Replika ekleyerek verimli bir şekilde ölçeklenemeyen iş yüklerini doğru şekilde boyutlandırmak veya zamanlamayı ve kaynak kullanımını iyileştirmek için VPA kullanın.

Güncelleme moduna bağlı olarak VPA, podlar oluşturulurken önerileri uygulayabilir veya podları güncellenmiş kaynak istekleriyle tahliye edip yeniden oluşturabilir. VPA'nın değişiklikleri otomatik olarak uygulamasına izin vermeden önce iş yükü kullanılabilirlik gereksinimlerini gözden geçirin.

Başlamak için bkz. AKS'de Dikey Pod Otomatik Ölçeklendiricisi'ni kullanma.

Küme Otomatik Ölçeklendiricisi

Küme Otomatik Ölçeklendiricisi, pod zamanlama gereksinimlerine göre düğüm havuzundaki düğüm sayısını ayarlar. Düğüm kapasitesi yetersiz olduğundan podlar zamanlanamadıklarında düğüm ekler ve iş yükleri başka bir yerde çalıştırılabildiğinde az kullanılan düğümleri kaldırır.

Küme Otomatik Ölçeklendiricisi'nin AKS ile nasıl çalıştığını gösteren diyagramın ekran görüntüsü.

Küme Otomatik Ölçeklendiricisi yaygın olarak HPA ile kullanılır. HPA, pod çoğaltmalarının sayısını iş yükü talebine göre ayarlarken, Küme Otomatik Ölçeklendiricisi bu podları karşılamak için düğüm kapasitesini ayarlar.

Başlamak için bkz. AKS'de Küme Otomatik Ölçeklendiricisi'ni kullanma.

Yatay ölçeklendirme olayları

Bir düğüm havuzunda bir pod için yeterli hesaplama kaynağı yoksa pod Pending durumda kalır. Küme Otomatik Ölçeklendiricisi, düğüm havuzu kaynak kısıtlamaları nedeniyle zamanlanamayan podları algıladığında, düğüm havuzundaki düğüm sayısını artırır. Kubernetes, yeni düğümler oluşturulup hazır duruma geldikten sonra bekleyen podları bu düğümlere yerleştirir.

VM tabanlı düğümlerin sağlanması birkaç dakika sürebilir. Ani talep artışları olan iş yükleri için sanal düğümler ve Azure Container Instances kullanmayı göz önünde bulundurun.

İçeri ölçeklendirme olayları

Küme Otomatik Ölçeklendirici, düğümleri düşük kullanım açısından izler ve üzerlerindeki pod'ların diğer düğümlerde çalıştırılıp çalıştırılamayacağını belirler. Bir düğüme artık ihtiyaç duyulmadığında Kubernetes pod’larını yeniden planlar ve AKS düğümü düğüm havuzundan kaldırır.

Ölçek daraltma işlemleri, podlar düğümler arasında ilerledikçe iş yüklerini kesintiye uğratabilir. Birden çok pod çoğaltması çalıştırın ve kesintiyi en aza indirmek için uygun kullanılabilirlik denetimlerini yapılandırın.

Kubernetes Olay Odaklı Otomatik Ölçeklendirme

Kubernetes Olay Odaklı Otomatik Ölçeklendirme (KEDA), iş yüklerini olaylara göre ölçeklendirin açık kaynaklı bir bileşendir. KEDA, kubernetes'i bir iş yükünün bir olay kaynağına veya ölçümüne nasıl yanıt vermesi gerektiğini açıklayan, dahil olmak üzere ScaledObjectözel kaynaklarla genişletir.

KEDA kuyrukları, akışları, iletileri veya diğer olay kapsamlarını işleyen iş yükleri için kullanışlıdır. Olay olmadığında desteklenen iş yüklerinin ölçeğini sıfıra indirebilir ve bekleyen iş yükü arttıkça replika sayısını artırabilir.

KeDA'ları ScaledObject aynı iş yükü için ayrı bir HPA ile birleştirmeyin. KEDA dahili olarak bir HPA oluşturur ve kullanır, böylece otomatik ölçekleyiciler birbirleriyle rekabet eder.

Başlamak için bkz. KEDA eklentisine genel bakış.

Düğüm otomatik kaynak sağlama

Düğüm otomatik sağlama (NAP), bekleyen pod gereksinimlerine göre düğümleri sağlamak ve yönetmek için açık kaynak Karpenter projesini kullanır. NAP, gerçek zamanlı iş yükü talebini karşılamak için uygun bir sanal makine SKU'su ve düğüm miktarı seçer.

NAP, izin verilen bir VM SKU kümesiyle başlar ve bekleyen iş yükleri için kapasiteyi seçer. Düğümleri nasıl sağlayacağını ve iş yüklerini nasıl dağıtacağını denetlemek için kaynak sınırları ve zamanlama tercihleri tanımlayabilirsiniz.

Kontrol düzlemi ölçeklendirmesi ve koruma önlemleri

AKS, denetim düzlemi bileşenlerini küme boyutuna ve API sunucusu kaynak kullanımına göre otomatik olarak ölçeklendirir. Bu kılavuz AKS Otomatik ve AKS Standard için geçerlidir. Üretim veya ölçekli iş yükleri için Standart veya Premium fiyatlandırma katmanını kullanın.

Kubernetes'te her kaynak türünün denetim düzleminde farklı talepler yerleştirdiği çok boyutlu bir ölçek zarfı vardır. Örneğin, gizli diziler genellikle ilk LIST çağrıyı yaparak daha az sık izlenen kaynaklara göre daha fazla denetim düzlemi yükü oluşturan birden çok denetleyici ve pod tarafından izlenir. Bir boyutta büyük ölçüde ölçeklendirme, diğer boyutlarda kapasiteyi azaltabilir. Örneğin yüz binlerce pod çalıştırmak, kontrol düzleminin desteklediği pod mutasyon oranını düşürebilir. Öneriler için bkz. Büyük ölçekli AKS kümeleri için Kubernetes istemci en iyi yöntemleri.

Denetim düzleminin ölçeğinin artırılıp artırılmadığını denetlemek için ConfigMap'i large-cluster-control-plane-scaling-status inceleyin:

kubectl describe configmap large-cluster-control-plane-scaling-status -n kube-system

Bu ConfigMap'in varlığı, AKS'nin denetim düzleminin ölçeğini artırdığını onaylar.

Kontrol düzlemi önlemleri

API sunucusunun otomatik olarak ölçeklenmesi yüksek yük altında kararlı hale getirilmezse, AKS yönetilen bir API sunucu koruyucusu dağıtabilir. Bu son çare koruma, kontrol düzleminin yanıt vermemesini önlemek için sistem dışı istemci isteklerini kısıtlar. kubelet gibi bileşenlerden gelen sistem açısından kritik API sunucusu çağrıları çalışmaya devam eder.

Yönetilen API sunucu korumasının uygulanıp uygulanmadığını belirlemek için aks-managed-apiserver-guard, FlowSchema ve PriorityLevelConfiguration olup olmadığını denetleyin:

kubectl get flowschemas
kubectl get prioritylevelconfigurations

Her iki komut çıkışında da göründüğünde koruma etkindir aks-managed-apiserver-guard .

Bu kaynaklar mevcutsa, hafifletme yönergeleri için API sunucusu ve etcd sorun giderme kılavuzunu inceleyin.

Azure Container Instances'a (ACI) geçiş

Talepteki hızlı artışları işlemek için AKS'yi Azure Container Instances ile tümleştirebilirsiniz. Podların otomatik ölçeklendirilmesi, mevcut düğüm havuzunun destekleyebileceğinden daha fazla replika oluşturabilirken, ek VM tabanlı düğümlerin sağlanması birkaç dakika sürebilir. ACI, ek VM düğümleri gerektirmeden işlem kapasitesi sağlar.

Sanal düğümler (ACI destekli sanal Kubernetes düğümleri) Linux podlarını ve düğümlerini destekler ve Azure CNI ağı kullanan bir AKS kümesi gerektirir. API sunucusu yetkili IP aralıkları, kalıcı birimler ve kalıcı birim talepleri, IPv6 ve sanal düğümlere bağlı yönetilen kimlikler gibi bazı yaygın senaryoları desteklemez. ACI seri ölçeklendirmeyi kullanmadan önce sanal düğüm sınırlamalarını gözden geçirin.

Azure Container Instances AKS ile nasıl çalıştığını gösteren diyagramın ekran görüntüsü.

AKS sanal düğümleri bileşeni Sanal Kubelet'i temel alır ve ACI'yi sanal kubernetes düğümü olarak sunar. Kubernetes, uygun podları doğrudan AKS VM düğümlerinde çalıştırmak yerine, sanal düğüm aracılığıyla ACI kapsayıcı örneklerinde çalıştırılmak üzere zamanlayabilir.

Sanal düğümler AKS kümesiyle aynı sanal ağda başka bir alt ağ kullanır. Bu yapılandırma AKS ile ACI arasında özel ağ bağlantısı sağlarken, ACI'nin kümenin mantıksal bir uzantısı olarak davranmasını sağlar.

İş yükünüz için uygun ölçeklendirme yöntemini uygulamak için aşağıdaki kaynakları kullanın:

Temel Kubernetes ve AKS kavramları hakkında daha fazla bilgi için bkz: