Delen via


De knooppuntconfiguratie voor AKS-knooppuntgroepen (Azure Kubernetes Service) aanpassen

Door uw knooppuntconfiguratie aan te passen, kunt u besturingssysteeminstellingen of kubelet-parameters aanpassen aan de behoeften van uw workloads. Wanneer u een AKS-cluster maakt of een knooppuntgroep aan uw cluster toevoegt, kunt u een subset van veelgebruikte instellingen voor het besturingssysteem en kubelet aanpassen. Als u instellingen buiten deze subset wilt configureren, kunt u een daemonset gebruiken om uw benodigde configuraties aan te passen zonder dat AKS-ondersteuning voor uw knooppunten verloren gaat.

Aangepaste knooppuntconfiguratiebestanden maken voor AKS-knooppuntgroepen

Voor wijzigingen in de configuratie van het besturingssysteem en kubelet moet u een nieuw configuratiebestand maken met de parameters en de gewenste instellingen. Als er geen waarde voor een parameter is opgegeven, wordt de waarde ingesteld op de standaardwaarde.

Notitie

In de volgende voorbeelden ziet u algemene configuratie-instellingen. U kunt de instellingen wijzigen om te voldoen aan uw workloadvereisten. Zie de sectie Ondersteunde aangepaste configuratieparameters voor een volledige lijst met ondersteunde aangepaste configuratieparameters.

Kubelet-configuratie

Maak een linuxkubeletconfig.json bestand met de volgende inhoud:

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

Configuratie van besturingssysteem

Maak een linuxosconfig.json bestand met de volgende inhoud:

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

Een AKS-cluster maken met behulp van aangepaste configuratiebestanden

Notitie

Houd rekening met de volgende informatie bij het gebruik van aangepaste configuratiebestanden bij het maken van een nieuw AKS-cluster:

  • Als u een configuratie opgeeft bij het maken van een cluster, is de configuratie alleen van toepassing op de knooppunten in de eerste knooppuntgroep. Alle instellingen die niet in het JSON-bestand zijn geconfigureerd, behouden hun standaardwaarden.
  • CustomLinuxOsConfig wordt niet ondersteund voor het type Windows-besturingssysteem.

Maak een nieuw cluster met behulp van aangepaste configuratiebestanden met behulp van de az aks create opdracht en geef uw configuratiebestanden voor de --kubelet-config en --linux-os-config parameters op. Met de volgende voorbeeldopdracht maakt u een nieuw cluster met de aangepaste ./linuxkubeletconfig.json en ./linuxosconfig.json bestanden:

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

Een knooppuntgroep toevoegen met behulp van aangepaste configuratiebestanden

Notitie

Houd rekening met de volgende informatie bij het gebruik van aangepaste configuratiebestanden bij het toevoegen van een nieuwe knooppuntgroep aan een bestaand AKS-cluster:

  • Wanneer u een Linux-knooppuntgroep toevoegt aan een bestaand cluster, kunt u de kubelet-configuratie, besturingssysteemconfiguratie of beide opgeven. Wanneer u een Windows-knooppuntgroep toevoegt aan een bestaand cluster, kunt u alleen de kubelet-configuratie opgeven. Als u een configuratie opgeeft bij het toevoegen van een knooppuntgroep, is de configuratie alleen van toepassing op de knooppunten in de nieuwe knooppuntgroep. Alle instellingen die niet in het JSON-bestand zijn geconfigureerd, behouden hun standaardwaarden.
  • CustomKubeletConfig wordt ondersteund voor Linux- en Windows-knooppuntgroepen.

Maak een nieuwe Linux-knooppuntgroep met behulp van de az aks nodepool add opdracht en geef uw configuratiebestanden voor de --kubelet-config en --linux-os-config parameters op. Met de volgende voorbeeldopdracht maakt u een nieuwe Linux-knooppuntgroep met het aangepaste ./linuxkubeletconfig.json bestand:

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

Bevestigen dat de instellingen zijn toegepast

Nadat u aangepaste knooppuntconfiguratie hebt toegepast, kunt u controleren of de instellingen zijn toegepast op de knooppunten door verbinding te maken met de host en te controleren sysctl of configuratiewijzigingen zijn aangebracht in het bestandssysteem.

Ondersteunde aangepaste configuratieparameters

De aangepaste configuratie voor de Linux-kubelet

Parameter Toegestane waarden/interval Default Beschrijving
cpuManagerPolicy geen, statisch Geen Met het statische beleid kunnen containers in gegarandeerde pods met gehele CPU-aanvragen toegang krijgen tot exclusieve CPU's op het knooppunt.
cpuCfsQuota de waarde True, false true CPU CFS-quotum handhaving in- of uitschakelen voor containers die CPU-limieten opgeven.
cpuCfsQuotaPeriod Interval in milliseconden (ms) 100ms Hiermee stelt u de waarde van de CPU CFS-quotumperiode in.
imageGcHighThreshold 0-100 85 Het percentage schijfgebruik waarna garbagecollection van installatiekopieën altijd wordt uitgevoerd. Minimaal schijfgebruik waarmee garbagecollection wordt geactiveerd. Als u de garbagecollection van de installatiekopieën wilt uitschakelen, stelt u in op 100.
imageGcLowThreshold 0-100, niet hoger dan imageGcHighThreshold 80 Het percentage schijfgebruik voordat de garbagecollection van installatiekopieën nooit wordt uitgevoerd. Minimaal schijfgebruik dat garbagecollection kan activeren.
topologyManagerPolicy geen, beste inspanning, beperkt, enkele NUMA-node Geen Numa-knooppuntuitlijning optimaliseren. Zie Beleidsregels voor beheer van topologiebeheer op een knooppunt voor meer informatie.
allowedUnsafeSysctls kernel.shm* kernel.msg*, kernel.sem, fs.mqueue.*net.* Geen Lijst met onveilige sysctls of onveilige sysctl-patronen.
containerLogMaxSizeMB Grootte in megabytes (MB) 50 De maximale grootte (bijvoorbeeld 10 MB) van een containerlogboekbestand voordat het wordt gedraaid.
containerLogMaxFiles ≥ 2 5 Het maximum aantal containerlogboekbestanden dat aanwezig kan zijn voor een container.
podMaxPids -1 tot kernel PID-limiet -1 (∞) Het maximale aantal proces-id's dat in een Pod kan draaien.
seccompDefault Unconfined, RuntimeDefault Unconfined Hiermee stelt u het standaard seccomp-profiel in voor alle workloads. RuntimeDefault maakt gebruik van het standaard seccomp-profiel van containerd, waardoor bepaalde systeemaanroepen worden beperkt om de beveiliging te verbeteren. Beperkte syscalls mislukken. Unconfined plaatst geen beperkingen op syscalls, waardoor alle systeemoproepen worden toegestaan en de beveiliging wordt verminderd. Zie het standaard seccomp-profiel voor containers voor meer informatie. Deze parameter is in preview. Registreer de functievlag KubeletDefaultSeccompProfilePreview met behulp van de az feature register opdracht met --namespace "Microsoft.ContainerService".

Aangepaste configuratie van Windows kubelet

Parameter Toegestane waarden/interval Default Beschrijving
imageGcHighThreshold 0-100 85 Het percentage schijfgebruik waarna garbagecollection van installatiekopieën altijd wordt uitgevoerd. Minimaal schijfgebruik waarmee garbagecollection wordt geactiveerd. Als u de garbagecollection van de installatiekopieën wilt uitschakelen, stelt u in op 100.
imageGcLowThreshold 0-100, niet hoger dan imageGcHighThreshold 80 Het percentage schijfgebruik voordat de garbagecollection van installatiekopieën nooit wordt uitgevoerd. Minimaal schijfgebruik dat garbagecollection kan activeren.
containerLogMaxSizeMB Grootte in megabytes (MB) 10 De maximale grootte (bijvoorbeeld 10 MB) van een containerlogboekbestand voordat het wordt gedraaid.
containerLogMaxFiles ≥ 2 5 Het maximum aantal containerlogboekbestanden dat aanwezig kan zijn voor een container.

Aangepaste configuratie-instellingen voor Linux-besturingssysteem

Belangrijk

Om de zoek- en leesbaarheid te vereenvoudigen, worden de besturingssysteeminstellingen in dit artikel op naam weergegeven, maar moeten ze worden toegevoegd aan het JSON-configuratiebestand of de AKS-API met behulp van de hoofdlettergebruiksconventie camelCase.

Als u bijvoorbeeld vm.max_map_count setting wijzigt, moet u vmMaxMapCount herformatteren in het JSON-configuratiebestand.

Limieten voor Linux-bestandsingangen

Bij het leveren van grote hoeveelheden verkeer komt dat verkeer meestal uit een groot aantal lokale bestanden. U kunt de volgende kernelinstellingen en ingebouwde limieten aanpassen, zodat u meer kunt verwerken, tegen de kosten van een bepaald systeemgeheugen.

De volgende tabel bevat de limieten voor bestandsingangen die u per knooppuntgroep kunt aanpassen:

Instelling Toegestane waarden/interval Standaard ubuntu 22.04 Standaard ubuntu 24.04 Standaardinstelling voor Azure Linux 3.0 Beschrijving
fs.file-max 8192 - 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 Maximum aantal bestandsingangen dat door de Linux-kernel wordt toegewezen. Deze waarde is ingesteld op de maximaal mogelijke waarde (2^63-1) om bestandsdescriptoruitputting te voorkomen en onbeperkte systeembrede bestandsingangen voor gecontaineriseerde workloads te garanderen.
fs.inotify.max_user_watches 781250 - 2097152 1048576 1048576 1048576 Maximum aantal bestanden horloges dat is toegestaan door het systeem. Elk horloge is ongeveer 90 bytes op een 32-bits kernel en ongeveer 160 bytes op een 64-bits kernel.
fs.aio-max-nr 65536 - 6553500 65536 65536 65536 De aio-nr toont het huidige systeembrede aantal asynchrone Io-aanvragen. met aio-max-nr kunt u de maximumwaarde aio-nr wijzigen in.
fs.nr_open 8192 - 20000500 1048576 1048576 1073741816 Het maximum aantal bestandsingangen dat een proces kan toewijzen.

Notitie

De fs.file-max parameter is ingesteld op 9223372036854775807 (de maximumwaarde voor een ondertekend 64-bits geheel getal) in Ubuntu en Azure Linux op basis van upstream-standaardinstellingen. Deze configuratie:

  • Voorkomt denial-of-service-aanvallen op basis van bestanddescriptoruitputting voor het hele systeem.
  • Zorgt ervoor dat containerworkloads nooit knelpunten ondervinden door systeembrede bestandsinganglimieten.
  • Onderhoudt beveiliging via limieten per proces (fs.nr_open en ulimit) die nog steeds van toepassing zijn op afzonderlijke processen.
  • Optimaliseert voor containerplatforms waar veel containers tegelijkertijd kunnen worden uitgevoerd, waarbij elk mogelijk veel bestanden en netwerkverbindingen opent.

Linux-socket en netwerkafstemming

Voor agentknooppunten die naar verwachting grote aantallen gelijktijdige sessies moeten verwerken, kunt u de volgende TCP- en netwerkopties gebruiken en deze per knooppuntgroep aanpassen:

Instelling Toegestane waarden/interval Standaard ubuntu 22.04 Standaard ubuntu 24.04 Standaardinstelling voor Azure Linux 3.0 Beschrijving
net.core.somaxconn 4096 - 3240000 16384 16384 16384 Maximum aantal verbindingsaanvragen dat in de wachtrij kan worden geplaatst voor een opgegeven listening socket. Een bovengrens voor de waarde van de achterstandsparameter die is doorgegeven aan de listen(2) -functie. Als het argument achterstand groter is dan het somaxconnargument , wordt het op de achtergrond afgekapt tot deze limiet.
net.core.netdev_max_backlog 1000 - 3240000 1000 1000 1000 Maximum aantal pakketten, in de wachtrij geplaatst aan de KANT INPUT, wanneer de interface pakketten sneller ontvangt dan kernel kan verwerken.
net.core.rmem_max 212992 - 134217728 1048576 1048576 212992 De maximale grootte van de ontvangstsocketbuffer in bytes.
net.core.wmem_max 212992 - 134217728 212992 212992 212992 De maximale grootte van de socketbuffer verzenden in bytes.
net.core.optmem_max 20480 - 4194304 20480 131072 20480 Maximale aanvullende buffergrootte (optiegeheugenbuffer) toegestaan per socket. Socketoptiegeheugen wordt in enkele gevallen gebruikt om extra structuren op te slaan met betrekking tot het gebruik van de socket.
net.ipv4.tcp_max_syn_backlog 128 - 3240000 16384 16384 16384 Het maximum aantal verbindingsaanvragen in de wachtrij dat geen bevestiging van de verbindingsclient heeft ontvangen. Als dit aantal wordt overschreden, begint de kernel met het verwijderen van aanvragen.
net.ipv4.tcp_max_tw_buckets 8000 - 1440000 262144 262144 131072 Het maximale aantal timewait sockets dat tegelijkertijd door het systeem wordt vastgehouden. Als dit aantal wordt overschreden, wordt de tijdwachtsocket onmiddellijk vernietigd en wordt de waarschuwing afgedrukt.
net.ipv4.tcp_fin_timeout 5 - 120 60 60 60 De tijdsduur hoelang een onverwezen verbinding (waarbij niet meer door een toepassing wordt verwezen) in de status FIN_WAIT_2 blijft, voordat deze aan het lokale einde wordt beëindigd.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 7200 7200 Hoe vaak TCP berichten verzendt keepalive wanneer keepalive deze is ingeschakeld.
net.ipv4.tcp_keepalive_probes 1 - 15 9 9 9 Hoeveel keepalive tests TCP verzendt, totdat wordt besloten dat de verbinding is verbroken.
net.ipv4.tcp_keepalive_intvl 10 - 90 75 75 75 Hoe vaak de tests worden verzonden. Vermenigvuldigd tcp_keepalive_probes met het maken van de tijd om een verbinding te beëindigen die niet reageert, nadat tests zijn gestart.
net.ipv4.tcp_tw_reuse 2 2 2 Sta sockets toe TIME-WAIT voor nieuwe verbindingen wanneer deze veilig zijn vanuit protocoloogpunt.
net.ipv4.ip_local_port_range Eerste: 1024 - 60999 en Laatste: 32768 - 65535] Eerste: 32768 en Laatste: 60999 Eerste: 32768 en Laatste: 60999 Eerste: 32768 en Laatste: 60999 Het lokale poortbereik dat wordt gebruikt door TCP- en UDP-verkeer om de lokale poort te kiezen. Bestaat uit twee getallen: het eerste getal is de eerste lokale poort die is toegestaan voor TCP- en UDP-verkeer op het agentknooppunt, de tweede is het laatste lokale poortnummer.
net.ipv4.neigh.default.gc_thresh1 128 - 80000 4096 4096 4096 Minimaal aantal vermeldingen dat zich in de ARP-cache kan bevinden. Garbage Collection wordt niet geregistreerd als het aantal objecten lager dan deze waarde is.
net.ipv4.neigh.default.gc_thresh2 512 - 90000 8192 8192 8192 Zacht maximum aantal vermeldingen dat zich in de ARP-cache kan bevinden. Deze instelling is waarschijnlijk het belangrijkt, omdat ARP garbage collection ongeveer 5 seconden nadat dit zachte maximum is bereikt, wordt geactiveerd.
net.ipv4.neigh.default.gc_thresh3 1024 - 100000 16384 16384 16384 Hard maximum aantal vermeldingen in de ARP-cache.
net.netfilter.nf_conntrack_max 131072 - 2097152 Dynamisch berekend Dynamisch berekend Dynamisch berekend nf_conntrack is een module die verbindingsvermeldingen voor NAT in Linux bijhoudt. De nf_conntrack module maakt gebruik van een hash-tabel om de tot stand gebrachte verbindingsrecord van het TCP-protocol vast te leggen. nf_conntrack_max is het maximum aantal knooppunten in de hash-tabel, dat wil gezegd, het maximum aantal verbindingen dat wordt ondersteund door de nf_conntrack module of de grootte van de tabel voor het bijhouden van verbindingen. De standaardwaarde wordt dynamisch berekend op basis van systeemgeheugen met behulp van de formule: RAM_in_bytes / 16384 (of RAM_in_MB * 64). Een VIRTUELE machine met 8 GB RAM heeft bijvoorbeeld een standaardwaarde van ongeveer 524.288 verbindingen. Werkelijke waarden variëren op basis van de VM-grootte en het beschikbare geheugen.
net.netfilter.nf_conntrack_buckets 65536 - 524288 Dynamisch berekend Dynamisch berekend Dynamisch berekend nf_conntrack is een module die verbindingsvermeldingen voor NAT in Linux bijhoudt. De nf_conntrack module maakt gebruik van een hash-tabel om de tot stand gebrachte verbindingsrecord van het TCP-protocol vast te leggen. nf_conntrack_buckets is de grootte van de hash-tabel. De standaardwaarde wordt dynamisch berekend op basis van systeemgeheugen met behulp van de formule: RAM_in_bytes / 16384, met minimaal 1024 buckets en maximaal 262.144 buckets. De standaardwaarde nf_conntrack_max is doorgaans ingesteld op nf_conntrack_buckets * 4. Werkelijke waarden variëren op basis van de VM-grootte en het beschikbare geheugen.

Limieten voor Linux-werkers

Net als bij bestandsdescriptorlimieten wordt het aantal werkrollen of threads dat door een proces kan worden gemaakt, beperkt door zowel een kernelinstelling als gebruikerslimieten. De gebruikerslimiet voor AKS is onbeperkt. De volgende tabel bevat de kernelinstelling die u per knooppuntgroep kunt aanpassen:

Instelling Standaard ubuntu 22.04 Standaard ubuntu 24.04 Standaardinstelling voor Azure Linux 3.0 Beschrijving
kernel.threads-max Dynamisch berekend Dynamisch berekend Dynamisch berekend Processen kunnen werkrolthreads instellen. Het maximum aantal threads dat kan worden gemaakt, wordt ingesteld met de kernelinstelling kernel.threads-max. De standaardwaarde wordt dynamisch berekend op basis van systeemgeheugen met behulp van de formule: total_ram_pages / 4 (waarbij elke pagina doorgaans 4 kB is). Werkelijke waarden variëren op basis van de VM-grootte en het beschikbare geheugen.

Virtueel Linux-geheugen

De volgende tabel bevat de kernelinstellingen die u per knooppuntgroep kunt aanpassen om de werking van het subsysteem voor het virtuele geheugen (VM) van de Linux-kernel en de writeout vuile gegevens naar schijf af te stemmen:

Instelling Toegestane waarden/interval Standaard ubuntu 22.04 Standaard ubuntu 24.04 Standaardinstelling voor Azure Linux 3.0 Beschrijving
vm.max_map_count 65530 1048576 1048576 Dit bestand bevat het maximum aantal geheugentoewijzingsgebieden dat een proces kan hebben. Geheugenkaartgebieden worden gebruikt als neveneffect van het aanroepen malloc, rechtstreeks door mmap, mprotecten, en madviseook bij het laden van gedeelde bibliotheken.
vm.vfs_cache_pressure 1 - 100 100 100 100 Deze percentagewaarde bepaalt de neiging van de kernel om het geheugen vrij te maken, dat wordt gebruikt voor het opslaan in cache van map- en inode-objecten.
vm.swappiness 0 - 100 60 60 60 Dit controle-element wordt gebruikt om vast te stellen hoe agressief de kernel geheugenpagina's wisselt. Hogere waarden verhogen de agressiviteit, lagere waarden verlagen de hoeveelheid swap. Een waarde van 0 geeft aan dat de kernel geen wissel kan initiëren totdat de hoeveelheid gratis pagina's en pagina's met bestandssteun kleiner is dan de hoge watermarkering in een zone.
swapFileSizeMB 1 MB - Grootte van de tijdelijke schijf (/dev/sdb) Geen Geen Geen SwapFileSizeMB geeft de grootte op in MB van een wisselbestand dat moet worden gemaakt op de agentknooppunten van deze knooppuntgroep.
transparentHugePageEnabled always, , madvisenever always always madvise Transparent Hugepages is een Linux-kernelfunctie die is bedoeld om de prestaties te verbeteren door efficiënter gebruik te maken van de geheugentoewijzingshardware van uw processor. Wanneer de optie is ingeschakeld, probeert de kernel hugepages toe te wijzen wanneer mogelijk, en ontvangt een Linux-proces 2-MB-pagina's als de mmap regio op een natuurlijke manier 2 MB is uitgelijnd. In bepaalde gevallen wanneer hugepages systeembreed is ingeschakeld, kunnen toepassingen uiteindelijk meer geheugenresources toewijzen. Een toepassing kan een groot gebied mmap, maar slechts 1 byte ervan aanraken; in dat geval kan zonder goede reden een pagina van 2 MB worden toegewezen in plaats van een 4kB-pagina. Dit scenario is waarom het mogelijk is om systeembreed uit te schakelen hugepages of alleen binnen MADV_HUGEPAGE madvise regio's te hebben.
transparentHugePageDefrag always defer, defer+madvise, madvisenever madvise madvise madvise Deze waarde bepaalt of de kernel agressief gebruik moet maken van geheugencompressie om meer hugepages beschikbaar te maken.