Azure Arc tarafından etkinleştirilen AKS'de küme otomatik ölçeklendirmesi için PowerShell kullanma
Şunlar için geçerlidir: Azure Yerel 22H2'de 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 komutuna New-AksHciCluster
geçirmek üzere yeni Set-AksHciCluster
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 enableAutoScaler
Set-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 autoScaler
kullanınSet-AksHciNodePool
:
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 enableAutoScaler
false olarak ayarlayınSet-AksHciCluster
:
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ı mycluster
bir 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-generator-2
kullanınload-generator
.
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. Buconfigmap
, 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
Get-AksHciCredentials -Name <clustername>
için komutunu çalıştırdığınızdankubeconfig
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:
- Get-AksHciAutoScalerProfile
- AKS için Get-AksHciCluster
- AKS için Get-AksHciNodePool
- New-AksHciAutoScalerProfile
- New-AksHciCluster
- New-AksHciNodePool
- Remove-AksHciAutoScalerProfile
- Set-AksHciAutoScalerProfile
- Set-AksHciCluster
- Set-AksHciNodePool