Azure Kubernetes Service'de (AKS) düğüm havuzlarını yeniden boyutlandırma
Dağıtım sayısındaki artıştan dolayı veya daha büyük bir iş yükü çalıştırmak için sanal makine ölçek kümesi planını değiştirmek veya AKS örneklerini yeniden boyutlandırmak isteyebilirsiniz. Ancak AKS için destek ilkelerine göre:
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 aracılığıyla yapılmayan özel değişiklikler yükseltme, ölçeklendirme, güncelleştirme veya yeniden başlatma yoluyla kalıcı olmaz.
Bu kalıcılık eksikliği yeniden boyutlandırma işlemi için de geçerlidir, bu nedenle AKS örneklerini bu şekilde yeniden boyutlandırma desteklenmez. Bu nasıl yapılır kılavuzunda, bu senaryoyu ele almak için önerilen yöntemi öğreneceksiniz.
Önemli
Bu yöntem sanal makine ölçek kümesi tabanlı AKS kümelerine özgüdür. Sanal makine kullanılabilirlik kümelerini kullanırken, küme başına yalnızca bir düğüm havuzuyla sınırlıdır.
Örnek kaynaklar
adlı nodepool1
mevcut bir düğüm havuzunu SKU boyutundan Standard_DS2_v2 Standard_DS3_v2 olarak yeniden boyutlandırmak istediğinizi varsayalım. Bu görevi gerçekleştirmek için Standard_DS3_v2 kullanarak yeni bir düğüm havuzu oluşturmanız, iş yüklerini 'den nodepool1
yeni düğüm havuzuna taşımanız ve kaldırmanız nodepool1
gerekir. Bu örnekte, bu yeni düğüm havuzunu mynodepool
çağıracağız.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-31721111-vmss000000 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000002 Ready agent 10d v1.21.9
kubectl get pods -o wide -A
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default sampleapp2-74b4b974ff-676sz 1/1 Running 0 93m 10.244.1.6 aks-nodepool1-31721111-vmss000002 <none> <none>
default sampleapp2-76b6c4c59b-pfgbh 1/1 Running 0 94m 10.244.1.5 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-4n66k 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-9p4c8 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system azure-ip-masq-agent-nb7mx 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system coredns-845757d86-dtvvs 1/1 Running 0 10d 10.244.0.2 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system coredns-845757d86-x27pp 1/1 Running 0 10d 10.244.2.3 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system coredns-autoscaler-5f85dc856b-nfrmh 1/1 Running 0 10d 10.244.2.4 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-9nfzt 3/3 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system csi-azuredisk-node-bblsb 3/3 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-tjhj4 3/3 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-9pcr8 3/3 Running 0 3d10h 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-bh2pc 3/3 Running 0 3d10h 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azurefile-node-h75gq 3/3 Running 0 3d10h 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-ngdlb 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-rvvqt 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-4wzx7 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-g5tvr 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system kube-proxy-mrv54 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system metrics-server-774f99dbf4-h52hn 1/1 Running 1 3d10h 10.244.1.3 aks-nodepool1-31721111-vmss000002 <none> <none>
İstenen SKU ile yeni bir düğüm havuzu oluşturma
VM SKU'su kullanarak Standard_DS3_v2
üç düğümle adlı mynodepool
yeni bir düğüm havuzu oluşturmak için az aks nodepool add komutunu kullanın:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 3 \
--node-vm-size Standard_DS3_v2 \
--mode System \
--no-wait
Not
Her AKS kümesi en az bir düğüme sahip en az bir sistem düğümü havuzu içermelidir. Yukarıdaki örnekte, kümenin yalnızca bir --mode
düğüm havuzuna sahip olduğu varsayıldığından, bir düğüm havuzunun System
bunu değiştirmesini zorunlu System
kıldığı için öğesini kullanıyoruz. Düğüm havuzunun modu istediğiniz zaman güncelleştirilebilir.
Yeniden boyutlandırırken diğer gereksinimleri dikkate aldığınızdan ve düğüm havuzunuzu uygun şekilde yapılandırdığınızdan emin olun. Yukarıdaki komutu değiştirmeniz gerekebilir. Yapılandırma seçeneklerinin tam listesi için az aks nodepool add reference sayfasına bakın.
Birkaç dakika sonra yeni düğüm havuzu oluşturuldu:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-mynodepool-20823458-vmss000000 Ready agent 23m v1.21.9
aks-mynodepool-20823458-vmss000001 Ready agent 23m v1.21.9
aks-mynodepool-20823458-vmss000002 Ready agent 23m v1.21.9
aks-nodepool1-31721111-vmss000000 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 10d v1.21.9
aks-nodepool1-31721111-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.
İlk olarak, ile kubectl get nodes
kordona almak istediğiniz düğümlerin adlarını alın. Çıkışınız aşağıdakine benzer görünmelidir:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-31721111-vmss000000 Ready agent 7d21h v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 7d21h v1.21.9
aks-nodepool1-31721111-vmss000002 Ready agent 7d21h v1.21.9
Ardından, kullanarak kubectl cordon <node-names>
boşlukla ayrılmış bir listede istenen düğümleri belirtin:
kubectl cordon aks-nodepool1-31721111-vmss000000 aks-nodepool1-31721111-vmss000001 aks-nodepool1-31721111-vmss000002
node/aks-nodepool1-31721111-vmss000000 cordoned
node/aks-nodepool1-31721111-vmss000001 cordoned
node/aks-nodepool1-31721111-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. Bunu denetlemek için komutunu çalıştırabilir kubectl get pdb -A
ve en az bir veya daha yüksek olduğunu doğrulayabilirsiniz ALLOWED DISRUPTIONS
.
Düğümlerin boşaltılması, üzerinde çalışan podların diğer zamanlanabilir düğümlerde çıkarılmasına ve yeniden oluşturulmasına neden olur.
Düğümleri boşaltmak için, düğüm adlarının boşlukla ayrılmış listesini kullanarak komutunu yeniden kullanın kubectl drain <node-names> --ignore-daemonsets --delete-emptydir-data
:
Önemli
AKS tarafından oluşturulan coredns
ve metrics-server
podları çıkarmak için kullanmak --delete-emptydir-data
gerekir. Bu bayrak kullanılmıyorsa bir hata beklenir. Daha fazla bilgi için emptydir belgelerine bakın.
kubectl drain aks-nodepool1-31721111-vmss000000 aks-nodepool1-31721111-vmss000001 aks-nodepool1-31721111-vmss000002 --ignore-daemonsets --delete-emptydir-data
Boşaltma işlemi tamamlandıktan sonra, daemon kümeleri tarafından denetlenenler dışındaki tüm podlar yeni düğüm havuzunda çalışır:
kubectl get pods -o wide -A
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default sampleapp2-74b4b974ff-676sz 1/1 Running 0 15m 10.244.4.5 aks-mynodepool-20823458-vmss000002 <none> <none>
default sampleapp2-76b6c4c59b-rhmzq 1/1 Running 0 16m 10.244.4.3 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-4n66k 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-9p4c8 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system azure-ip-masq-agent-nb7mx 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system azure-ip-masq-agent-sxn96 1/1 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-tsq98 1/1 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system azure-ip-masq-agent-xzrdl 1/1 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system coredns-845757d86-d2pkc 1/1 Running 0 17m 10.244.3.2 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system coredns-845757d86-f8g9s 1/1 Running 0 17m 10.244.5.2 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system coredns-autoscaler-5f85dc856b-f8xh2 1/1 Running 0 17m 10.244.4.2 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azuredisk-node-7md2w 3/3 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system csi-azuredisk-node-9nfzt 3/3 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system csi-azuredisk-node-bblsb 3/3 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-lcmtz 3/3 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azuredisk-node-mmncr 3/3 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system csi-azuredisk-node-tjhj4 3/3 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-29w6z 3/3 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azurefile-node-4nrx7 3/3 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system csi-azurefile-node-9pcr8 3/3 Running 0 3d11h 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-bh2pc 3/3 Running 0 3d11h 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azurefile-node-gqqnv 3/3 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system csi-azurefile-node-h75gq 3/3 Running 0 3d11h 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-2bbp5 1/1 Running 0 17m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-7xzxj 1/1 Running 0 16m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system kube-proxy-4wzx7 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-7h8r5 1/1 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system kube-proxy-g5tvr 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system kube-proxy-mrv54 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system kube-proxy-nqmnj 1/1 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system kube-proxy-zn77s 1/1 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system metrics-server-774f99dbf4-2x6x8 1/1 Running 0 16m 10.244.4.4 aks-mynodepool-20823458-vmss000002 <none> <none>
Sorun giderme
Aşağıdakine benzer bir hata görebilirsiniz:
Podlar çıkarılırken hata/[podname] -n [ad alanı] (5 sn sonra yeniden denenecek): Pod kesinti bütçesini ihlal edeceğinden pod çıkarılamıyor.
Varsayılan olarak, kümenizde 1 ile AKS_managed pod kesintisi bütçeleri (veya konnectivity-agent
gibicoredns-pdb
) MinAvailable
vardır. Örneğin, biri yeniden oluşturulurken ve kullanılamaz durumdayken çalışan iki coredns
pod varsa, diğeri pod kesinti bütçesi nedeniyle etkilenmez. bu, ilk coredns
pod zamanlanıp çalıştırıldıktan sonra kendini çözümleyerek ikinci pod'un düzgün şekilde çıkarılıp yeniden oluşturulmasına olanak sağlar.
İpucu
Daha sorunsuz bir çıkarma deneyimi ve azaltmayı önlemek için düğümleri birer birer boşaltmayı göz önünde bulundurun. Daha fazla bilgi için bkz.
Mevcut düğüm havuzunu kaldırma
Mevcut düğüm havuzunu silmek için Azure portalını veya az aks nodepool delete komutunu kullanın:
az aks nodepool delete \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name nodepool1
Tamamlandıktan sonra nihai sonuç, AKS kümesinin yeni, istenen SKU boyutuna sahip tek ve yeni bir düğüm havuzuna sahip olması ve tüm uygulama ve podların düzgün çalışmasıdır:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-mynodepool-20823458-vmss000000 Ready agent 63m v1.21.9
aks-mynodepool-20823458-vmss000001 Ready agent 63m v1.21.9
aks-mynodepool-20823458-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.
Azure Kubernetes Service