Aracılığıyla paylaş


Azure Arc tarafından etkinleştirilen AKS'de küme otomatik ölçeklendirmesi için PowerShell kullanma

Şunlar için geçerlidir: Azure Stack HCI 22H2 üzerinde AKS, Windows Server'da AKS

Otomatik ölçeklendiriciyi etkinleştirmek ve Arc tarafından etkinleştirilen AKS'deki hedef kümelerinizdeki düğüm havuzlarının otomatik ölçeklendirmesini yönetmek için PowerShell'i kullanabilirsiniz. Küme otomatik ölçeklendirmesini yapılandırmak ve yönetmek için PowerShell'i de kullanabilirsiniz.

Yeni bir AksHciAutoScalerConfig nesnesi oluşturma

veya Set-AksHciCluster komutuna New-AksHciCluster geçirmek üzere yeni bir AksHciAutoScalerConfig nesnesi oluşturmak için şu komutu kullanın:

New-AksHciAutoScalerProfile -Name asp1 -AutoScalerProfileConfig @{ "min-node-count"=2; "max-node-count"=7; 'scale-down-unneeded-time'='1m'}

Kümenizi oluştururken autoscalerconfig nesnesini sağlayabilirsiniz. nesnesi, otomatik ölçeklendiricinizin parametrelerini içerir. Parametre bilgileri için bkz . Otomatik ölçeklendirici profillerini kullanma.

Var olan bir AksHciAutoScalerConfig profil nesnesini değiştirme

Mevcut bir AksHciAutoScalerConfig profil nesnesini güncelleştirdiğinizde, bu nesneyi kullanan kümeler yeni parametreleri kullanacak şekilde güncelleştirilir:

Set-AksHciAutoScalerProfile -name myProfile -autoScalerProfileConfig @{ "max-node-count"=5; "min-node-count"=2 }

Otomatik ölçeklendiricinizin parametrelerini içeren autoscalerconfig nesnesini güncelleştirebilirsiniz. Parametre bilgileri için bkz . Otomatik ölçeklendirici profillerini kullanma.

Yeni kümeler için otomatik ölçeklendirmeyi etkinleştirme

Otomatik ölçeklendirmeyi yeni oluşturulan tüm düğüm havuzlarında otomatik olarak etkinleştirmek için komutuyla New-AksHciCluster aşağıdaki parametreleri kullanın:

New-AksHciCluster -name mycluster -enableAutoScaler -autoScalerProfileName myAutoScalerProfile

Mevcut kümede otomatik ölçeklendirmeyi etkinleştirme

Mevcut bir kümede yeni oluşturulan her düğüm havuzunda otomatik ölçeklendirmeyi otomatik olarak etkinleştirmek için parametresini enableAutoScalerSet-AksHciCluster komutuyla kullanın:

Set-AksHciCluster -Name <string> [-enableAutoScaler <boolean>] [-autoScalerProfileName <String>] 

Mevcut düğüm havuzunda otomatik ölçeklendirmeyi etkinleştirme

Mevcut bir düğüm havuzunda otomatik ölçeklendirmeyi etkinleştirmek için komutunu kullanarak parametresini Set-AksHciNodePool kullanınautoScaler:

Set-AksHciNodePool -clusterName <Your-Cluster-Name> -name <Your-NodePool-Name> -autoScaler $true

Otomatik ölçeklendirmeyi devre dışı bırakma

Mevcut kümedeki tüm mevcut ve yeni oluşturulan düğüm havuzlarında otomatik ölçeklendirmeyi devre dışı bırakmak için komutunu kullanarak Set-AksHciCluster false olarak ayarlayınenableAutoScaler:

Set-AksHciCluster -Name <string> -enableAutoScaler $false

Yatay otomatik ölçeklendiriciyi etkili bir şekilde kullanma

Artık küme ve düğüm havuzu otomatik olarak ölçeklendirilecek şekilde yapılandırıldığına göre, bir iş yükünü yatay otomatik ölçeklendirici özelliklerinden yararlanacak şekilde de ölçeklendirilecek şekilde yapılandırabilirsiniz.

İş yükü ölçeklendirme için iki yöntem sağlanır:

  • Kubernetes Yatay Pod Otomatik Ölçeklendiricisi: Yük özelliklerine göre Yatay Pod Otomatik Ölçeklendiricisi (yatay otomatik ölçeklendirici olarak da bilinir), bir uygulama dağıtımının podlarını Kubernetes kümesindeki kullanılabilir düğümlere ölçeklendirir. Zamanlanacak başka düğüm yoksa, yatay otomatik ölçeklendirici podların zamanlanması için yeni bir düğüm oluşturur. Uygulama yükü düşerse düğümler yeniden ölçeklendirilir.
  • Kubernetes düğüm benzeşimi önleme kuralları: Kubernetes dağıtımı için benzeşim karşıtı kurallar, bir dizi podun aynı düğümde ölçeklenebileceğini ve iş yükünü ölçeklendirmek için farklı bir düğümün gerekli olduğunu belirtebilir. Yük özellikleri veya uygulama örnekleri için hedef pod sayısıyla birlikte yatay otomatik ölçeklendirici, istekleri karşılamak için düğüm havuzunda yeni düğümlerin örneğini oluşturur. Uygulama talebi azalırsa yatay otomatik ölçeklendirici düğüm havuzunun ölçeğini yeniden azaltır.

Bu bölümde bazı örnekler verilmiştir.

Yatay Pod Otomatik Ölçeklendiricisi

Ön koşullar:

  • Arc tarafından etkinleştirilen AKS yüklenir.
  • Hedef küme yüklenir ve Azure'a bağlanır.
  • En az bir etkin Linux çalışan düğümü ile bir Linux düğüm havuzu dağıtılır.
  • Yatay düğüm otomatik ölçeklendiricisi, daha önce açıklandığı gibi hedef kümede ve Linux düğüm havuzunda etkinleştirilir.

Yatay Pod Otomatik Ölçeklendiricisi'nin nasıl çalıştığını göstermek için Kubernetes Yatay Pod Otomatik Ölçeklendiricisi İzlenecek Yol örneğinden yararlanıyoruz.

Yatay Pod Otomatik Ölçeklendiricisi'nin çalışması için Ölçüm Sunucusu bileşenini hedef kümenize dağıtmanız gerekir.

Ölçüm sunucusunu adlı myclusterbir hedef kümeye dağıtmak için aşağıdaki komutları çalıştırın:

Get-AksHciCredential -name mycluster
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Kubernetes Ölçüm Sunucusu dağıtıldıktan sonra, bir uygulamayı ölçeklendirmek için kullandığınız düğüm havuzuna dağıtabilirsiniz. Bu örnek için Kubernetes topluluk web sitesinden bir test uygulaması kullanırız:

kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
deployment.apps/php-apache created
service/php-apache created

Bu komut, çağıran istemciye "Tamam" iletisi döndürecek Apache web sunucusu tabanlı PHP uygulamasının dağıtımını oluşturur.

Ardından Yatay Pod Otomatik Ölçeklendiricisi'ni geçerli podun CPU kullanımı yüzde 50'ye ulaştığında yeni bir pod zamanlamak için yapılandırın ve 1 ile 50 pod arasında ölçeklendirin:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/php-apache autoscaled

Aşağıdaki komutu çalıştırarak yeni yapılan Yatay Pod Otomatik Ölçeklendiricisi'nin geçerli durumunu de kontrol edebilirsiniz:

kubectl get hpa
NAME         REFERENCE                     TARGET    MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   0% / 50%  1         10        1          18s

Son olarak, ölçeğini genişletmek için web sunucusu üzerindeki yükü artırın. Yeni bir PowerShell penceresi açın ve aşağıdaki komutu çalıştırın:

kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

Önceki PowerShell penceresine geri dönüp aşağıdaki komutu çalıştırırsanız, kısa bir süre içinde pod sayısının değiştiğini görmeniz gerekir:

kubectl get hpa php-apache --watch
NAME         REFERENCE                     TARGET      MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   305% / 50%  1         10        1          3m

Bu örnekte, burada gösterildiği gibi pod sayısı 1'den 7'ye değişir:

NAME         REFERENCE                     TARGET      MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   305% / 50%  1         10        7          3m

Tüm podlar bir düğüme sığdığından bu işlem düğüm otomatik ölçeklendiricisini tetikleme için yeterli değilse, daha fazla PowerShell penceresi açın ve daha fazla yük oluşturucu komutu çalıştırın. Komutu her çalıştırdığınızda oluşturduğunuz podun adını değiştirdiğinizden emin olun. Örneğin, aşağıdaki komutta gösterildiği gibi yerine load-generatorkullanınload-generator-2.

kubectl run -i --tty load-generator-2 --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

Ardından aşağıdaki komutla örnek oluşturulan düğüm sayısını denetleyin:

kubectl get nodes
NAME              STATUS   ROLES                  AGE    VERSION
moc-laondkmydzp   Ready    control-plane,master   3d4h   v1.22.4
moc-lorl6k76q01   Ready    <none>                 3d4h   v1.22.4
moc-lorl4323d02   Ready    <none>                   9m   v1.22.4
moc-lorl43bc3c3   Ready    <none>                   2m   v1.22.4

Ölçeği küçültmeyi izlemek için CTRL-C tuşlarına basarak yük oluşturucu podlarını sonlandırın ve bunlarla ilişkilendirilmiş PowerShell pencerelerini kapatın. Yaklaşık 30 dakika sonra pod sayısının aşağı indiğini görmeniz gerekir. Yaklaşık 30 dakika sonra düğümlerin sağlamaları kaldırılır.

Kubernetes Yatay Pod Otomatik Ölçeklendiricisi hakkında daha fazla bilgi için bkz . Yatay Pod Otomatik Ölçeklendirme.

Düğüm benzinim kuralları

Kubernetes zamanlayıcısının, düğümün belirli özelliklerine göre bir kümedeki veya düğüm havuzundaki belirli bir düğüm kümesinde pod çalıştırmasını sağlamak için düğüm benzimliği kurallarını kullanabilirsiniz. Yatay Düğüm Otomatik Ölçeklendiricisi işlevini göstermek için, her düğümde belirli bir podun yalnızca bir örneğinin çalıştığından emin olmak için aynı kuralları kullanabilirsiniz.

Ön koşullar:

  • AKS Arc yüklüdür.
  • Hedef küme yüklenir ve Azure'a bağlanır.
  • En az bir etkin Linux Çalışanı düğümü ile bir Linux düğüm havuzu dağıtılır.
  • Yatay Düğüm Otomatik Ölçeklendiricisi, daha önce açıklandığı gibi hedef kümede ve Linux düğüm havuzunda etkinleştirilir.

Aşağıdaki içeriğe sahip bir YAML dosyası oluşturun ve yerel bir klasöre node-anti-affinity.yaml olarak kaydedin.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-cache
spec:
  selector:
    matchLabels:
      app: store
  replicas: 4
  template:
    metadata:
      labels:
        app: store
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - store
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: redis-server
        image: redis:3.2-alpine

Bir PowerShell penceresi açın ve hedef kümenizin kimlik bilgilerini yükleyin. Bu örnekte kümenin adı mycluster:

Get-AksHciCredential -name mycluster

Şimdi YAML dosyasını hedef kümeye uygulayın:

kubectl apply -f node-anti-affinity.yaml

Birkaç dakika sonra, yeni düğümlerin çevrimiçi olup olmadığını denetlemek için aşağıdaki komutu kullanabilirsiniz:

kubectl get nodes
NAME              STATUS   ROLES                  AGE    VERSION
moc-laondkmydzp   Ready    control-plane,master   3d4h   v1.22.4
moc-lorl6k76q01   Ready    <none>                 3d4h   v1.22.4
moc-lorl4323d02   Ready    <none>                   9m   v1.22.4
moc-lorl43bc3c3   Ready    <none>                   9m   v1.22.4
moc-lorl44ef56c   Ready    <none>                   9m   v1.22.4

Düğümü kaldırmak için redis sunucusunun dağıtımını şu komutla silin:

kubectl delete -f node-anti-affinity.yaml

Kubernetes pod benşim kuralları hakkında daha fazla bilgi için bkz . Düğümlere Pod Atama.

Yatay otomatik ölçeklendirici sorunlarını giderme

Hedef küme için Yatay Pod Otomatik Ölçeklendiricisi etkinleştirildiğinde, yönetim kümesinde adlı <cluster_name>-cluster-autoscaler yeni bir Kubernetes dağıtımı oluşturulur. Bu dağıtım, podları zamanlamak için yeterli çalışan düğümü olduğundan emin olmak için hedef kümeyi izler.

Otomatik ölçeklendiriciyle ilgili sorunlarda hata ayıklamanın bazı farklı yolları şunlardır:

  • Yönetim kümesinde çalışan küme otomatik ölçeklendiricisi podları ölçeklendirme kararlarını nasıl aldığı, getirmesi veya kaldırması gereken düğüm sayısı ve karşılaşabileceği genel hatalar hakkında yararlı bilgiler toplar. Otomatik ölçeklendirici bu bilgileri günlüklere kaydeder. Günlüklere erişmek için aşağıdaki komutu çalıştırın:

    kubectl --kubeconfig $(Get-AksHciConfig).Kva.kubeconfig logs -l app=<cluster_name>-cluster-autoscaler
    
  • Bulut operatörü, yönetim kümesindeki Kubernetes olaylarını günlüğe kaydeder. Bu, otomatik ölçeklendiricinin bir küme ve düğüm havuzu için ne zaman etkinleştirildiğini veya devre dışı bırakıldığını anlamanıza yardımcı olabilir. Bunlar aşağıdaki komut çalıştırılarak görüntülenebilir:

    kubectl --kubeconfig $(Get-AksHciConfig).Kva.kubeconfig get events
    
  • Küme otomatik ölçeklendiricisi dağıtımı, yönettiği hedef kümede bir configmap oluşturur. Bu configmap , otomatik ölçeklendiricinin durum kümesi genelinde ve düğüm havuzu başına durumu hakkında bilgi içerir. Durumu görüntülemek için hedef kümede aşağıdaki komutu çalıştırın:

    Not

    Söz konusu hedef kümeye erişmek için bilgileri almak kubeconfig için komutunu çalıştırdığınızdan Get-AksHciCredentials -Name <clustername> emin olun.

    kubectl --kubeconfig ~\.kube\config get configmap cluster-autoscaler-status -o yaml
    
  • Küme otomatik ölçeklendiricisi, kümenin düğüm havuzunu ölçeklendirirken olayları küme otomatik ölçeklendiricisi durumunda configmap günlüğe kaydeder. Hedef kümede şu komutu çalıştırarak bu günlükleri görüntüleyebilirsiniz:

    kubectl --kubeconfig ~\.kube\config describe configmap cluster-autoscaler-status
    
  • Küme otomatik ölçeklendiricisi, pod zamanlanamazsa ölçeklendirme kararı alırken hedef kümedeki podlardaki olayları yayar. Poddaki olayları görüntülemek için şu komutu çalıştırın:

    kubectl --kubeconfig ~\.kube\config describe pod <pod_name>
    

PowerShell başvurusu

Küme otomatik ölçeklendirmesini destekleyen PowerShell cmdlet'leri için aşağıdaki başvuru sayfalarına bakın:

Sonraki adımlar