Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Artan sayıda dağıtıma uyum sağlamak veya daha büyük bir iş yükü çalıştırmak için sanal makinelerinizin (VM) boyutunu değiştirmek isteyebilirsiniz. AKS örneklerini doğrudan yeniden boyutlandırma, AKS'de Sanal Makine Ölçek Kümeleri kullanılırken , AKS için destek ilkelerinde açıklandığı gibi desteklenmez:
AKS aracı düğümleri Azure portalında normal Azure IaaS kaynakları olarak görünür. Ancak bu sanal makineler özel bir Azure kaynak grubuna dağıtılır (genellikle MC_* ile ön eklenmiştir). IaaS API'lerini veya kaynaklarını kullanarak bu düğümlerde doğrudan özelleştirme yapamazsınız. AKS API'si aracılığıyla yapılmayacak özel değişiklikler yükseltme, ölçeklendirme, güncelleştirme veya yeniden başlatma yoluyla kalıcı olmaz.
Bu makalede, istenen SKU boyutuna sahip yeni bir düğüm havuzu oluşturarak, mevcut düğümleri bağlayıp boşaltarak ve ardından mevcut düğüm havuzunu kaldırarak düğüm havuzunu yeniden boyutlandırmak için önerilen yöntemi öğreneceksiniz.
Önemli
Bu yöntem Sanal Makine Ölçek Kümeleri tabanlı AKS kümelerine özgüdür. Sanal Makineler tabanlı düğüm havuzlarını kullanırken, tek bir Azure CLI komutu kullanarak mevcut bir düğüm havuzundaki VM boyutlarını kolayca güncelleştirebilir ve aynı düğüm havuzunda birden çok VM boyutuna sahip olabilirsiniz. Daha fazla bilgi için Sanal Makineler düğüm havuzları belgelerine bakın.
İstenen SKU ile yeni bir düğüm havuzu oluşturma
Not
Her AKS kümesi en az bir düğüme sahip en az bir sistem düğümü havuzu içermelidir. Bu örnekte, yeniden boyutlandırmak istediğimiz sistem düğümü havuzunu değiştirmek için bir sistem düğümü havuzu eklemek amacıyla --mode ve System kullanırız. Düğüm havuzunun modunu istediğiniz zaman güncelleyebilirsiniz. Ayrıca, --mode'yi User olarak ayarlayarak bir kullanıcı düğümü havuzu ekleyebilirsiniz.
Yeniden boyutlandırırken kullanılabilirlik alanları gibi tüm iş yükü gereksinimlerini dikkate aldığınızdan ve VMSS düğüm havuzunuzu uygun şekilde yapılandırdığınızdan emin olun. Aşağıdaki komutu gereksinimlerinize en uygun şekilde değiştirmeniz gerekebilir. Yapılandırma seçeneklerinin tam listesi için başvuru sayfasına bakın az aks nodepool add .
komutunu kullanarak
az aks nodepool addyeni bir düğüm havuzu oluşturun. Bu örnekte, vm SKU'su olanmynodepoolmevcut düğüm havuzununStandard_DS3_v2yerine üç düğüm venodepool1VM SKU'su içeren yeni bir düğüm havuzuStandard_DS2_v2oluşturacağız.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name mynodepool \ --node-count 3 \ --node-vm-size Standard_DS3_v2 \ --mode System \ --no-waitYeni düğüm havuzunun oluşturulması birkaç dakika sürer.
komutunu kullanarak yeni düğüm havuzunun
kubectl get nodesdurumunu alın.kubectl get nodesÇıkışınız, hem yeni düğüm havuzunu hem de mevcut düğüm
mynodepoolhavuzununodepool1gösteren aşağıdaki örnek çıkışa benzemelidir:NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 23m v1.21.9 aks-nodepool1-12345678-vmss000000 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 10d v1.21.9
Mevcut düğümleri kordon altına alın
Kordonlama, belirtilen düğümleri zamanlanamaz olarak işaretler ve düğümlere daha fazla pod eklenmesini önler.
komutunu kullanarak
kubectl get nodeskablolamak istediğiniz düğümlerin adlarını alın.kubectl get nodesÇıkışınız, var olan düğüm havuzunda
nodepool1bulunan ve kablolamak istediğiniz düğümleri gösteren aşağıdaki örnek çıkışa benzemelidir:NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 7d21h v1.21.9Komutunu kullanarak
kubectl cordonvar olan düğümleri bağlayarak boşlukla ayrılmış bir listede istenen düğümleri belirtin. Örneğin:kubectl cordon aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002Çıkışınız, düğümlerin kordonlu olduğunu gösteren aşağıdaki örnek çıkışa benzemelidir:
node/aks-nodepool1-12345678-vmss000000 cordoned node/aks-nodepool1-12345678-vmss000001 cordoned node/aks-nodepool1-12345678-vmss000002 cordoned
Mevcut düğümleri boşaltma
Önemli
Düğümleri başarıyla boşaltmak ve çalışan podları çıkarmak için, podDisruptionBudgets(PDB) her seferinde en az bir pod çoğaltması taşınmasına izin verin. Aksi takdirde, boşaltma/çıkarma işlemi başarısız olur. Bu kontrolü gerçekleştirmek için kubectl get pdb -A komutunu çalıştırabilir ve ALLOWED DISRUPTIONS'in en az 1 veya daha yüksek olduğunu doğrulayabilirsiniz.
Düğümleri boşalttığınızda, üzerinde çalışan podlar tahliye edilir ve diğer planlanabilir düğümlerde yeniden oluşturulur.
Mevcut düğümleri,
kubectl drainkomutunu--ignore-daemonsetsve--delete-emptydir-databayraklarıyla kullanarak boşaltın; istenen düğümleri boşlukla ayrılmış bir listede belirtin. Örneğin:Önemli
AKS tarafından oluşturulan
--delete-emptydir-datavecorednspodları çıkarmak için kullanmakmetrics-servergerekir. Bu bayrağı kullanmıyorsanız bir hata alırsınız. Daha fazla bilgi için emptydir belgelerine bakın.kubectl drain aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002 --ignore-daemonsets --delete-emptydir-dataBoşaltma işlemi tamamlandıktan sonra tüm podlar (daemon kümeleri tarafından denetlenen podlar hariç) yeni düğüm havuzunda çalıştırılmalıdır. Komutunu kullanarak
kubectl get podsbunu doğrulayabilirsiniz.kubectl get pods -o wide -A
Pod çıkarma sorunlarını giderme
Düğümleri boşaltırken aşağıdaki hatayla karşılaşabilirsiniz:
Error when evicting pods/[podname] -n [namespace] (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Varsayılan olarak, kümenizde AKS tarafından yönetilen pod aksama bütçeleri (bütçeleri bulunur gibi coredns-pdb veya konnectivity-agent) vardır ve MinAvailable1'dir. Örneğin, çalışan iki coredns pod varsa, aynı anda yalnızca bir pod kesintiye uğrayabilir. Bunlardan biri yeniden oluşturulurken ve kullanılamaz durumdayken, pod kesintisi bütçesi nedeniyle diğer coredns pod'un çıkarılması mümkün değildir. Bu sorun, ilk coredns pod zamanlanıp çalıştırıldıktan sonra kendiliğinden çözülür, böylece ikinci podun düzgün bir şekilde çıkarılıp yeniden oluşturulması sağlanır.
İpucu
Daha akıcı bir süreç ve darboğazı önlemek için düğümleri birer birer boşaltmayı düşünün. Daha fazla bilgi için bkz.
Mevcut düğüm havuzunu kaldırma
Önemli
Düğüm havuzunu sildiğinizde AKS, kordon ve boşaltma gerçekleştirmez. Silmeyi planladığınız düğüm havuzunda şu anda çalışan podların yeniden zamanlanmalarından kaynaklanan kesintileri en aza indirmek için, silme işleminden önce düğüm havuzundaki tüm düğümlerde kordon ve boşaltma işlemleri gerçekleştirin.
komutunu kullanarak
az aks nodepool deleteözgün düğüm havuzunu silin.az aks nodepool delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1AKS kümenizin yalnızca yeni düğüm havuzuna sahip olduğunu ve uygulamaların ile podların düzgün çalıştığını
kubectl get nodeskomutunu kullanarak doğrulayın.kubectl get nodesÇıkışınız, yalnızca yeni düğüm havuzunu
mynodepoolgösteren aşağıdaki örnek çıkışa benzemelidir:NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 63m v1.21.9
Sonraki adımlar
Bir düğüm havuzunu kordon oluşturup boşaltarak yeniden boyutlandırdıktan sonra birden çok düğüm havuzu kullanma hakkında daha fazla bilgi edinin.