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.
A Node Hardening a Linux-csomópontkészletek egyik választható funkciója, amely védi a csomópontok stabilitását, ha a számítási feladatok a csomópontokat CPU-, memória- vagy lemezterhelés alá helyezik. Amikor engedélyezi a Node Hardeninget egy fürtben, az AKS megváltoztatja, hogy az egyes csomópontok hogyan foglalják le és hogyan tartatják be az erőforrás-foglalásokat és -korlátokat a Kubernetes-összetevők és a gazdagépszolgáltatások számára, valamint hogy a kubelet hogyan kilakoltatja a podokat, amikor szűkösek az erőforrások.
Ez a cikk bemutatja, hogy a Node Hardening milyen változásokat hajt végre, összehasonlítja a megerősített alapértelmezett beállításokat a szabványos AKS-alapértelmezett értékekkel, és bemutatja, hogyan engedélyezheti, ellenőrizheti, szabhatja testre és tilthatja le a funkciót.
Important
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óihoz részleges támogatást nyújt az ügyfélszolgálat a tőle 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:
A Node hardening előnyei
Elfoglalt vagy ingadozó terhelésű csomópontokon a számítási feladatok olyan erőforrásokat használhatnak fel, amelyekre a kubeletnek, a tároló futtatókörnyezetének és a gazdagépszolgáltatásoknak szükségük van. Ha ez történik, a csomópontok nem válaszolhatnak, NotReady állapotot jelenthetnek, vagy a podokat hirtelen leállíthatják. A Node Hardening a következő módokon csökkenti ezeket a kockázatokat:
-
Kényszerített foglalások: Az AKS alapértelmezés szerint csak a kube-reserved értékeket használja annak kiszámításához, hogy az ütemező mennyi kapacitást tud a podok számára kiosztani. A Node Hardening használatával a kubelet a kube-reserved és a rendszer által fenntartott kapacitást is érvényesíti Linux-vezérlőcsoportokon (cgroupokon) keresztül. A kubelet és a containerd egy dedikált
kubereserved.slicecgroupban fut, így fenntartott CPU-megosztásukat és memóriájukat akkor is megőrzik, ha a podok telítik a csomópont erőforrásait. -
Dedikált kapacitás a gazdagépszolgáltatásokhoz: A csomópontmegerősítés egy rendszer által fenntartott foglalást ad hozzá a gazdagép operációsrendszer-szolgáltatásaihoz, amelyek a(z)
system.slicekörnyezetben futnak. - Nagyobb memóriatartalék: A rendelkezésre álló memória kemény kilakoltatási küszöbértéke a csomópont memóriájával arányosan skálázódik, így a kubelet kilakoltatja a podokat, mielőtt a csomópont memóriája kritikusan alacsonyra csökken.
- Kíméletes kiürítés: Az enyhe kiürítési küszöbértékek lehetővé teszik, hogy a kubelet kíméletesen kiürítse a podokat, leállítási türelmi idővel, ha kevés a memória vagy a lemezterület. A kemény kiürítés, amely azonnal leállítja a podokat, majd végső megoldásként szolgál.
- Podsűrűséggel skálázható foglalások: A kube által fenntartott memória kiszámítása a csomópontonkénti podok maximális számával növekszik, ami figyelembe veszi a kubelet és a containerd többletterhelését a több pod futtatásához.
Milyen változások lépnek fel a Node Hardening engedélyezésekor?
Az alábbi táblázatok összehasonlítják a Kubernetes 1.29-et vagy újabb verziót futtató Linux-csomópontok alapértelmezett értékeit az AKS által a Node Hardening engedélyezésekor érvényes alapértelmezett értékekkel.
Erőforrás-foglalások
| Setting | Node megerősítés nélkül | Node megerősítésével |
|---|---|---|
| Kube-fenntartott CPU | A processzormagok száma alapján. További információ: CPU-foglalások. | Változatlan |
| Kube-fenntartott memória |
min(20 × maxPods + 50, 25% of node memory) MiB |
min(35 × maxPods + max(250, 2% of node memory), 25% of node memory) MiB |
| Kube-fenntartott folyamatazonosítók (PID-k) | 1000 |
Nincs lefoglalva |
| Rendszer által fenntartott CPU | None | 100m |
| Rendszer által fenntartott memória | None | 200 MiB, további 100 MiB minden teljes 32 GiB csomópontmemória után, valamint 100 MiB az Azure CNI-t használó fürtökhöz |
| Rendszer által fenntartott ideiglenes tárhely | None | 1Gi |
Kiszorítási küszöbértékek
| Setting | Csomópont megerősítése nélkül | Csomópontok megerősítésével |
|---|---|---|
Kényszerített eltávolítás: memory.available |
100Mi |
250Mi a 8 GiB vagy annál kisebb memóriával rendelkező csomópontok esetében, 375Mi a 8 GiB-nél nagyobb és 32 GiB-nél kisebb memóriával rendelkező csomópontok, valamint 512Mi a 32 GiB vagy annál nagyobb méretű csomópontok esetében |
Kényszerített eltávolítás: nodefs.available és nodefs.inodesFree |
10% és 5% |
Változatlan |
Kényszerített kiürítés: pid.available |
2000 |
Nincs beállítva |
Puha kiléptetés: memory.available |
None |
500Mi, 750Mi, vagy 1Gi, ugyanazokat a csomóponti memóriaszinteket használva, mint a kemény kiürítés, 30 másodperces türelmi idővel |
Rugalmas kiürítés: nodefs.available és nodefs.inodesFree |
None |
12% és 7%, mindegyik 2 perces türelmi idővel |
| A pod leállítási türelmi idejének maximális időtartama lágy kilakoltatás során | Nincs beállítva | 60 másodperc |
cgroup kikényszerítése
| Setting | Node megerősítése nélkül | Node megerősítése |
|---|---|---|
| Kikényszerített csomópont kiosztható erőforrásai | pods |
pods, kube-reservedés system-reserved |
| Kubelet és containerd cgroup |
system.slice, korlátok nélkül |
kubereserved.slice, a memória a kube által fenntartott memóriára korlátozódik, és a processzormegosztás arányos a kube által fenntartott cpu-val |
| Gazda szolgáltatások cgroup |
system.slice, korlátok nélkül |
system.slice, a memóriája a rendszer számára fenntartott memóriára korlátozódik, és a CPU-részesedése a rendszer számára fenntartott CPU-val arányos |
Mivel a Node Hardening több kapacitást foglal le, a csomópontok kevesebb kiosztható kapacitást mutatnak a podokhoz. Például egy 4 virtuális processzorral és 16 GiB memóriával rendelkező csomóponton, amely Azure CNI-t használ, a csomópont megerősítésének engedélyezése az alábbiak szerint csökkenti a lefoglalható kapacitást:
- A csomópontonkénti alapértelmezett maximum 250 pod körülbelül 570 MiB memóriát, 100 millicore CPU-t és 1 GiB rövid élettartamú tárhelyet igényel.
- Csomópontonként legfeljebb 30 pod, körülbelül 1,3 GiB memória, 100 millicore CPU és 1 GiB ideiglenes tárhely mellett.
A rugalmas kilakoltatási küszöbértékek nem csökkentik a lefoglalható kapacitást. Csak akkor változnak, ha a kubelet elkezdi kilakoltatni a podokat.
Considerations
A csomópontkeményítés engedélyezése előtt tartsa szem előtt az alábbi szempontokat:
- A csomópontkeményítést a fürt szintjén engedélyezheti, és ez a fürt összes Linux-csomópontkészletére vonatkozik. Nem engedélyezhető az egyes csomópontkészletekhez, és ez nem érinti a Windows rendszerű csomópontkészleteket.
- A csomópontok kevesebb kiosztható kapacitást jeleznek, ezért előfordulhat, hogy a csomóponton a Node Hardening engedélyezése előtt elférő podok később nem férnek el. Tekintse át a pod erőforrás-kérelmeket és a csomópontkészletek méreteit.
- A
system.slicegazdagépszolgáltatások a rendszer által fenntartott memóriával megegyező szigorú memóriakorláton osztoznak. Ha saját ügynököket futtat a csomópontokon systemd-szolgáltatásokként, például biztonsági, monitorozási vagy naplótovábbítási ügynökökként, ezek az ügynökök beleszámítanak ebbe a korlátba. Ellenőrizze a memóriahasználatot és a stabilitást, mielőtt éles környezetben használja a Node Hardeninget. - A csomópontkészlet egyéni kubelet-konfigurációjában megadott értékek felülbírálják a megfelelő Node Hardening-alapértelmezéseket. További információ: Csomópontmegerősítési beállítások testreszabása.
- Ha később letiltja a Node Hardeninget, a meglévő csomópontkészletek megtartják a megerősített enyhe kiürítési beállításokat, még a csomópontok újraépítése után is. A beállítások eltávolításához új csomópontkészleteket kell létrehoznia. További információ: Node Hardening letiltása.
- Az alapértelmezett értékek változhatnak, amíg a szolgáltatás előzetes verzióban van. Kezdje egy nem éles fürttel, és ellenőrizze a munkaterheléseket reprezentatív csomóponti erőforrás-terhelési helyzetek mellett.
Prerequisites
- Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot.
- Linux-csomópontkészletekkel rendelkező AKS-fürt, vagy egy ilyen létrehozásához szükséges jogosultságok.
- Az alábbi szakaszokban ismertetett
aks-previewAzure CLI-bővítmény és aCustomNodeConfigPreviewfeature flag.
Az aks-preview Azure CLI-bővítmény telepítése
Telepítse a bővítményt
aks-previewaaz extension addparancs használatával.az extension add --name aks-previewFrissítsen a bővítmény legújabb verziójára a
az extension updateparancs használatával.az extension update --name aks-preview
Regisztráld a CustomNodeConfigPreview funkciójelzőt
Regisztrálja a
CustomNodeConfigPreviewfunkciójelzőt aaz feature registerparancs használatával.az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.
A parancs használatával ellenőrizze a regisztrációs állapotot
az feature show.az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"Ha az állapot Regisztrált, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a
az provider registerparancs használatával.az provider register --namespace "Microsoft.ContainerService"
Csomópont megerősítésének engedélyezése
Az előzetes időszakban a Node Hardening alapértelmezés szerint nincs engedélyezve.
Csomópontvédelem engedélyezése egy új fürtön
Hozzon létre egy fürtöt, amelyen engedélyezve van a csomópontmegerősítés a az aks create paranccsal, a --enable-node-hardening paraméterrel.
Ehhez a parancshoz a aks-preview bővítmény és a CustomNodeConfigPreview funkciójelző kapcsoló szükséges. További információ: Előfeltételek.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-node-hardening \
--generate-ssh-keys
A módosítás megerősítéséhez olvassa el a Csomópont-megkeményítési beállítások ellenőrzése című témakört.
Csomópont megerősítésének engedélyezése egy meglévő fürtön
A csomópontkeményítés engedélyezése meglévő fürtön a az aks update paranccsal, a --enable-node-hardening paraméterrel.
Ehhez a parancshoz a aks-preview bővítmény és a CustomNodeConfigPreview feature flag szükséges. További információ: Előfeltételek.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-node-hardening
A módosítás megerősítéséhez olvassa el a Csomópont-megkeményítési beállítások ellenőrzése című témakört.
Csomópontmegerősítési beállítások ellenőrzése
Kérje le a fürt hitelesítő adatait a
az aks get-credentialsparancs használatával.az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>A kubelet konfigurációs végpontjának lekérdezésével tekintse át a csomópont érvényes kubelet-foglalási és kilakoltatási beállításait.
kubectl get --raw "/api/v1/nodes/<node-name>/proxy/configz" | jq '.kubeletconfig | {kubeReserved, systemReserved, evictionHard, evictionSoft, evictionSoftGracePeriod, evictionMaxPodGracePeriod, enforceNodeAllocatable}'Egy megerősített csomóponton a
systemReservedés aevictionSoftértékeket tartalmaznak, aenforceNodeAllocatablepedig magában foglalja akube-reservedés asystem-reservedelemet.Hasonlítsa össze a csomópont kapacitását az lefoglalható erőforrásokkal.
kubectl get node <node-name> -o jsonpath='{.status.capacity}{"\n"}{.status.allocatable}{"\n"}'Egy megerősített csomóponton az allokálható CPU, a memória és az ideiglenes tároló alacsonyabb, mint a kapacitás. A különbség megegyezik az Erőforrás-foglalások kube-fenntartott és rendszer által fenntartott értékeivel, valamint a Kiürítési küszöbértékek alatti kemény küszöbértékekkel. Például egy 4 virtuális processzorral és 16 GiB memóriával rendelkező, Azure CNI-t használó csomóponton a kiosztható CPU 240 millicores értékkel alacsonyabb, mint a kapacitás: 140 millicores kube-reserved CPU és 100 millicores system-reserved CPU.
Csomópontmegerősítési beállítások testreszabása
Egyéni kubelet-konfigurációval felülbírálhatja a Linux-csomópontkészlet kube-fenntartott és kiszorítási alapértelmezett beállításait. Ezekhez a beállításokhoz a CustomNodeConfigPreview funkciójelző szükséges. Használhatja őket, függetlenül attól, hogy a csomópontmegerősítés engedélyezve van-e a fürtön. Az AKS kezeli a rendszer által fenntartott értékeket és a cgroup kényszerítését, és nem lehet testre szabni őket.
Minden beállítás felülírja az erőforrás-foglalások vagy kiürítési küszöbértékek tábláinak egy sorát. A Kube által fenntartott sorok a kubeReserved beállításhoz tartoznak. A kemény kilakoltatási sorok megfelelnek a hardEvictionThreshold beállításoknak. A puha kilakoltatási sorok a softEvictionThreshold és softEvictionGracePeriod beállításoknak felelnek meg. A pod leállítási türelmi időszaka megfelel a következőnek: evictionMaxPodGracePeriodInSeconds.
A következő beállításokat konfigurálhatja:
| Setting | Overrides | Description |
|---|---|---|
kubeReserved.cpuMillicores |
Kube-fenntartott CPU | A Kubernetes rendszerdémonjai számára fenntartott CPU millimagokban. |
kubeReserved.memoryMB |
Kube-fenntartott memória | A Kubernetes rendszer démonjai számára fenntartott memória a MiB-ben. |
hardEvictionThreshold.memoryAvailable |
Kényszerített kiürítés: memory.available |
A rendelkezésre álló memória kemény kiszorítási küszöbértéke. |
hardEvictionThreshold.nodeFsAvailable |
Végleges kényszerített eltávolítás: nodefs.available |
A rendelkezésre álló csomópont fájlrendszerterületének kemény kilakoltatási küszöbértéke. |
hardEvictionThreshold.nodeFsInodesFree |
Kényszerített kiürítés: nodefs.inodesFree |
A csomópont fájlrendszeri inode-jainak szigorú kilakoltatási küszöbértéke. |
softEvictionThreshold.memoryAvailable |
Lágy kizárás: memory.available |
Puha kiürítési küszöbérték a rendelkezésre álló memóriához. |
softEvictionThreshold.nodeFsAvailable |
Nem végleges kilakoltatás: nodefs.available |
Puha kiürítési küszöbérték a csomópont rendelkezésre álló fájlrendszerterületére. |
softEvictionThreshold.nodeFsInodesFree |
Nem végleges kizárás: nodefs.inodesFree |
A csomópont fájlrendszerében lévő szabad inode-ok puha kiürítési küszöbértéke. |
softEvictionGracePeriod.memoryAvailable |
Enyhe kiürítés: memory.available türelmi időszak |
Mennyi ideig kell a rendelkezésre álló memóriának a puha küszöbértéke alatt maradnia, mielőtt a kubelet eltávolítja a podokat. |
softEvictionGracePeriod.nodeFsAvailable |
Kíméletes kiürítés: nodefs.available türelmi időszak |
Mennyi ideig kell a rendelkezésre álló csomópont-fájlrendszerterületnek a puha küszöbérték alatt maradnia, mielőtt a kubelet kilakoltatja a podokat. |
softEvictionGracePeriod.nodeFsInodesFree |
Enyhe kiürítés: nodefs.inodesFree türelmi időszak |
Mennyi ideig kell a csomópont fájlrendszerének szabad inode-jainak a puha küszöbérték alatt maradniuk, mielőtt a kubelet eltávolítja a podokat. |
evictionMaxPodGracePeriodInSeconds |
A pod leállítási türelmi idejének maximális időtartama lágy kiürítés során | A kubelet által megengedett maximális másodpercszám, amely lehetővé teszi a podok leállítását a puha kilakoltatás során. |
- Az egyes beállítások megengedett értékeiről, minimális értékeiről és érvényesítési szabályairól lásd az AKS egyéni csomópontkonfigurációs paramétereit.
- Minden kiürítési jelnél állítsa be a lágy kiürítési küszöbértéket és annak megfelelő türelmi időtartamát, és győződjön meg arról, hogy az egyes lágy kiürítési küszöbértékek nagyobbak ugyanahhoz a jelhez tartozó hard kiürítési küszöbértéknél.
Hozzon létre egy kubelet konfigurációs fájlt, például
nodehardening-kubelet.json, azokkal a beállításokkal, amelyeket testre szeretne szabni. Az alábbi példa minden konfigurálható értéket beállít. A kube-reserved értékét 200 millicore CPU-ra és 1024 MiB memóriára állítja. Beállítja a rendelkezésre álló memória10%, a rendelkezésre álló fájlrendszerterület5%és a szabad inódok512Miszigorú kiürítési küszöbértékeit. Beállítja a helyreállítható kiürítési küszöbértékeket:7%,1Giés12%, 30 másodperces, 2 perces és 2 perces türelmi időszakokkal. Emellett 60 másodperces maximális pod leállítási türelmi időszakot is beállít.{ "kubeReserved": { "cpuMillicores": 200, "memoryMB": 1024 }, "hardEvictionThreshold": { "memoryAvailable": "512Mi", "nodeFsAvailable": "10%", "nodeFsInodesFree": "5%" }, "softEvictionThreshold": { "memoryAvailable": "1Gi", "nodeFsAvailable": "12%", "nodeFsInodesFree": "7%" }, "softEvictionGracePeriod": { "memoryAvailable": "30s", "nodeFsAvailable": "2m", "nodeFsInodesFree": "2m" }, "evictionMaxPodGracePeriodInSeconds": 60 }Hozzon létre egy Linux-csomópontkészletet, amely a konfigurációs fájlt használja a
--kubelet-configparaméterrel használtaz aks nodepool addparanccsal.az aks nodepool add \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --kubelet-config ./nodehardening-kubelet.jsonA
az aks createparamétert a--kubelet-configparanccsal is használhatja a fürt kezdeti csomópontkészletére való konfiguráció alkalmazásához.
Node megerősítésének letiltása
Tiltsa le a Node Hardening funkciót a --disable-node-hardening paranccsal, a az aks update paraméter használatával.
Ehhez a parancshoz a aks-preview bővítmény és a CustomNodeConfigPreview funkciókapcsoló szükséges. További információ: Előfeltételek.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--disable-node-hardening
A Csomópont-megerősítés letiltása kikapcsolja a fürtszintű beállítást, de nem módosítja azonnal a meglévő csomópontokat. A meglévő csomópontok mindaddig megőrzik az összes keményített beállítást, amíg újra nem telepítik rájuk a lemezképet, például egy csomópont lemezképének frissítése során. A csomópont újratelepítése után a következő módosítások lépnek életbe:
- Visszaállítva a szabványos AKS-alapértelmezésekre: Kube-fenntartott és rendszer által fenntartott erőforrások, szigorú kiürítési küszöbértékek és cgroup-kényszerítés. A csomópont kiosztható kapacitása ennek megfelelően növekszik.
- Megtartva: A puha kilakoltatási küszöbértékek, a puha kilakoltatási türelmi időszakok és a pod megszüntetésére vonatkozó türelmi időszak maximális időtartama puha kilakoltatás során.
Egyéni kubelet-konfigurációt csak fürt vagy csomópontkészlet létrehozásakor állíthat be, így nem távolíthatja el a megőrzött soft eviction beállításokat egy meglévő csomópontkészletből. Az eltávolításukhoz hozzon létre egy új csomópontkészletet, amely kifejezetten visszaállítja ezeket, helyezze át a számítási feladatokat az új csomópontkészletbe, majd törölje a régi csomópontkészletet.
Hozzon létre egy kubelet konfigurációs fájlt, például
remove-soft-eviction.json. Az alábbi példa minden puha kiürítési küszöbértéket és türelmi időszakot üres sztringre állít be, amely kikapcsolja az adott jelzéshez tartozó puha kiürítést. Emellett a podvégzítés maximális türelmi idejét is0értékre állítja, amely a standard AKS alapértelmezett értéke.{ "softEvictionThreshold": { "memoryAvailable": "", "nodeFsAvailable": "", "nodeFsInodesFree": "" }, "softEvictionGracePeriod": { "memoryAvailable": "", "nodeFsAvailable": "", "nodeFsInodesFree": "" }, "evictionMaxPodGracePeriodInSeconds": 0 }Hozzon létre egy Linux-csomópontkészletet, amely a konfigurációs fájlt használja a
--kubelet-configparaméterrel használtaz aks nodepool addparanccsal.az aks nodepool add \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --kubelet-config ./remove-soft-eviction.jsonHelyezze át a számítási feladatokat az új csomópontkészletbe, majd törölje a régi csomópontkészletet. További információ: Csomópontkészletek átméretezése az AKS-ben.
A csomópont beállításainak megerősítéséhez tekintse meg a Csomópontkeményítési beállítások ellenőrzése című témakört. Az új csomópontkészlet csomópontjain a evictionSoft üres.