Azure Kubernetes Service'te (AKS) küme otomatik ölçeklendiricisini kullanma

AKS'deki uygulama taleplerine ayak uydurmak için iş yüklerinizi çalıştıran düğüm sayısını ayarlamanız gerekebilir. Küme otomatik ölçeklendirme bileşeni, kümenizde kaynak kısıtlamaları nedeniyle zamanlanamayan pod’ları izler. Küme otomatik ölçeklendiricisi sorunları algıladığında, uygulama taleplerini karşılamak için düğüm havuzundaki düğüm sayısını artırır. Ayrıca, yeterince kullanılmayan düğümleri düzenli olarak kontrol eder ve iş yükleri güvenli bir şekilde yeniden planlanabildiğinde ve ölçek küçültme koşulları karşılandığında bunları kaldırır.

Bu makalede, açık kaynak Kubernetes sürümünü temel alan AKS'de küme otomatik ölçeklendiricisini etkinleştirme ve yönetme işlemleri gösterilmektedir.

Başlamadan önce

Bu makale, Azure CLI sürüm 2.0.76 veya üzerini gerektirir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Kümede küme otomatik ölçeklendiricisini etkinleştirme veya devre dışı bırakma

Önemli

Küme otomatik ölçeklendiricisi bir Kubernetes bileşenidir. AKS kümesi düğümler için Sanal Makine Ölçek Kümeleri kullansa da, ölçek kümesi otomatik ölçeklendirme ayarlarını el ile etkinleştirmeyin veya düzenlemeyin. Kubernetes kümesi otomatik ölçeklendiricisinin gerekli ölçek ayarlarını yönetmesine izin verin. Daha fazla bilgi için bkz. Düğüm kaynak grubundaki AKS kaynaklarını değiştirebilir miyim?

Yeni bir kümede küme otomatik ölçeklendiricisini etkinleştirme

  1. komutunu kullanarak az group create bir kaynak grubu oluşturun.

    az group create --name myResourceGroup --location eastus
    
  2. az aks create komutunu kullanarak bir AKS kümesi oluşturun ve --enable-cluster-autoscaler parametresini kullanıp düğüm sayısı için en düşük --min-count ve en yüksek --max-count değerlerini belirterek kümenin düğüm havuzunda küme otomatik ölçeklendiricisini etkinleştirip yapılandırın. Aşağıdaki örnek komut, Sanal Makine Ölçek Kümesi tarafından desteklenen tek bir düğüme sahip bir küme oluşturur, küme otomatik ölçeklendiricisini etkinleştirir, en az bir ve en fazla üç düğüm ayarlar:

    az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3 \
    --generate-ssh-keys
    

    Kümenin oluşturulması ve küme otomatik ölçeklendiricisi ayarlarının yapılandırılması birkaç dakika sürer.

Mevcut bir kümede küme otomatik ölçeklendiricisini etkinleştirme

az aks update komutunu kullanarak mevcut bir kümeyi güncelleştirin ve --enable-cluster-autoscaler parametresini kullanarak düğüm havuzunda küme otomatik ölçeklendiriciyi etkinleştirip yapılandırın ve bir düğüm --min-count ve --max-count belirterek bunu yapın. Aşağıdaki örnek komut, küme için düğüm havuzunda küme otomatik ölçeklendiricisini etkinleştirmek üzere var olan bir AKS kümesini güncelleştirir ve en az bir ve en fazla üç düğüm ayarlar:

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3

Kümenin güncelleştirilip küme otomatik ölçeklendiricisi ayarlarının yapılandırılması birkaç dakika sürer.

Kümede küme otomatik ölçeklendiricisini devre dışı bırakma

az aks update komutunu ve --disable-cluster-autoscaler parametresini kullanarak küme otomatik ölçeklendiricisini devre dışı bırakın.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --disable-cluster-autoscaler

Küme otomatik ölçeklendiricisi devre dışı bırakıldığında düğümler kaldırılmaz.

Not

komutunu kullanarak az aks scale küme otomatik ölçeklendiricisini devre dışı bırakdıktan sonra kümenizi el ile ölçeklendirin. Yatay pod otomatik ölçeklendiricisini kullanıyorsanız, küme otomatik ölçeklendiricisi devre dışıyken de çalışmaya devam eder; ancak tüm düğüm kaynakları kullanımdaysa podlar zamanlanamayabilir.

Bir kümede kümenin otomatik ölçeklendiricisini yeniden etkinleştirin

komutunu kullanarak ve , az aks updateve --enable-cluster-autoscaler parametrelerini belirterek mevcut bir kümede küme otomatik ölçeklendiricisini --min-count--max-countyeniden etkinleştirebilirsiniz.

Düğüm havuzlarında küme otomatik ölçeklendiricisini etkinleştirme veya devre dışı bırakma

Birden çok düğüm havuzunda küme otomatik ölçeklendiricisini kullanma

Küme otomatik ölçeklendiricisini birden çok düğüm havuzuyla kullanabilir ve her düğüm havuzunda küme otomatik ölçeklendiricisini etkinleştirebilir ve bunlara benzersiz otomatik ölçeklendirme kuralları geçirebilirsiniz.

komutunu kullanarak mevcut düğüm havuzundaki ayarları güncelleştirin az aks nodepool update .

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name nodepool1 \
    --update-cluster-autoscaler \
    --min-count 1 \
    --max-count 5

Düğüm havuzunda küme otomatik ölçeklendiricisini devre dışı bırakma

Bir düğüm havuzunda küme otomatik ölçeklendiricisini, az aks nodepool update komutunu ve --disable-cluster-autoscaler parametresini kullanarak devre dışı bırakın.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name nodepool1 \
    --disable-cluster-autoscaler

Düğüm havuzunda küme otomatik ölçeklendiricisini yeniden etkinleştirme

komutunu kullanarak ve , az aks nodepool updateve --enable-cluster-autoscaler parametrelerini belirterek düğüm havuzunda küme otomatik ölçeklendiricisini --min-count--max-countyeniden etkinleştirebilirsiniz.

Not

Küme otomatik ölçeklendiricisini birden çok bölgeye yayılan düğüm havuzlarıyla kullanmayı planlıyorsanız ve birim topolojik zamanlaması gibi bölgelerle ilgili zamanlama özelliklerinden yararlanıyorsanız, bölge başına bir düğüm havuzunuz olmasını ve otomatik ölçeklendirici profili aracılığıyla etkinleştirmenizi --balance-similar-node-groups öneririz. Bu, otomatik ölçeklendiricinin ölçeğini başarıyla artırabilmesini ve düğüm havuzlarının boyutlarını dengeli tutmasını sağlar.

Küme otomatik ölçeklendiricisi ayarlarını güncelleştirme

Uygulamanız değiştikçe, verimli bir şekilde ölçeklendirmek için küme otomatik ölçeklendiricisi düğüm sayısını ayarlamanız gerekebilir.

komutunu kullanarak az aks update düğüm sayısını değiştirin ve parametresini kullanarak küme otomatik ölçeklendiricisini güncelleştirin --update-cluster-autoscaler ve güncelleştirilmiş düğümünüzü --min-count ve --max-countbelirtin.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --update-cluster-autoscaler \
    --min-count 1 \
    --max-count 5

Not

Küme otomatik ölçeklendiricisi, spot tahliyesi sırasında veya AKS API’si üzerinden minimum sayı değerinin değiştirilmesi gibi dış etkenler nedeniyle mevcut düğüm sayısının minimum değerin altına düştüğü durumlarda minimum düğüm sayısını uygular.

Küme otomatik ölçeklendirici profilini kullanma

Küme genelindeki otomatik ölçeklendirici profilindeki varsayılan değerleri değiştirerek küme otomatik ölçeklendiricisinin daha ayrıntılı ayrıntılarını yapılandırabilirsiniz. Örneğin, 10 dakika sonra düğümler yetersiz kullanıldıktan sonra ölçeği azaltma olayı gerçekleşir. 15 dakikada bir çalışan iş yükleriniz varsa, otomatik ölçeklendirici profilini 15 veya 20 dakika sonra yetersiz kullanılan düğümlerin ölçeğini azaltacak şekilde değiştirmek isteyebilirsiniz. Küme otomatik ölçeklendiricisini etkinleştirdiğinizde, farklı ayarlar belirtmediğiniz sürece varsayılan bir profil kullanılır.

Önemli

Küme otomatik ölçeklendiricisi profili, küme otomatik ölçeklendiricisini kullanan tüm düğüm havuzlarını etkiler. Her düğüm havuzu için otomatik ölçeklendirici profili ayarlayamazsınız. Profili ayarladığınızda, küme otomatik ölçeklendiricisi etkinleştirilmiş mevcut düğüm havuzları hemen profili kullanmaya başlar.

Küme otomatik ölçeklendiricisi profil ayarları

Aşağıdaki tabloda, küme otomatik ölçeklendirici profili için kullanılabilir ayarlar listelenir:

Ayar Açıklama Varsayılan değer
scan-interval Kümenin ölçeği artırma veya azaltma için yeniden değerlendirilme sıklıkları. 10 saniye
scale-down-delay-after-add Ölçek büyütmeden ne kadar süre sonra ölçek küçültme değerlendirmesi yeniden başlar. 10 dakika
scale-down-delay-after-delete Ölçeği azaltan düğüm silme işleminden sonra değerlendirmenin sürdürülme süresi. scan-interval
scale-down-delay-after-failure Ölçeğin küçültülmesinin başarısız olmasından ne kadar süre sonra küçültme değerlendirmesi yeniden başlar. Üç dakika
scale-down-unneeded-time Bir düğümün, ölçeğin küçültülmesi için uygun sayılmadan önce ne kadar süreyle gereksiz durumda kalması gerektiği. 10 dakika
scale-down-unready-time Hazır olmayan bir düğümün, ölçeğin küçültülmesi için uygun hale gelmeden önce ne kadar süre gereksiz kalması gerektiği. 20 dakika
ignore-daemonsets-utilization Ölçek küçültme sırasında kaynak kullanımının hesaplanmasında DaemonSet podlarının yok sayılıp sayılmayacağı. false
daemonset-eviction-for-empty-nodes DaemonSet podlarının boş düğümlerden düzgün bir şekilde sonlandırılıp sonlandırılmayacağı. false
daemonset-eviction-for-occupied-nodes DaemonSet podlarının boş olmayan düğümlerden düzgün bir şekilde sonlandırılıp sonlandırılmayacağı. true
scale-down-utilization-threshold Tüm podların CPU isteklerinin toplamı ile Bellek isteklerinin toplamı arasındaki en büyük değer, düğümün karşılık gelen ayrılabilir kaynağına bölünür. Bu değerin altında bir düğüm için ölçek küçültme düşünülebilir. 0,5
max-graceful-termination-sec Küme otomatik ölçeklendiricisinin, bir düğümü küçültmeye çalışırken podun sonlandırılması için beklediği en fazla saniye sayısı. 600 saniye
balance-similar-node-groups Benzer düğüm havuzlarını algılar ve aralarındaki düğüm sayısını dengeler. false
expander Ölçek artırmada kullanılan düğüm havuzu genişletici türü. Olası değerler , , most-podsrandomve least-wastedeğerlerini içerirpriority. random
skip-nodes-with-local-storage true ise, küme otomatik ölçekleyicisi yerel depolamaya sahip pod’lar içeren düğümleri, örneğin EmptyDir veya HostPath kullananları, silmez. false
skip-nodes-with-system-pods ise true, küme otomatik ölçeklendiricisi kube-system'den pod içeren düğümleri silmez (DaemonSet veya yansıtma podları hariç). true
max-empty-bulk-delete Aynı anda silinebilecek en fazla boş düğüm sayısı. 10 düğüm
new-pod-scale-up-delay Kubernetes zamanlayıcısının tüm podları zamanlayabilmesi için CA'nın harekete geçmesini istemediğiniz seri/toplu ölçek gibi senaryolar için CA'ya belirli bir yaşa ulaşmadan önce zamanlanmamış podları yoksaymasını söyleyebilirsiniz. 0 saniye
max-total-unready-percentage Kümedeki hazır olmayan düğümlerin azami oranı. Bu yüzde aşıldıktan sonra CA işlemleri durdurur. %45
max-node-provision-time Otomatik ölçeklendiricinin bir düğümün sağlanmasını beklediği maksimum süre. 15 dakika
ok-total-unready-count İzin verilen hazır olmayan düğüm sayısı; max-total-unready-percentage değerinden bağımsız olarak. Üç düğüm

Not

ignore-daemonsets-utilization, daemonset-eviction-for-empty-nodes ve daemonset-eviction-for-occupied-nodes parametreleri, 2024-05-01 API sürümünden itibaren genel kullanıma sunulmuştur.

Yeni bir kümede küme otomatik ölçeklendiricisi profilini ayarlama

komutunu kullanarak az aks create bir AKS kümesi oluşturun ve parametresini kullanarak cluster-autoscaler-profile küme otomatik ölçeklendirici profilini ayarlayın.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3 \
    --cluster-autoscaler-profile scan-interval=30s \
    --generate-ssh-keys

Mevcut bir kümede küme otomatik ölçeklendiricisi profilini ayarlama

Mevcut bir kümede küme otomatik ölçeklendiricisini, az aks update komutunu ve cluster-autoscaler-profile parametresini kullanarak ayarlayın. Aşağıdaki örnek, tarama aralığı ayarını 30s olarak yapılandırır:

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --cluster-autoscaler-profile scan-interval=30s

Agresif ölçek azaltma için küme otomatik ölçeklendirici profilini yapılandırma

Not

Kısa aralıklarla sık sık ölçeği büyütülüp küçültülen kümelerde, bu durum düğüm sağlama sürelerinin uzamasına neden olabileceğinden agresif ölçek küçültme önerilmez. scale-down-delay-after-add değerini artırmak, bu durumlarda düğümün gelen iş yüklerini işlemek için daha uzun süre etkin kalmasını sağlayarak yardımcı olabilir.

Aşağıdaki komut agresif bir ölçek azaltma profili yapılandırır. Her 30 saniyede bir kümeyi tarar, bir düğüm eklendikten hemen sonra ve hatadan bir dakika sonra ölçeği azaltma değerlendirmesini sürdürür, üç dakika sonra gereksiz ve okunmamış düğümleri ölçeği azaltmaya uygun hale getirir, düzgün sonlandırmayı 30 saniyeyle sınırlar, aynı anda en fazla 1.000 boş düğümün silinmesine izin verir ve okunmamış düğüm sınırlarını yüzde 100 veya 1.000 düğüme yükseltir. Ayrıca yerel depolamaya sahip düğümleri atlamama ve bir düğümün sağlanması için 15 dakikaya kadar bekleme gibi varsayılan davranışı açıkça korur.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

Ani iş yükleri için küme otomatik ölçeklendiricisi profilini yapılandırma

Aşağıdaki komut, ani artış gösteren iş yükleri için bir profil yapılandırır. Kümeyi her 20 saniyede bir tarar, gelen ani artışlar için kapasiteyi korumak üzere bir düğüm eklendikten sonra ölçeği azaltma değerlendirmesini 10 dakika boyunca duraklatır, hatadan bir dakika sonra değerlendirmeye devam eder, gereksiz ve okunmamış düğümleri beş dakika sonra ölçeği azaltmaya uygun hale getirir, düzgün sonlandırmayı 30 saniyeyle sınırlar, aynı anda en fazla 100 boş düğümün silinmesine izin verir, ve okunmamış düğüm sınırlarını yüzde 100 veya 1.000 düğüme yükseltir. Ayrıca yerel depolamaya sahip düğümleri atlamama ve bir düğümün sağlanması için 15 dakikaya kadar bekleme gibi varsayılan davranışı açıkça korur.

az aks update \
    --resource-group "myResourceGroup" \
    --name myAKSCluster \
    --cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

Küme otomatik ölçeklendirici profilini varsayılan değerlere sıfırlama

komutunu kullanarak küme otomatik ölçeklendirici profilini sıfırlayın az aks update .

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --cluster-autoscaler-profile ""

Küme otomatik ölçeklendiricisi ile ProvisioningRequest kullanma

ProvisioningRequest , ilgili podlardan oluşan bir grup için kaynak istemek için kullanabileceğiniz özel bir kaynaktır. Küme otomatik ölçeklendiricisi bu podları tek bir birim olarak ele alır. Belirttiğiniz sağlama sınıfına bağlı olarak, küme otomatik ölçeklendiricisi podlar için mevcut kaynakları ayırabilir veya kümenin ölçeğini artırabilir.

Not

  • ProvisioningRequest desteği için Kubernetes sürüm 1.33 veya üzerini çalıştıran bir AKS kümesi gerekir.
  • kullanırken, kısmi ya da gerçekleşmeyen ölçek büyütmelerinden kaynaklanan kullanılmayan düğümlerin hızla kaldırılması için ProvisioningRequest kullanmayı düşünün.
Tedarik sınıfı Açıklama
check-capacity.autoscaling.x-k8s.io Kümenin belirtilen podlar için yeterli kaynağa sahip olup olmadığını denetler. Kaynaklar mevcutsa, küme otomatik ölçeklendiricisi, diğer ProvisioningRequest öğelerinin aynı kaynakları talep etmesini önlemek için bunları ProvisioningRequests için 10 dakika süreyle rezerve eder.
best-effort-atomic-scale-up.autoscaling.x-k8s.io Küme otomatik ölçeklendiricisi, istenen kaynakların tamamını tek bir ölçeklendirme işleminde sağlamak için en iyi çabayı gösterir. Tümünü sağlayamazsa, ProvisioningRequest başarısız olur ve küme otomatik ölçeklendiricisi bir bekleme süresinin ardından bunu yeniden dener.

Küme otomatik ölçeklendiricisi ve ProvisioningRequestile Kueue tümleştirmesini gösteren uçtan uca bir örnek için bkz. AKS'de küme otomatik ölçeklendiricisi ile Kueue'yi yapılandırma.

Küme otomatik ölçeklendiricisinin günlüklerini ve durumunu alın

Otomatik ölçeklendirici olaylarını tanılamaya ve hatalarını ayıklamaya yardımcı olmak için küme otomatik ölçeklendiricisinden günlükleri ve durum güncelleştirmelerini alabilirsiniz. AKS, küme otomatik ölçeklendiricisini sizin yerinize yönetir ve yönetilen denetim düzleminde çalıştırır. Denetim düzlemi günlüklerini toplamak için Azure portalında AKS kümesi için bir Azure İzleyici tanılama ayarı oluşturun veya az monitor diagnostic-settings create kullanın ve cluster-autoscaler günlük kategorisini etkinleştirin.

  1. Küme otomatik ölçeklendiricisi günlüklerini Log Analytics'e göndermek için, AKS denetim düzlemi için kaynak günlüğü toplamayı yapılandırma yönergelerini kullanarak kaynak günlükleri için bir kural ayarlayın. cluster-autoscaler için seçenekleri seçerken kutusunu işaretlediğinizden emin olun.

  2. Kümenizdeki Günlükler bölümünü seçin.

  3. Tanılama ayarlarınız Azure tanılama modunu kullanıyorsa, Log Analytics içine aşağıdaki sorguyu girin:

    AzureDiagnostics
    | where Category == "cluster-autoscaler"
    

    Tanılama ayarlarınız kaynağa özgü modu kullanıyorsa bunun yerine aşağıdaki sorguyu girin:

    AKSControlPlane
    | where Category == "cluster-autoscaler"
    
  4. CLI'da küme otomatik ölçeklendiricisinde ölçek büyütmenin tetiklenmediği olayları görüntüleyin.

    kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
    
  5. CLI'da küme otomatik ölçeklendiricisi uyarı olaylarını görüntüleyin.

    kubectl get events --field-selector source=cluster-autoscaler,type=Warning
    
  6. Küme otomatik ölçeklendiricisi, sağlık durumunu configmap adlı bir cluster-autoscaler-status öğesine de yazar. Aşağıdaki kubectl komutu kullanarak bu durumu alabilirsiniz:

    kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
    

Daha fazla bilgi için Kubernetes/autoscaler GitHub projesinin SSS bölümüne bakın.

Küme otomatik ölçeklendirme metrikleri

Denetim düzlemi ölçümlerini (Önizleme), Prometheus için Azure İzleyici yönetilen hizmeti ile küme otomatik ölçeklendirici ölçümlerini toplamak için kullanabilirsiniz. Kazıma controlplane-cluster-autoscaler hedefi varsayılan olarak devre dışıdır, bu nedenle bu ölçümleri toplamak için etkinleştirmeniz gerekir.

Kullanılabilir ölçümler arasında cluster_autoscaler_unschedulable_pods_count ve cluster_autoscaler_unneeded_nodes_count bulunur; bunlar, zamanlanamayan pod sayısını ve kaldırma adayı olarak işaretlenen düğümleri gösterir. Ayrıca, kümenin otomatik ölçeklendirme için güvenli olup olmadığını cluster_autoscaler_cluster_safe_to_autoscale ile ve ölçeğin küçültülmesinin bir bekleme süresinde olup olmadığını cluster_autoscaler_scale_down_in_cooldown ile izleyebilirsiniz.

Bu makalede AKS düğümlerinin sayısını otomatik olarak ölçeklendirme işlemi gösterildi. Uygulamanızı çalıştıran pod sayısını otomatik olarak ayarlamak için yatay pod otomatik ölçeklendiricisini de kullanabilirsiniz. Yatay pod otomatik ölçeklendiricisini kullanma adımları için bkz. AKS'de uygulamaları ölçeklendirme.

Küme kaynaklarının kullanımını daha da iyileştirmeye ve diğer podlar için CPU ile belleği serbest bırakmaya yardımcı olmak üzere, bkz: Dikey Pod Otomatik Ölçeklendirici.