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
Problemen met aangepaste knooppuntconfiguraties oplossen
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 |
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 en alle systeemoproepen zijn toegestaan waardoor de beveiliging wordt verminderd. Zie het standaard seccomp-profiel voor containerD 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 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 somaxconn argument , 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 , mprotect en, en madvise ook 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 , , madvise never |
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 |
always defer+madvise , defer , madvise never |
madvise |
Deze waarde bepaalt of de kernel agressief gebruik moet maken van geheugencompressie om meer hugepages beschikbaar te maken. |
Volgende stappen
- Meer informatie over het configureren van uw AKS-cluster.
- Meer informatie over het upgraden van de knooppuntinstallatiekopieën in uw cluster.
- Zie Een AKS-cluster (Azure Kubernetes Service) upgraden voor meer informatie over het upgraden van uw cluster naar de nieuwste versie van Kubernetes.
- Zie de lijst met veelgestelde vragen over AKS voor antwoorden op enkele veelgestelde AKS-vragen .
Azure Kubernetes Service