Megosztás a következőn keresztül:


Az Azure Kubernetes Service (AKS) csomópontkészleteinek csomópontkonfigurációjának testreszabása

A csomópontkonfiguráció testreszabásával módosíthatja az operációs rendszer beállításait vagy a kubelet paramétereit a számítási feladatok igényeinek megfelelően. Amikor létrehoz egy AKS-fürtöt, vagy hozzáad egy csomópontkészletet a fürthöz, testre szabhatja a gyakran használt operációsrendszer- és kubelet-beállítások egy részhalmazát. Ha ezen az alkészleten túl szeretné konfigurálni a beállításokat, egy démonkészlettel testre szabhatja a szükséges konfigurációkat anélkül, hogy elveszítené a csomópontok AKS-támogatását.

Egyéni csomópontkonfigurációs fájlok létrehozása AKS-csomópontkészletekhez

Az operációs rendszer és a kubelet konfigurációs módosításaihoz létre kell hoznia egy új konfigurációs fájlt a paraméterekkel és a kívánt beállításokkal. Ha egy paraméter értéke nincs megadva, akkor az érték az alapértelmezett értékre van állítva.

Note

Az alábbi példák a gyakori konfigurációs beállításokat mutatják be. A beállításokat úgy módosíthatja, hogy megfeleljenek a számítási feladatokra vonatkozó követelményeknek. A támogatott egyéni konfigurációs paraméterek teljes listáját a Támogatott egyéni konfigurációs paraméterek szakaszban találja.

Kubelet-konfiguráció

Hozzon létre egy linuxkubeletconfig.json fájlt a következő tartalommal:

{
 "cpuManagerPolicy": "static",
 "cpuCfsQuota": true,
 "cpuCfsQuotaPeriod": "200ms",
 "imageGcHighThreshold": 90,
 "imageGcLowThreshold": 70,
 "topologyManagerPolicy": "best-effort",
 "allowedUnsafeSysctls": [
  "kernel.msg*",
  "net.*"
],
 "failSwapOn": false
}

Operációs rendszer konfigurálása

Hozzon létre egy linuxosconfig.json fájlt a következő tartalommal:

{
 "transparentHugePageEnabled": "madvise",
 "transparentHugePageDefrag": "defer+madvise",
 "swapFileSizeMB": 1500,
 "sysctls": {
  "netCoreSomaxconn": 163849,
  "netIpv4TcpTwReuse": true,
  "netIpv4IpLocalPortRange": "32000 60000"
 }
}

AKS (Azure Kubernetes Service) fürt létrehozása egyéni konfigurációs fájlok használatával

Note

Az új AKS-fürt létrehozásakor, amikor egyéni konfigurációs fájlokat használ, tartsa szem előtt az alábbi információkat.

  • Ha egy fürt létrehozásakor konfigurációt ad meg, a konfiguráció csak a kezdeti csomópontkészlet csomópontjaira vonatkozik. A JSON-fájlban nem konfigurált beállítások megőrzik az alapértelmezett értékeket.
  • CustomLinuxOsConfig A Windows operációs rendszer típusa nem támogatott.

Hozzon létre egy új fürtöt saját konfigurációs fájlok használatával a az aks create parancs segítségével, és adja meg a konfigurációs fájlait a --kubelet-config és --linux-os-config paraméterekhez. Az alábbi példaparancs létrehoz egy új fürtöt az egyéni ./linuxkubeletconfig.json és ./linuxosconfig.json fájlokkal.

az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json

Csomópontkészlet hozzáadása egyéni konfigurációs fájlok használatával

Note

Ha új csomópontkészletet ad hozzá egy meglévő AKS-fürthöz, tartsa szem előtt az alábbi információkat, amikor egyéni konfigurációs fájlokat használ:

  • Ha linuxos csomópontkészletet ad hozzá egy meglévő fürthöz, megadhatja a kubelet konfigurációját, az operációs rendszer konfigurációját vagy mindkettőt. Ha Windows csomópontkészletet ad hozzá egy meglévő fürthöz, csak a kubelet konfigurációját tudja megadni. Ha csomópontkészlet hozzáadásakor konfigurálást ad meg, a konfiguráció csak az új csomópontkészlet csomópontjaira vonatkozik. A JSON-fájlban nem konfigurált beállítások megőrzik az alapértelmezett értékeket.
  • CustomKubeletConfig Linux- és Windows-csomópontkészletek esetén támogatott.

Hozzon létre egy új Linux-csomópontkészletet a az aks nodepool add parancs használatával, és adja meg a konfigurációs fájlokat a --kubelet-config és --linux-os-config paraméterekhez. Az alábbi példaparancs létrehoz egy új Linux-csomópontkészletet az egyéni ./linuxkubeletconfig.json fájllal:

az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json

A beállítások alkalmazásának megerősítése

Az egyéni csomópont-konfiguráció alkalmazása után megerősítheti, hogy a beállítások valóban érvényesültek a csomópontokra, a gazdagéphez való kapcsolódás révén, és a fájlrendszeren végrehajtott konfigurációs változtatások ellenőrzésével.

Támogatott egyéni konfigurációs paraméterek

Egyéni Linux kubelet-konfiguráció

Parameter Engedélyezett értékek/intervallum Default Description
cpuManagerPolicy nincs, statikus none A statikus házirend lehetővé teszi, hogy a konténerek garantált podokban egész számú CPU-kéréssel hozzáférjenek a csomóponton található kizárólagos CPU-khoz.
cpuCfsQuota igaz, hamis true A CPU CFS-kvóta kikényszerítésének engedélyezése/letiltása olyan tárolók esetében, amelyek cpu-korlátokat határoznak meg.
cpuCfsQuotaPeriod Intervallum ezredmásodpercben (ms) 100ms A CPU CFS kvótaidőszakának értékét állítja be.
imageGcHighThreshold 0-100 85 A lemezhasználat százalékos aránya, amely után a rendszerkép szemétgyűjtése mindig fut. A szemétgyűjtést kiváltó minimális lemezhasználat. A kép szemétgyűjtésének letiltásához állítsa be a 100 értéket.
imageGcLowThreshold 0-100, legfeljebb imageGcHighThreshold 80 A lemezhasználat azon százaléka, amely előtt a rendszerkép szemétgyűjtése soha nem fut. Minimális lemezhasználat, amely kiválthatja a szemétgyűjtést.
topologyManagerPolicy none, best-effort, korlátozott, egyetlen-numa-csomópont none Optimalizálja a NUMA-csomópont igazítását. További információért lásd: Ellenőrzési topológia kezelési irányelvek egy csomóponton.
allowedUnsafeSysctls kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.*, , net.* None A nem biztonságos sysctls- vagy nem biztonságos sysctl-minták engedélyezett listája.
containerLogMaxSizeMB Méret megabájtban (MB) 50 A tároló naplófájljainak maximális mérete (például 10 MB) a forgatás előtt.
containerLogMaxFiles ≥ 2 5 A tárolóhoz megjeleníthető tároló naplófájljainak maximális száma.
podMaxPids -1 a kernel PID korlátjához -1 (∞) A podban futtatható folyamatazonosítók maximális száma.
seccompDefault Unconfined, RuntimeDefault Unconfined Beállítja az alapértelmezett seccomp profilt az összes számítási feladathoz. RuntimeDefault A tárolód alapértelmezett seccomp-profilját használja, amely korlátozza bizonyos rendszerhívásokat a biztonság növelése érdekében. A korlátozott syscalls nem működik. Unconfined nem korlátozza a syscalls szolgáltatást, lehetővé téve az összes rendszerhívást, és csökkenti a biztonságot. További információkért tekintse meg a tárolóalapú alapértelmezett seccomp profilt. Ez a paraméter előzetes verzióban érhető el. Regisztrálja a "KubeletDefaultSeccompProfilePreview" funkciójelzőt a az feature register következő paranccsal --namespace "Microsoft.ContainerService": .

Egyéni Windows kubelet-konfiguráció

Parameter Engedélyezett értékek/intervallum Default Description
imageGcHighThreshold 0-100 85 A lemezhasználat százalékos aránya, amely után a rendszerkép szemétgyűjtése mindig fut. A szemétgyűjtést kiváltó minimális lemezhasználat. A kép szemétgyűjtésének letiltásához állítsa be a 100 értéket.
imageGcLowThreshold 0-100, legfeljebb imageGcHighThreshold 80 A lemezhasználat azon százaléka, amely előtt a rendszerkép szemétgyűjtése soha nem fut. Minimális lemezhasználat, amely kiválthatja a szemétgyűjtést.
containerLogMaxSizeMB Méret megabájtban (MB) 10 A tároló naplófájljainak maximális mérete (például 10 MB) a forgatás előtt.
containerLogMaxFiles ≥ 2 5 A tárolóhoz megjeleníthető tároló naplófájljainak maximális száma.

Egyéni Linux operációsrendszer-konfigurációs beállítások

Important

A keresés és az olvashatóság egyszerűsítése érdekében az operációsrendszer-beállítások a nevük alapján jelennek meg ebben a cikkben, de a camelCase nagybetűsítési konvencióval hozzá kell adni őket a konfigurációs JSON-fájlhoz vagy az AKS API-hoz.

Például, ha módosítja a vm.max_map_count setting elemet, újra kell formáznia vmMaxMapCount-ra a konfigurációs JSON-fájlban.

Linux-fájlkezelő korlátai

A nagy mennyiségű forgalom kiszolgálása során ez a forgalom gyakran nagy számú helyi fájlból származik. Az alábbi kernelbeállításokat és a beépített korlátokat úgy módosíthatja, hogy a rendszermemória árán további műveletekre is képes legyen.

Az alábbi táblázat felsorolja a csomópontkészletenként testre szabható fájlleíró-korlátokat:

Setting Engedélyezett értékek/intervallum Ubuntu 22.04 alapértelmezett Ubuntu 24.04 alapértelmezett Alapértelmezett Azure Linux 3.0 Description
fs.file-max 8192 - 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 A Linux kernel által lefoglalt fájlkezelők maximális száma. Ez az érték a lehetséges maximális értékre van állítva (2^63-1), hogy megakadályozza a fájlleírók kimerülését, és korlátlan rendszerszintű fájlkezelőket biztosítson a tárolóalapú számítási feladatokhoz.
fs.inotify.max_user_watches 781250 - 2097152 1048576 1048576 1048576 A rendszer által engedélyezett fájlmegfigyelések maximális száma. Minden figyelő körülbelül 90 bájt egy 32 bites kernelen, és körülbelül 160 bájt egy 64 bites kernelen.
fs.aio-max-nr 65536 - 6553500 65536 65536 65536 Az aio-nr az aszinkron io-kérések aktuális rendszerszintű számát jeleníti meg. Az aio-max-nr lehetővé teszi az aio-nr maximális értékének módosítását.
fs.nr_open 8192 - 20000500 1048576 1048576 1073741816 A folyamat által lefoglalható fájlkezelők maximális száma.

Note

A fs.file-max paraméter 9223372036854775807 (az aláírt 64 bites egész szám maximális értéke) értékre van állítva az Ubuntu és az Azure Linux esetében a felsőbb rétegbeli alapértelmezett értékek alapján. Ez a konfiguráció:

  • Megakadályozza a szolgáltatásmegtagadásos támadásokat a rendszerszintű fájlleíró kimerülése alapján.
  • Biztosítja, hogy a tárolói munkaterhelések soha ne kerüljenek a rendszerszintű fájlleíró korlátok miatti szűk keresztmetszetbe.
  • A biztonságot folyamatonkénti korlátokon (fs.nr_open és ulimit) keresztül tartja fenn, amelyek továbbra is érvényesek az egyes folyamatokra.
  • Olyan tárolóplatformokra optimalizálja , amelyeken egyszerre több tároló is futhat, és amelyek egyszerre több fájlt és hálózati kapcsolatot nyithatnak meg.

Linux-socketek és hálózat finomhangolása

Az ügynökcsomópontok esetében, amelyek várhatóan nagy számú egyidejű munkamenetet fognak kezelni, a következő TCP- és hálózati beállításokat használhatja, és csomópontkészletenként módosíthatja őket:

Setting Engedélyezett értékek/intervallum Ubuntu 22.04 alapértelmezett Ubuntu 24.04 alapértelmezett Alapértelmezett Azure Linux 3.0 Description
net.core.somaxconn 4096 - 3240000 16384 16384 16384 Bármely adott figyelő sockethez sorba állítható kapcsolatkérések maximális száma. A figyelés(2) függvénynek átadott hátralékparaméter értékének felső korlátja. Ha a hátralék argumentum nagyobb a somaxconnkorlátnál, akkor a rendszer csendben csonkolja ezt a korlátot.
net.core.netdev_max_backlog 1000 - 3240000 1000 1000 1000 A bemeneti oldalon várólistára helyezett csomagok maximális száma, ha a felület gyorsabban fogadja a csomagokat, mint amennyit a kernel képes feldolgozni.
net.core.rmem_max 212992 - 134217728 1048576 1048576 212992 A fogadó csatlakozó maximális pufferméret bájtban.
net.core.wmem_max 212992 - 134217728 212992 212992 212992 A maximális küldési fogadó puffer mérete bájtban.
net.core.optmem_max 20480 - 4194304 20480 131072 20480 Foglalatonként megengedett maximális kiegészítő pufferméret (opciós memóriapuffer). A szoftvercsatorna-beállítás memóriája néhány esetben a szoftvercsatorna használatával kapcsolatos további struktúrák tárolására szolgál.
net.ipv4.tcp_max_syn_backlog 128 - 3240000 16384 16384 16384 Azoknak a várólistás kapcsolatkéréseknek a maximális száma, amelyek nem kaptak visszaigazolást a csatlakozó ügyféltől. Ha túllépi ezt a számot, a kernel elkezdi elvetni a kérelmeket.
net.ipv4.tcp_max_tw_buckets 8000 - 1440000 262144 262144 131072 A rendszer által egyidejűleg tartott timewait foglalatok maximális száma. Ha túllépi ezt a számot, a rendszer azonnal megsemmisíti az idő-várakozási foglalatot, és a rendszer figyelmeztetést nyomtat.
net.ipv4.tcp_fin_timeout 5 - 120 60 60 60 Az az időtartam, ameddig egy árva kapcsolat (amelyet már semmilyen alkalmazás nem hivatkozik) a FIN_WAIT_2 állapotban marad, mielőtt a helyi végen megszakítják.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 7200 7200 Milyen gyakran küld üzeneteket keepalive a TCP, ha keepalive engedélyezve van.
net.ipv4.tcp_keepalive_probes 1 - 15 9 9 9 Hány keepalive mintavételt küld a TCP, amíg el nem dönti, hogy a kapcsolat megszakadt.
net.ipv4.tcp_keepalive_intvl 10 - 90 75 75 75 Milyen gyakran küldik el a szondákat. A szondák elindítása után tcp_keepalive_probes-val/-vel megszorozva ez adja meg a nem válaszoló kapcsolat megszakításának idejét.
net.ipv4.tcp_tw_reuse 2 2 2 Engedélyezi a TIME-WAIT socketek újbóli használatát új kapcsolatokhoz, ha az biztonságos a protokoll szempontjából.
net.ipv4.ip_local_port_range Első: 1024 - 60999 és Utolsó: 32768 - 65535] Első: 32768 és Utolsó: 60999 Első: 32768 és Utolsó: 60999 Első: 32768 és Utolsó: 60999 A TCP- és UDP-forgalom által a helyi port kiválasztásához használt helyi porttartomány. Két számból áll: Az első szám az ügynökcsomópontON a TCP- és UDP-forgalom számára engedélyezett első helyi port, a második pedig az utolsó helyi portszám.
net.ipv4.neigh.default.gc_thresh1 128 - 80000 4096 4096 4096 Az ARP-gyorsítótárban található bejegyzések minimális száma. A szemétgyűjtés nem aktiválódik, ha a bejegyzések száma nem éri el ezt a beállítást.
net.ipv4.neigh.default.gc_thresh2 512 - 90000 8192 8192 8192 Az ARP-gyorsítótárban tárolható bejegyzések rugalmas maximális száma. Ez a beállítás vitathatatlanul a legfontosabb, mivel az ARP szemétgyűjtés körülbelül 5 másodperccel a maximális érték elérése után aktiválódik.
net.ipv4.neigh.default.gc_thresh3 1024 - 100000 16384 16384 16384 Az ARP-gyorsítótárban lévő bejegyzések szigorú maximális száma.
net.netfilter.nf_conntrack_max 131072 - 2097152 Dinamikusan kiszámított Dinamikusan kiszámított Dinamikusan kiszámított nf_conntrack Egy modul, amely a Linuxon belüli NAT-kapcsolatok bejegyzéseit követi nyomon. A nf_conntrack modul kivonattáblával rögzíti a TCP protokoll létrehozott kapcsolati rekordját. nf_conntrack_max a kivonattáblában található csomópontok maximális száma, azaz a modul által nf_conntrack támogatott kapcsolatok maximális száma vagy a kapcsolatkövetési tábla mérete. Az alapértelmezett érték dinamikusan van kiszámítva a rendszermemória alapján a következő képlettel: RAM_in_bytes / 16384 (vagy RAM_in_MB * 64). Például egy 8 GB RAM-mal rendelkező virtuális gép alapértelmezett értéke körülbelül 524 288 kapcsolat. A tényleges értékek a virtuális gép méretétől és a rendelkezésre álló memóriától függően változnak.
net.netfilter.nf_conntrack_buckets 65536 - 524288 Dinamikusan kiszámított Dinamikusan kiszámított Dinamikusan kiszámított nf_conntrack Egy modul, amely a Linuxon belüli NAT-kapcsolatok bejegyzéseit követi nyomon. A nf_conntrack modul kivonattáblával rögzíti a TCP protokoll létrehozott kapcsolati rekordját. nf_conntrack_buckets a kivonattábla mérete. Az alapértelmezett érték dinamikusan számítható ki a rendszermemória alapján a következő képlettel: RAM_in_bytes / 16384legalább 1024 gyűjtővel és legfeljebb 262 144 gyűjtővel. Az alapértelmezett nf_conntrack_max érték általában a következő.nf_conntrack_buckets * 4 A tényleges értékek a virtuális gép méretétől és a rendelkezésre álló memóriától függően változnak.

Linuxos feldolgozói korlátok

A fájlleíró korlátaihoz hasonlóan a folyamat által létrehozható feldolgozók vagy szálak számát a kernelbeállítás és a felhasználói korlátok is korlátozzák. Az AKS felhasználói korlátja korlátlan. Az alábbi táblázat felsorolja a csomópontkészletenként testre szabható kernelbeállítást:

Setting Ubuntu 22.04 alapértelmezett Ubuntu 24.04 alapértelmezett Alapértelmezett Azure Linux 3.0 Description
kernel.threads-max Dinamikusan kiszámított Dinamikusan kiszámított Dinamikusan kiszámított A folyamatok felpörgethetik a feldolgozói szálakat. A létrehozható összes szál maximális száma a kernelbeállítással kernel.threads-maxvan beállítva. Az alapértelmezett érték dinamikusan számítható ki a rendszermemória alapján a következő képlettel: total_ram_pages / 4 (ahol az egyes lapok általában 4 KB-osak). A tényleges értékek a virtuális gép méretétől és a rendelkezésre álló memóriától függően változnak.

Linux virtuális memória

Az alábbi táblázat felsorolja azokat a kernelbeállításokat, amelyeket csomópontkészletenként testre szabhat a Linux kernel virtuális memória (VM) alrendszerének és a writeout lemezre irányuló piszkos adatok működésének finomhangolásához:

Setting Engedélyezett értékek/intervallum Ubuntu 22.04 alapértelmezett Ubuntu 24.04 alapértelmezett Alapértelmezett Azure Linux 3.0 Description
vm.max_map_count 65530 1048576 1048576 Ez a fájl a folyamat memóriatérkép-területeinek maximális számát tartalmazza. A memóriatérkép-területeket mellékhatásként hívják meg a malloc hívásával, közvetlenül a mmap, mprotect és madvise, valamint a megosztott könyvtárak betöltésekor.
vm.vfs_cache_pressure 1 - 100 100 100 100 Ez a százalékos érték szabályozza a kernel azon hajlamát, hogy visszanyerje a könyvtár- és inode-objektumok gyorsítótárazására használt memóriát.
vm.swappiness 0 - 100 60 60 60 Ez a vezérlő határozza meg, hogy a kernel milyen agresszív módon cseréli fel a memórialapokat. A magasabb értékek növelik az agresszivitást, az alacsonyabb értékek csökkentik a felcserélés mennyiségét. A 0 érték arra utasítja a kernelt, hogy ne kezdeményezzon felcserélést, amíg a szabad és fájlalapú lapok mennyisége nem kisebb, mint a zóna magas vízjele.
swapFileSizeMB 1 MB – Az ideiglenes lemez mérete (/dev/sdb) None None None A SwapFileSizeMB a csomópontkészlet ügynökcsomópontjain létrehozandó felcserélési fájl MB-ban megadott méretét adja meg.
transparentHugePageEnabled \, \, \ always always madvise A Transzparens Hugepages linuxos kernelfunkció, amelynek célja, hogy hatékonyabbá tegye a processzor memórialeképezési hardverének használatát. Ha engedélyezve van, a kernel megpróbálja lefoglalni hugepages , amikor csak lehetséges, és bármely Linux-folyamat 2 MB-os oldalakat kap, ha a mmap régió természetesen 2 MB-ra van igazítva. Bizonyos esetekben, amikor a hugepages rendszer szintjén engedélyezve van, az alkalmazások több memóriaerőforrást foglalhatnak le. Egy alkalmazás lefoglalhat egy nagy méretű régiót mmap, de csak 1 bájtot érinthet, így egy 2 MB-os lap foglalható le egy 4k-oldal helyett, indokolatlanul. Ez a forgatókönyv az oka annak, hogy a hugepages az egész rendszerben letiltható, vagy csak a MADV_HUGEPAGE madvise régiókon belül használható.
transparentHugePageDefrag always, defer, defer+madvise, madvise, , never madvise madvise madvise Ez az érték határozza meg, hogy a kernelnek agresszívan kell-e alkalmaznia a memória-tömörítést, hogy több hugepages legyen elérhető.