Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan használhat csomópont-szennyezettségeket egy Azure Kubernetes Service (AKS)-fürtön.
Áttekintés
Az AKS ütemezési mechanizmusa felelős a podok csomópontokra való elhelyezéséért, és a felsőbb rétegbeli Kubernetes-ütemezőn, a kube-scheduleren alapul. A podok adott csomópontokon való futtatását korlátozhatja úgy, hogy a podokat csomópont-affinitással egy csomópontkészlethez csatolja, vagy utasítja a csomópontot, hogy taszítsa el a podok egy csoportját csomópont-szennyeződések használatával, amelyek az AKS-ütemezővel kommunikálnak.
A csomópontok foltjai megjelölnek egy csomópontot, hogy az ütemező rendszer ne helyezzen el bizonyos podokat a megjelölt csomópontokon. Elnézéseket helyezhet el egy podon, hogy az ütemező egy hozzáillő jelöléssel rendelkező csomóponton ütemezhesse azt. A taints és a tolerations együtt segít szabályozni, hogy az ütemező hogyan helyezi el a podokat a csomópontokra. További információkért lásd a taintok és a toleranciák példahasználati eseteit.
A taints kulcs-érték párok effektussal. Az effektusmezőnek három értéke van a csomóponthálózatok használatakor: NoExecute, NoScheduleés PreferNoSchedule.
-
NoExecute: A csomóponton már futó podok azonnal törlődnek, ha nem rendelkeznek megfelelő tűréssel. Ha egy pod rendelkezik megfelelő tűréssel, előfordulhat, hogy kizárásra kerül, hatolerationSecondsmeg van adva. -
NoSchedule: Ezen a csomóponton csak a megfelelő tűrésű podok vannak elhelyezve. A meglévő podok nem lesznek kiürítve. -
PreferNoSchedule: Az ütemező nem helyez el olyan podokat, amelyek nem rendelkeznek megfelelő tűréssel.
Csomópont-fertőzöttség beállításai
Az AKS csomópontokhoz kétféle csomópont-taint alkalmazható: csomópont-taint és csomópont-inicializálási taint.
- A csomópont szennyezések állandóan a csomóponton maradnak a csomópont affinitással rendelkező podok ütemezéséhez. A csomópontok szennyezései csak az AKS API használatával adhatók hozzá, frissíthetők vagy távolíthatók el teljesen.
- A csomóponti inicializálási foltok a rendszerindításkor kerülnek a csomópontra, és ideiglenesen alkalmazandók, például olyan helyzetekben, amikor a csomópontok beállításához további időre lehet szükség. A Kubernetes API-val eltávolíthatja a csomópontinicializálási szennyezettséget, és ezek nem garantáltak a csomópont életciklusa során. Ezek a csomópont új replikáin jelennek meg, amikor felskálázzák, vagy az összes replikán, amikor a csomópontot frissítik. Ha teljesen el szeretné távolítani az inicializálási hibákat, az AKS API-val eltávolíthatja őket, miután a Kubernetes API-val megszüntette a csomópontok felkenését. Miután az AKS API-val eltávolítja az inicializálási jelöléseket a fürt specifikációjából, az újonnan létrehozott csomópontok már nem tartalmazzák ezeket az inicializálási jelöléseket. Ha az inicializálási fertőzöttség továbbra is jelen van a meglévő csomópontokon, véglegesen eltávolíthatja azt egy csomópontrendszerkép-frissítési művelet végrehajtásával.
Feljegyzés
Az AKS-csomópontkészlet API-val alkalmazott csomópontok és címkék nem módosíthatók a Kubernetes API-ból, és fordítva. A rendszerfoltok módosítása nem engedélyezett.
Ez nem vonatkozik a csomópont inicializálási taintjeire.
Csomópont korlátok használata
Előfeltételek
Ez a cikk feltételezi, hogy van egy meglévő AKS klasztere. Ha AKS-fürtre van szüksége, létrehozhat egyet Azure CLI, Azure PowerShell vagy a Azure portál használatával.
Csomópontkészlet létrehozása csomópont-fertőzöttséggel
Hozzon létre egy csomópontkészletet a parancs használatával
az aks nodepool add, és használja a--node-taintsparamétert a fertőzöttség megadásáhozsku=gpu:NoSchedule.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 1 \ --node-taints "sku=gpu:NoSchedule" \ --no-waitEllenőrizze a csomópontkészlet állapotát.
Csomópontkészlet frissítése csomópont-fertőzöttség hozzáadásához
Frissítsen egy csomópontkészletet a csomópont-fertőzöttség hozzáadásához a
az aks nodepool updateparancs használatával, és használja a--node-taintsparamétert a fertőzöttség megadásáhozsku=gpu:NoSchedule.az aks nodepool update \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-taints "sku=gpu:NoSchedule" \ --no-waitEllenőrizze a csomópontkészlet állapotát.
Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.
Csomópont-inicializálási szennyezések használata (előzetes verzió)
Fontos
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat támogatja a tőlük telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Előfeltételek és korlátozások
- Telepítenie és konfigurálnia kell a Azure CLI
3.0.0b3vagy újabb verzióját. A verzió azonosításához futtassa a következőt:az --version. Ha telepítenie vagy frissítenie kell, tekintse meg a Install Azure CLI című témakört. - Az inicializálási taint-eket csak a fürt létrehozásakor vagy frissítésekor alkalmazhatja, amikor az AKS API-t használja. Ha olyan ARM-sablont használ, amely egy felügyelt fürtszintű műveletet eredményez, megadhatja a csomópont inicializálási szennyezettségeit a csomópontkészlet létrehozása és frissítése során. Az ügynökkészletszintű műveletek blokkolva vannak, ha
NodeInitializationTaintsmegtalálhatók a kérelem törzsében. - Az inicializálási bélyegek nem alkalmazhatók Windows csomópontkészletekre az Azure CLI használatával.
A fürt hitelesítő adatainak lekérése
Kérje le az AKS-fürt hitelesítő adatait a
az aks get-credentialsparanccsal.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
A aks-preview Azure CLI bővítmény telepítése
Regisztrálja vagy frissítse az aks-preview bővítményt a
az extension addvagyaz extension updateparancs használatával.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Regisztrálja a NodeInitializationTaintsPreview funkciójelzőt
Regisztrálja a
NodeInitializationTaintsPreviewfunkciójelzőt aaz feature registerparanccsal.az feature register --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.
Ellenőrizze a regisztrációs állapotot a
az feature showparanccsal.az feature show --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"Ha az állapot Regisztrált, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a
az provider registerparanccsal.az provider register --namespace Microsoft.ContainerService
Klaszter létrehozása csomópont inicializálási toleranciával
Hozzon létre egy fürtöt egy csomópont inicializálási akadályával a
az aks createparancs és a--node-init-taintsparaméter segítségével, hogy meghatározza asku=gpu:NoScheduleakadályt.Fontos
Az Ön által megadott csomópont-inicializálási szennyezések a fürt összes csomópontcsoportjára vonatkoznak. Ha egy adott csomópontra szeretné alkalmazni az inicializálási hibát, a parancssori felület helyett ARM-sablont használhat.
az aks create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-count 1 \ --node-init-taints "sku=gpu:NoSchedule" \ --generate-ssh-keysEllenőrizze a csomópontkészlet állapotát.
Fürt frissítése csomópont inicializálási fertőzöttség hozzáadásához
Frissítsen egy fürtöt, hogy hozzáadjon egy csomópont inicializálási fertőzöttet a
az aks updateparancs és a--node-init-taintsparaméter használatával a fertőzöttséghez.sku=gpu:NoScheduleFontos
Amikor csomópont inicializálási fertőzöttséggel frissít egy fürtöt, a hibák a fürt összes csomópontkészletére érvényesek. Ha a csomópontok VMSS-t használnak, megtekintheti a csomópont inicializálási taint-ek frissítéseit a csomópont VMSS-modelljének frissítését követően (például a csomópont képfájljának verziófrissítése után). Az inicializálási foltok nem fognak megjelenni a csomópontokon, amíg egy VMSS modellfrissítést kiváltó művelet meg nem történik.
az aks update \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-init-taints "sku=gpu:NoSchedule"Ellenőrizze a csomópontkészlet állapotát.
A csomópontkészlet állapotának ellenőrzése
A csomópont- vagy inicializálási fertőzöttség alkalmazása után ellenőrizze a csomópontkészlet állapotát a
az aks nodepool listparanccsal.az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAMEHa taint-eket alkalmazott a csomópontokra, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>csomópontkészletCreatingcsomópontokkal rendelkezik, amelyek a megadottnodeTaints-et tartalmazzák:[ { ... "count": 1, ... "name": "<node-pool-name>", "orchestratorVersion": "1.15.7", ... "provisioningState": "Creating", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]Ha csomópont inicializálási hibákat alkalmazott, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>csomópontkészletCreatinga megadottnodeInitializationTaintscsomópontokkal rendelkező csomópontok:[ { ... "count": 1, ... "name": "<node-pool-name>", "orchestratorVersion": "1.15.7", ... "provisioningState": "Creating", ... "nodeInitializationTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton
A
kubectl describe nodeparanccsal ellenőrizze a csomópont taint-jeit és az inicializálási taint-eket a csomópont konfigurációjában.kubectl describe node $NODE_NAMEHa csomópontszennyeződéseket alkalmazott, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>csomópontkészlete a megadottTaints.[ ... Name: <node-pool-name> ... Taints: sku=gpu:NoSchedule ... ], ... ... ]
Fontos
Ha a csomópontok VMSS-t használnak, a csomópont-inicializálási hibák nem lesznek láthatók a fürt tényleges csomópontjaikon, amíg nem történik meg a VMSS-modell frissítését kiváltó művelet (például a Kubernetes verziófrissítése vagy a csomópont képverziójának frissítése).
Csomópont szennyeződések eltávolítása
Adott csomópont-fertőzöttség eltávolítása
Távolítsa el a csomópont-fertőzötteket a
az aks nodepool updateparanccsal. Az alábbi példaparancs eltávolítja a"sku=gpu:NoSchedule"csomópont-fertőzöttet a csomópontkészletből.az aks nodepool update \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --node-taints ""
Az összes csomópont-taint eltávolítása
Távolítsa el az összes csomópont-fertőzést egy csomópontkészletből a
az aks nodepool updateparancs használatával. Az alábbi példaparancs eltávolítja az összes csomópont-fertőzést a csomópontkészletből.az aks nodepool update \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --name $NODE_POOL_NAME \ --node-taints ""
Csomópont-inicializálási hibák eltávolítása
A csomópont inicializálási fertőzöttjeinek eltávolítására az alábbi lehetőségek állnak rendelkezésre:
- Ideiglenesen távolítsa el a csomópont-inicializálási tainteket a Kubernetes API használatával. Ha így távolítja el őket, a fertőzöttek újra megjelennek a csomópontok skálázása vagy frissítése után. Skálázás után az új csomópontok még mindig rendelkeznek a csomópont inicializálási bélyegével. A csomópont-inicializálási hibák a frissítés után minden csomóponton megjelennek.
- A csomópont inicializálási taintjainak végleges eltávolításához törölje a csomópontot a Kubernetes API használatával, majd távolítsa el a fertőzöttet az AKS API használatával. Miután az inicializálási taint-eket eltávolították a fürt specifikációjából az AKS API-val, az újraimázsolási műveletek után létrehozott új csomópontok már nem rendelkeznek inicializálási taint-ekkel.
Ha eltávolítja az összes inicializálási fertőzött előfordulást a csomópontkészlet replikáiból, előfordulhat, hogy a meglévő inicializálási fertőzöttség az új inicializálási hibákkal végzett frissítés után újra megjelenik.
Csomópont inicializálási fertőzöttjeinek ideiglenes eltávolítása
A parancs használatával ideiglenesen távolítsa el a csomópont-inicializálási
kubectl taint nodeshibákat.Ez a parancs csak a megadott csomópontról távolítja el a fertőzöttet. Ha el szeretné távolítani a fertőzöttet a csomópontkészlet minden csomópontjáról, minden olyan csomópontra futtatnia kell a parancsot, amelyből el szeretné távolítani a fertőzöttet.
kubectl taint nodes $NODE_POOL_NAME sku=gpu:NoSchedule-Az eltávolítás után a csomópont-inicializálási beszennyeződések újra megjelennek, amikor a csomópontok skálázása vagy frissítése megtörténik.
Csomópont-inicializálási hibák végleges eltávolítása
Kövesse a Csomópont inicializálási taintjeinek ideiglenes eltávolítása lépéseit a csomópont inicializálási taintjének eltávolításához a Kubernetes API használatával.
Távolítsa el a fertőzöttet a csomópontról az AKS API használatával a
az aks updateparancs használatával. Ez a parancs eltávolítja a csomópont-inicializálási taintet a fürt minden csomópontjáról.az aks update \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-init-taints ""
Ellenőrizze, hogy a taint el lett-e távolítva a csomópontról
A
kubectl describe nodeparanccsal ellenőrizze a csomópont taint-jeit és az inicializálási taint-eket a csomópont konfigurációjában.kubectl describe node $NODE_NAMEHa eltávolított egy csomópont gyalázást, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>csomópontkészlet nem rendelkezik az eltávolított gyalázással aTaintsnév alatt.[ ... Name: <node-pool-name> ... Taints: ... ], ... ... ]
Következő lépések
- További információ a szennyeződések és toleranciák példahasználati esetekről.
- További információkat találhat a legjobb gyakorlatokról az AKS-ütemező speciális funkcióit illetően.
- További információ a Kubernetes-címkékről a Kubernetes-címkék dokumentációjában.