Delen via


Knooppuntconfiguratie aanpassen voor AKS-knooppuntgroepen (Azure Kubernetes Service)

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.

Een AKS-cluster maken met een aangepaste knooppuntconfiguratie

Configuratiebestanden maken

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.

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 nieuw cluster maken met behulp van aangepaste configuratiebestanden

Wanneer u een nieuw cluster maakt, kunt u de aangepaste configuratiebestanden gebruiken die in de vorige stappen zijn gemaakt om de kubelet-configuratie, besturingssysteemconfiguratie of beide op te geven.

Notitie

Als u een configuratie opgeeft bij het maken van een cluster, worden alleen de knooppunten in de eerste knooppuntgroep die configuratie toegepast. Alle instellingen die niet zijn geconfigureerd in het JSON-bestand, behouden de standaardwaarde. CustomLinuxOsConfig wordt niet ondersteund voor het type besturingssysteem: Windows.

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

az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json

Een knooppuntgroep toevoegen met behulp van aangepaste configuratiebestanden

Wanneer u een knooppuntgroep toevoegt aan een cluster, kunt u het aangepaste configuratiebestand gebruiken dat u in de vorige stap hebt gemaakt om de kubelet-configuratie op te geven. CustomKubeletConfig wordt ondersteund voor Linux- en Windows-knooppuntgroepen.

Notitie

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, worden alleen de knooppunten in de nieuwe knooppuntgroep die configuratie toegepast. Alle instellingen die niet zijn geconfigureerd in het JSON-bestand, behouden de standaardwaarde.

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

Andere configuraties

De volgende instellingen kunnen worden gebruikt om andere besturingssysteeminstellingen te wijzigen:

Bericht van de dag

Geef de --message-of-the-day vlag door met de locatie van het bestand om het bericht van de dag op Linux-knooppunten te vervangen bij het maken van een cluster of het maken van een knooppuntgroep.

az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Knooppuntpool maken
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

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 er configuratiewijzigingen zijn aangebracht in het bestandssysteem.

Ondersteunde parameters voor aangepaste knooppuntconfiguratie

Aangepaste Kubelet-configuratie

Aangepaste Kubelet-configuratie wordt ondersteund voor Linux- en Windows-knooppuntgroepen. Ondersteunde parameters verschillen en worden hieronder beschreven.

Aangepaste configuratie voor 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 afdwingen 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 dat garbagecollection activeert . 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 none, best-effort, restricted, single-numa-node Geen Numa-knooppuntuitlijning optimaliseren, zie hier meer.
allowedUnsafeSysctls kernel.shm*kernel.sem, kernel.msg*, 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 (∞) De maximale hoeveelheid proces-id's die in een pod kunnen worden uitgevoerd

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 dat garbagecollection activeert . 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 van camelCase.

Als u bijvoorbeeld de instelling 'vm.max_map_count' wijzigt, moet u de indeling 'vmMaxMapCount' in het JSON-configuratiebestand wijzigen.

Limieten voor bestandsingang

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

Instelling Toegestane waarden/interval Default Beschrijving
fs.file-max 8192 - 12000500 709620 Het maximum aantal bestandsingangen dat door de Linux-kernel wordt toegewezen, door deze waarde te verhogen, kunt u het maximum aantal geopende bestanden verhogen dat is toegestaan.
fs.inotify.max_user_watches 781250 - 2097152 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 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 Het maximum aantal bestandsingangen dat een proces kan toewijzen.

Socket en netwerkafstemming

Voor agentknooppunten die naar verwachting zeer grote aantallen gelijktijdige sessies moeten verwerken, kunt u de subset van TCP- en netwerkopties hieronder gebruiken die u per knooppuntgroep kunt aanpassen.

Instelling Toegestane waarden/interval Default Beschrijving
net.core.somaxconn 4096 - 3240000 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 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 212992 De maximale grootte van de ontvangstsocketbuffer in bytes.
net.core.wmem_max 212992 - 134217728 212992 De maximale grootte van de socketbuffer verzenden in bytes.
net.core.optmem_max 20480 - 4194304 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 Het maximum aantal verbindingsaanvragen in de wachtrij dat nog steeds 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 32768 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 De tijdsduur van een zwevende verbinding (waarnaar niet meer wordt verwezen door een toepassing) blijft in de status FIN_WAIT_2 voordat deze aan het lokale einde wordt afgebroken.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 Hoe vaak TCP berichten verzendt keepalive wanneer keepalive deze is ingeschakeld.
net.ipv4.tcp_keepalive_probes 1 - 15 9 Hoeveel keepalive tests TCP verzendt, totdat wordt besloten dat de verbinding is verbroken.
net.ipv4.tcp_keepalive_intvl 10 - 90 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 0 of 1 0 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 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 Minimaal aantal vermeldingen dat zich in de ARP-cache bevindt. Garbagecollection wordt niet geactiveerd als het aantal vermeldingen onder deze instelling valt.
net.ipv4.neigh.default.gc_thresh2 512 - 90000 8192 Voorlopig maximum aantal vermeldingen dat zich mogelijk in de ARP-cache bevindt. Deze instelling is waarschijnlijk het belangrijkste, omdat de ARP-garbagecollection ongeveer 5 seconden na het bereiken van dit zachte maximum wordt geactiveerd.
net.ipv4.neigh.default.gc_thresh3 1024 - 100000 16384 Hard maximum aantal vermeldingen in de ARP-cache.
net.netfilter.nf_conntrack_max 131072 - 2097152 131072 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.
net.netfilter.nf_conntrack_buckets 65536 - 524288 65536 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.

Werkrollimieten

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.

Instelling Toegestane waarden/interval Default Beschrijving
kernel.threads-max 20 - 513785 55601 Processen kunnen werkrolthreads instellen. Het maximum aantal threads dat kan worden gemaakt, wordt ingesteld met de kernelinstelling kernel.threads-max.

Virtueel geheugen

De onderstaande instellingen kunnen worden gebruikt om de werking van het subsysteem van het virtuele geheugen (VM) van de Linux-kernel en de writeout vuile gegevens naar schijf af te stemmen.

Instelling Toegestane waarden/interval Default Beschrijving
vm.max_map_count 65530 - 262144 65530 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 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 Dit besturingselement wordt gebruikt om te definiëren hoe agressief de kernel geheugenpagina's wisselt. Hogere waarden verhogen de sterkte, lagere waarden verlagen het aantal wisselingen. 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 SwapFileSizeMB geeft de grootte op in MB van een wisselbestand wordt gemaakt op de agentknooppunten van deze knooppuntgroep.
transparentHugePageEnabled always, , madvisenever always 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 kernel indien mogelijk is ingeschakeld, probeert deze toe te wijzen hugepages en ontvangt een Linux-proces 2 MB-pagina's als de mmap regio op een natuurlijke manier is uitgelijnd. In bepaalde gevallen wanneer hugepages systeembreed is ingeschakeld, kunnen toepassingen uiteindelijk meer geheugenresources toewijzen. Een toepassing kan een grote regio hebben mmap , maar slechts 1 byte ervan aanraken, in dat geval kan een pagina van 2 MB worden toegewezen in plaats van een 4k-pagina om geen goede reden. Dit scenario is waarom het mogelijk is om systeembreed uit te schakelen hugepages of alleen binnen MADV_HUGEPAGE madvise regio's te hebben.
transparentHugePageDefrag alwaysdefer+madvise, defer, madvisenever madvise Deze waarde bepaalt of de kernel agressief gebruik moet maken van geheugencompressie om meer hugepages beschikbaar te maken.

Volgende stappen