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.

AKS-fürt létrehozása testreszabott csomópontkonfigurációval

Konfigurációs fájlok létrehozása

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 lesz állítva.

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"
 }
}

Új fürt létrehozása egyéni konfigurációs fájlok használatával

Új fürt létrehozásakor az előző lépésekben létrehozott testre szabott konfigurációs fájlokkal megadhatja a kubelet konfigurációját, operációsrendszer-konfigurációját vagy mindkettőt.

Feljegyzés

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

Hozzon létre egy új fürtöt egyéni konfigurációs fájlok használatával a az aks create parancs használatával, és adja meg a konfigurációs fájlokat. Az alábbi példaparancs létrehoz egy új fürtöt az egyéni ./linuxkubeletconfig.json és ./linuxosconfig.json a fájlokkal:

az aks create --name myAKSCluster --resource-group myResourceGroup --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

Amikor csomópontkészletet ad hozzá egy fürthöz, az előző lépésben létrehozott testre szabott konfigurációs fájllal adhatja meg a kubelet konfigurációját. CustomKubeletConfig Linux- és Windows-csomópontkészletek esetén támogatott.

Feljegyzés

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 windowsos csomópontkészletet ad hozzá egy meglévő fürthöz, csak a kubelet konfigurációját adhatja meg. Ha egy csomópontkészlet hozzáadásakor konfigurálást ad meg, csak az új csomópontkészlet csomópontjai alkalmazzák ezt a konfigurációt. A JSON-fájlban nem konfigurált beállítások megőrzik az alapértelmezett értéket.

az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json

Egyéb konfigurációk

A következő beállításokkal módosíthatja az operációs rendszer egyéb beállításait:

A nap üzenete

Adja át a --message-of-the-day jelölőt a fájl helyével a nap üzenetének a Linux-csomópontokon történő cseréjéhez a fürt létrehozásakor vagy a csomópontkészlet létrehozásakor.

az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Csomópontkészlet létrehozása
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

Egyéni csomópontkonfigurációk hibaelhárítása

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

Az egyéni csomópontkonfiguráció alkalmazása után ellenőrizheti, hogy a beállításokat alkalmazták-e a csomópontokra , ha csatlakozik a gazdagéphez , és ellenőrzi sysctl , hogy a fájlrendszeren módosításokat hajtottak-e végre.

Egyéni csomópontkonfiguráció által támogatott paraméterek

Egyéni Kubelet-konfiguráció

A Kubelet egyéni konfigurációja linuxos és Windows-csomópontkészletekhez támogatott. A támogatott paraméterek eltérnek egymástól, és az alábbiakban dokumentálva vannak.

Egyéni Linux Kubelet-konfiguráció

Paraméter Engedélyezett értékek/intervallum Alapértelmezett Leírás
cpuManagerPolicy nincs, statikus Nincs A statikus házirend lehetővé teszi, hogy a garantált podokban lévő tárolók egész cpu-kéréssel férhessenek hozzá 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. Minimális lemezhasználat, amely elindítja a szemétgyűjtést. 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, egy-numa-node Nincs A NUMA-csomópontok igazításának optimalizálása, további információt itt talál.
allowedUnsafeSysctls kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.*net.* Egyik sem 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ájljának maximális mérete (például 10 MB) az elforgatá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átja -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 sikertelen lesz. Unconfined nem korlátozza a syscalls szolgáltatást, és minden rendszerhívás engedélyezett, ami csökkenti a biztonságot. További részletekért tekintse meg a containerD 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 --namespace "Microsoft.ContainerService" paranccsal.

Egyéni Windows Kubelet-konfiguráció

Paraméter Engedélyezett értékek/intervallum Alapértelmezett Leírás
imageGcHighThreshold 0–100 85 A lemezhasználat százalékos aránya, amely után a rendszerkép szemétgyűjtése mindig fut. Minimális lemezhasználat, amely elindítja a szemétgyűjtést. 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ájljának maximális mérete (például 10 MB) az elforgatá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

Fontos

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 ezeket hozzá kell adni a konfigurációs JSON-fájlhoz vagy az AKS API-hoz a CamelCase nagybetűsítési konvencióval.

Ha például módosítja a "vm.max_map_count beállítást", a konfigurációs JSON-fájlban újra kell alakítania a "vmMaxMapCount" értéket.

Fájlkezelő korlátai

A sok forgalom kiszolgálása során a forgalom általában sok 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 költségén többet kezelhessenek.

Beállítás Engedélyezett értékek/intervallum Alapértelmezett Leírás
fs.file-max 8192 - 12000500 709620 A Linux kernel által lefoglalt fájlleírók maximális száma, ennek az értéknek a növelésével növelheti a megnyitott fájlok maximális számát.
fs.inotify.max_user_watches 781250 - 2097152 1048576 A rendszer által engedélyezett fájlórák maximális száma. Minden óra 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 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 A folyamat által lefoglalható fájlkezelők maximális száma.

Szoftvercsatorna és hálózat finomhangolása

Az ügynökcsomópontok esetében, amelyek várhatóan nagyon sok egyidejű munkamenetet kezelnek, az alábbi TCP- és hálózati lehetőségeket használhatja, amelyeket csomópontkészletenként finomhangolhat.

Beállítás Engedélyezett értékek/intervallum Alapértelmezett Leírás
net.core.somaxconn 4096 - 3240000 16384 Az adott figyelési szoftvercsatornákhoz várólistára á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 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 212992 A fogadó szoftvercsatornák pufferméretének maximális mérete bájtban.
net.core.wmem_max 212992 - 134217728 212992 A küldési szoftvercsatorna pufferének maximális mérete bájtban.
net.core.optmem_max 20480 - 4194304 20480 Szoftvercsatornánként megengedett maximális kiegészítő pufferméret (lehetőség 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 Azoknak a várólistás kapcsolatkéréseknek a maximális száma, amelyek még nem kaptak visszaigazolást a csatlakozó ügyféltől. Ha túllépi ezt a számot, a kernel elkezdi elvetni a kéréseket.
net.ipv4.tcp_max_tw_buckets 8000 - 1440000 32 768 A rendszer által egyidejűleg tartott foglalatok maximális száma timewait . 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 Az árva (már nem az alkalmazások által hivatkozott) kapcsolatok időtartama FIN_WAIT_2 állapotban marad, mielőtt a helyi végén megszakad.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 Milyen gyakran küld üzeneteket keepalive a TCP, ha keepalive engedélyezve van.
net.ipv4.tcp_keepalive_probes 1 - 15 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 Milyen gyakran küldik el a mintavételeket. A mintavételek elindítása után a megszorozva tcp_keepalive_probes a nem válaszoló kapcsolat megszakadásának ideje.
net.ipv4.tcp_tw_reuse 0 vagy 1 0 Engedélyezi a szoftvercsatornák újbóli használatát TIME-WAIT az ú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 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 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 Az ARP-gyorsítótárban található bejegyzések maximális száma helyreállítható. 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 Az ARP-gyorsítótárban lévő bejegyzések maximális száma.
net.netfilter.nf_conntrack_max 131072 - 2097152 131 072 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.
net.netfilter.nf_conntrack_buckets 65536 - 524288 65536 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.

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.

Beállítás Engedélyezett értékek/intervallum Alapértelmezett Leírás
kernel.threads-max 20 - 513785 55601 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.

Virtuális memória

Az alábbi beállítások 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ára használhatók.

Beállítás Engedélyezett értékek/intervallum Alapértelmezett Leírás
vm.max_map_count 65530 - 262144 65530 Ez a fájl tartalmazza a folyamat memóriatérkép-területeinek maximális számát. A memóriatérkép-területeket a hívásmalloc, a közvetlen mmapmprotectmadviseés a megosztott kódtárak betöltésekor is használják.
vm.vfs_cache_pressure 1 - 100 100 Ez a százalékos érték szabályozza a kernel azon tendenciáját, hogy visszanyerje a memóriát, amelyet a könyvtár és az inode objektumok gyorsítótárazásához használnak.
vm.swappiness 0 - 100 60 Ez a vezérlő határozza meg, hogy a kernel milyen agresszíven 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) Egyik sem A SwapFileSizeMB a csomópontkészlet ügynökcsomópontjain létrejövő felcserélési fájl MB-ban megadott méretét adja meg.
transparentHugePageEnabled always, , madvisenever always 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 hugepages a rendszer széles körűen engedélyezve van, az alkalmazások több memóriaerőforrást is lefoglalhatnak. Egy alkalmazás nagy régió lehet mmap , de csak 1 bájtot érint, ebben az esetben egy 2 MB-os lap foglalható le 4k-oldal helyett, ok nélkül. Ez a forgatókönyv az oka annak, hogy letiltható hugepages a rendszer egésze, vagy csak régiókon belül lehet őket használni MADV_HUGEPAGE madvise .
transparentHugePageDefrag always, defer, defer+madvise, madvisenever madvise Ez az érték határozza meg, hogy a kernelnek agresszíven kell-e használnia a memóriatömörülést a rendelkezésre hugepages állás érdekében.

Következő lépések