Csomópont-tárolók használata Azure Kubernetes Service-fürtökben
Ez a cikk az Azure Kubernetes Service (AKS) fürtök csomópontaintáinak használatát ismerteti.
Á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 sérülései úgy működnek, hogy megjelölnek egy csomópontot, hogy az ütemező ne helyezzen el bizonyos podokat a megjelölt csomópontokon. Tűréseket helyezhet el egy podon, hogy az ütemező ütemezze a podot egy csomóponton egyező fertőzöttséggel. 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 aintások é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 megfelelő tűréssel rendelkezik, a rendszer kizárhatja, hatolerationSeconds
meg 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ópontokra kétféle csomópont-fertőzöttség alkalmazható: csomópont-fertőzöttek és csomópont-inicializálási hibák.
- A csomópont-fertőzöttek a csomóponton maradnak a csomóponton a csomópont affinitással rendelkező podok ütemezéséhez. A csomópontok csak az AKS API használatával vehetők fel, frissíthetők vagy távolíthatók el teljesen.
- A csomóponti inicializálási hibák a rendszerindításkor kerülnek a csomópontra, és ideiglenesen használatosak, 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 fertőzöttséget, és a csomópont életciklusa során nem garantált. Ezek csak akkor jelennek meg, ha egy csomópontot felskáláznak vagy frissítenek/újraépítenek. Az új csomópontok skálázás után is fertőzöttek a csomópont inicializálásával. A csomópont-inicializálási hibák a frissítés után minden csomóponton megjelennek. 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ította az inicializálási szennyezettségeket a fürt specifikációjából, az újonnan létrehozott csomópontok nem találják meg ezeket az inicializálási hibákat. 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 rendszerhibák módosítása nem engedélyezett.
Ez nem vonatkozik a csomópont inicializálási fertőzöttjeire.
Csomópont-tárolók használata
Előfeltételek
Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal 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-taints
paramé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-wait
Ellenőrizze a csomópontkészlet állapotát.
Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.
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 update
parancs használatával, és használja a--node-taints
paramé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-wait
Ellenő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 hibák 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 fedezi a legjobb munkamennyiség alapján. 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 az Azure CLI-verziót vagy újabb verziót
3.0.0b3
. A verzió azonosításához futtassa a következőt:az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése. - Az inicializálási hibákat csak fürt létrehozása vagy frissítése útján alkalmazhatja az AKS API használatakor. ARM-sablonok használata esetén csomópont-inicializálási hibákat adhat meg a csomópontkészlet létrehozása és frissítése során.
- Az Azure CLI használatával nem alkalmazhat inicializálási hibákat a Windows-csomópontkészletekre.
A fürt hitelesítő adatainak lekérése
Kérje le az AKS-fürt hitelesítő adatait a
az aks get-credentials
paranccsal.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Az aks-preview
Azure CLI-bővítmény telepítése
Regisztrálja vagy frissítse az aks-preview bővítményt a vagy
az extension update
parancsaz extension add
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
A funkciójelző regisztrálása NodeInitializationTaintsPreview
Regisztrálja a
NodeInitializationTaintsPreview
funkciójelzőt aaz feature register
paranccsal.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 show
paranccsal.az feature show --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"
Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a
az provider register
paranccsal.az provider register --namespace Microsoft.ContainerService
Fürt létrehozása csomópont inicializálási fertőzöttséggel
Hozzon létre egy fürtöt egy csomópont inicializálási fertőzöttségével a
az aks create
parancs és a--node-initialization-taints
megszenvedendősku=gpu:NoSchedule
paraméter használatával.Fontos
A megadott csomópont-inicializálási hibák a fürt összes csomópontkészletére 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-keys
Ellenőrizze a csomópontkészlet állapotát.
Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.
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 update
parancs és a--node-initialization-taints
paraméter használatával a fertőzöttséghez.sku=gpu:NoSchedule
Fontos
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. Az újraimálási művelet után megtekintheti a csomópont inicializálási fertőzöttségeinek frissítéseit.
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.
Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.
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 list
paranccsal.az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
Ha csomópont-szennyezettségeket alkalmazott, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>
csomópontkészletCreating
a megadottnodeTaints
csomópontokkal rendelkező csomópontok:[ { ... "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észletCreating
a megadottnodeInitializationTaints
csomó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 parancs használatával ellenőrizze a csomópont-konfiguráció csomópont-fertőzöttségeit és csomóponti inicializálási szennyezettségeit
kubectl describe node
.kubectl describe node $NODE_NAME
Ha csomópont-szennyezettségeket alkalmazott, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>
csomópontkészlet a megadottTaints
:[ ... Name: <node-pool-name> ... Taints: sku=gpu:NoSchedule ... ], ... ... ]
Csomópont-fertőzöttek 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 update
paranccsal. 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 "sku=gpu:NoSchedule"
Az összes csomópont-fertőzött eltávolítása
Távolítsa el az összes csomópont-fertőzést egy csomópontkészletből a
az aks nodepool update
parancs 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. Az új csomópontok skálázás után is fertőzöttek a csomópont inicializálásával. 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 tainteket az AKS API-val eltávolította a fürt specifikációjából, az újonnan létrehozott csomópontok az újraimázsolási műveletek után már nem rendelkeznek inicializálási fertőzöttekkel.
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 nodes
hibá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ópontok inicializálása újra megjelenik a csomópontok skálázása vagy frissítése után.
Csomópont-inicializálási hibák végleges eltávolítása
A csomópont inicializálási fertőzöttjeinek ideiglenes eltávolítása a Kubernetes API használatával történő csomópont-inicializálási taint eltávolításához kövesse a lépéseket.
Távolítsa el a fertőzöttet a csomópontról az AKS API használatával a
az aks update
parancs használatával. Ez a parancs eltávolítja a csomópont inicializálási tartományát 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 fertőzött el lett-e távolítva a csomópontról
A parancs használatával ellenőrizze a csomópont-konfiguráció csomópont-fertőzöttségeit és csomóponti inicializálási szennyezettségeit
kubectl describe node
.kubectl describe node $NODE_NAME
Ha eltávolított egy csomópontot, az alábbi példakimenet azt mutatja, hogy a
<node-pool-name>
csomópontkészlet nem rendelkezik az eltávolított fertőzöttel a következő alattTaints
:[ ... Name: <node-pool-name> ... Taints: ... ], ... ... ]
Következő lépések
- További információ a fertőzöttek és a toleranciák példahasználati eseteiről.
- További információ az AKS-ütemező speciális funkcióinak ajánlott eljárásairól.
- További információ a Kubernetes-címkékről a Kubernetes-címkék dokumentációjában.
Azure Kubernetes Service