Csomópontkészletek átméretezése az Azure Kubernetes Service-ben (AKS)
Az egyre több üzemelő példány miatt vagy a nagyobb munkaterhelés biztosítása érdekében célszerű módosítani a virtuálisgép-méretezési csoport előfizetését vagy átméretezni az AKS-példányokat. Az AKS támogatási szabályzatai szerint azonban:
Az AKS-ügynökcsomópontok normál Azure IaaS-erőforrásként jelennek meg az Azure Portalon. Ezek a virtuális gépek azonban egy egyéni Azure-erőforráscsoportba vannak üzembe helyezve (általában MC_*előtaggal). Az IaaS API-k vagy erőforrások használatával nem hajthat végre közvetlen testreszabásokat ezeken a csomópontokon. Az AKS API-val nem végzett egyéni módosítások nem maradnak meg frissítéssel, méretezéssel, frissítéssel vagy újraindítással.
Az adatmegőrzés hiánya az átméretezési műveletre is vonatkozik, így az AKS-példányok ilyen módon történő átméretezése nem támogatott. Ebben az útmutatóban megismerheti a forgatókönyv megoldásához javasolt módszert.
Fontos
Ez a módszer a virtuálisgép-méretezési csoportalapú AKS-fürtökre vonatkozik. Virtuálisgép-rendelkezésre állási csoportok használatakor fürtönként csak egy csomópontkészletet használhat.
Példaerőforrások
Tegyük fel, hogy át szeretne méretezni egy meglévő csomópontkészletet, amelynek neve nodepool1
sKU-méretről Standard_DS2_v2 Standard_DS3_v2. A feladat elvégzéséhez létre kell hoznia egy új csomópontkészletet Standard_DS3_v2 használatával, át kell helyeznie a számítási feladatokat az új csomópontkészletbe nodepool1
, és el kell távolítania nodepool1
. Ebben a példában ezt az új csomópontkészletet mynodepool
hívjuk meg.
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>
Új csomópontkészlet létrehozása a kívánt termékváltozattal
Az átméretezés során mindenképpen vegye figyelembe az összes számítási feladatra vonatkozó követelményt, például a rendelkezésre állási zónákat, és ennek megfelelően konfigurálja a csomópontkészletet. Előfordulhat, hogy az igényeinek leginkább megfelelő módon módosítania kell a következő parancsot. A konfigurációs beállítások teljes listáját a az aks nodepool add
referenciaoldalon találja.
az aks nodepool add
A parancs használatával hozzon létre egy új csomópontkészletet mynodepool
három csomóponttal a Standard_DS3_v2
virtuálisgép-termékváltozat használatával:
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
Feljegyzés
Minden AKS-fürtnek legalább egy, legalább egy csomóponttal rendelkező rendszercsomópontkészletet kell tartalmaznia. A fenti példában az egyiket --mode
System
használjuk, mivel a fürtnek csak egy csomópontkészlete van, ezért egy System
csomópontkészletre van szükség a lecseréléséhez. A csomópontkészletek üzemmódja bármikor frissíthető.
Néhány perc múlva létrejött az új csomópontkészlet:
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
A meglévő csomópontok kordonozása
A kordonálás nem ütemezhetőként jelöli meg a megadott csomópontokat, és megakadályozza, hogy további podok legyenek hozzáadva a csomópontokhoz.
Először szerezze be azoknak a csomópontoknak a nevét, amellyel a kordont szeretné használni kubectl get nodes
. A kimenetnek a következőhöz hasonlóan kell kinéznie:
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
kubectl cordon <node-names>
Ezután adja meg a kívánt csomópontokat egy szóközzel elválasztott listában:
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
A meglévő csomópontok kiürítése
Fontos
A csomópontok kiürítéséhez és a futó podok kiürítéséhez győződjön meg arról, hogy minden PodDisruptionBudgets (PDB) lehetővé teszi, hogy egyszerre legalább egy podreplika áthelyezhető legyen. Ellenkező esetben a kiürítési/kiürítési művelet sikertelen lesz. Ennek ellenőrzéséhez futtathatja kubectl get pdb -A
és ellenőrizheti ALLOWED DISRUPTIONS
, hogy legalább egy vagy több-e.
A csomópontok ürítése miatt a rajtuk futó podok ki lesznek ürítve, és újra létrejönnek a másik, áttelepíthető csomóponton.
Csomópontok kiürítéséhez használja kubectl drain <node-names> --ignore-daemonsets --delete-emptydir-data
ismét a csomópontnevek szóközzel elválasztott listáját:
Fontos
A használat --delete-emptydir-data
szükséges az AKS által létrehozott coredns
és metrics-server
podok kiürítéséhez. Ha nem használja ezt a jelzőt, hiba várható. További információkért tekintse meg az emptydir dokumentációját.
kubectl drain aks-nodepool1-31721111-vmss000000 aks-nodepool1-31721111-vmss000001 aks-nodepool1-31721111-vmss000002 --ignore-daemonsets --delete-emptydir-data
A leeresztési művelet befejeződése után a démonkészletek által ellenőrzött podokon kívül minden pod fut az új csomópontkészleten:
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>
Hibaelhárítás
Az alábbihoz hasonló hibaüzenet jelenhet meg:
Hiba a podok kiürítésekor/[podname] -n [névtér] (5s után újra próbálkozik): Nem lehet kiüríteni a podot, mert az sérti a pod megszakadási költségvetését.
A fürt alapértelmezés szerint AKS_managed podkimaradási költségvetéssel (például coredns-pdb
vagy konnectivity-agent
) rendelkezik 1-ből MinAvailable
. Ha például két coredns
pod fut, miközben az egyik újra létrejön, és nem érhető el, a másikat nem lehet befolyásolni a podok megszakadási költségvetése miatt. Ez a kezdeti coredns
pod ütemezése és futtatása után megszűnik, így a második podot megfelelően kiüríti és újra létrehozza.
Tipp.
Fontolja meg a csomópontok egyenkénti ürítését a zökkenőmentesebb kiürítési élmény érdekében, és kerülje a szabályozást. További információk:
A meglévő csomópontkészlet eltávolítása
A meglévő csomópontkészlet törléséhez használja az Azure Portalt vagy a az aks nodepool delete
következő parancsot:
az aks nodepool delete \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name nodepool1
A befejezés után a végeredmény az AKS-fürt, amely egyetlen új csomópontkészlettel rendelkezik az új, kívánt termékváltozat méretével, valamint az összes alkalmazás és pod megfelelően fut:
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
Következő lépések
A csomópontkészlet kordonozással és vízelvezetéssel történő átméretezése után további információ a több csomópontkészlet használatáról.
Azure Kubernetes Service