Aracılığıyla paylaş


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ı nodepool1mevcut 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 nodepool1gerekir. Bu örnekte, bu yeni düğüm havuzunu mynodepoolçağıracağız.

Ayarlar > Düğümü havuzları'na gidilen kümenin Azure portalı sayfasının ekran görüntüsü. Düğüm havuzu 1 adlı bir düğüm havuzu gösterilir.

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 Systembunu 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:

Ayarlar > Düğümü havuzları'na gidilen kümenin Azure portalı sayfasının ekran görüntüsü. Düğüm havuzu 1 adlı iki düğüm havuzu ve düğüm havuzum gösterilir.

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 nodeskordona 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-agentgibicoredns-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:

Ayarlar > Düğümü havuzları'na gidilen kümenin Azure portalı sayfasının ekran görüntüsü. Düğüm havuzum adlı bir düğüm havuzu gösterilir.

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.