Konfigurationsparametrar för anpassad nod för Azure Kubernetes Service (AKS)

I den här artikeln visas konfigurationsparametrar för anpassade noder som stöds för Azure Kubernetes Service (AKS) nodpooler. Information om hur du skapar och tillämpar konfigurationsfiler finns i Anpassa nodkonfigurationen för AKS-nodpooler.

Anpassade Kubelet-konfigurationsparametrar

Important

När du aktiverar osäkra sysctls tar du ansvar för nodstabilitet och arbetsbelastningsbeteende. Osäkra sysctls kan potentiellt orsaka nodinstabilitet eller säkerhetsrisker om de är felkonfigurerade. Se till att du förstår konsekvenserna av att aktivera specifika osäkra sysctls och övervaka klustrets hälsa noga när du har gjort ändringar.

Anpassad Linux kubelet-konfiguration

Parameter Tillåtna värden/intervall Standardinställning Description
cpuManagerPolicy ingen, statisk ingen Den statiska principen tillåter containrar i garanterade poddar med heltals-CPU-begäranden åtkomst till exklusiva processorer på noden.
cpuCfsQuota sant, falskt sann Aktivera/inaktivera CPU CFS-kvottillämpning för containrar som anger CPU-gränser.
cpuCfsQuotaPeriod Intervall i millisekunder (ms) 100ms Anger värdet för CPU CFS-kvotperiod.
imageGcHighThreshold 0–100 85 Den procent av diskanvändningen varefter skräpinsamling av avbildningar alltid körs. Minsta diskanvändning som utlöser skräpinsamling. För att inaktivera skräpinsamling av bilder, ange värdet till 100.
imageGcLowThreshold 0-100, inte högre än imageGcHighThreshold 80 Den procentuella andelen av diskanvändning före vilket skräpinsamlingen för bilder aldrig körs. Minsta diskanvändning som kan utlösa skräpinsamling.
topologyManagerPolicy none, bästa möjliga ansträngning, begränsad, enkel NUMA-nod ingen Optimera NUMA-nodanpassning. Mer information finns i Kontrollera topologihanteringsprinciper på en nod.
allowedUnsafeSysctls kernel.shm*, kernel.msg*, kernel.sem, , , fs.mqueue.*net.* Ingen Tillåten lista över osäkra sysctls eller osäkra sysctl-mönster.
containerLogMaxSizeMB Storlek i megabyte (MB) 50 Den maximala storleken (till exempel 10 MB) för en containerloggfil innan den roteras.
containerLogMaxFiles 2 eller större 5 Det maximala antalet containerloggfiler som ska behållas för en container.
podMaxPids -1 till kernel-PID-gräns -1 (oändlig) Det maximala antalet process-ID:er som kan köras i en podd.
seccompDefault Unconfined, RuntimeDefault Unconfined Anger standardprofilen för seccomp för alla arbetsbelastningar. RuntimeDefault använder containerds standardprofil för seccomp, vilket begränsar vissa systemanrop för att förbättra säkerheten. Begränsade systemanrop misslyckas. Unconfined begränsar inte syscalls, vilket tillåter alla systemanrop och minskar säkerheten. Mer information finns i standardprofilen för seccomp i container. Den här parametern är i förhandsversion. Registrera funktionsflaggan "KubeletDefaultSeccompProfilePreview" med hjälp av kommandot az feature register och --namespace "Microsoft.ContainerService".
kubeReserved.cpuMillicores 1 till nodpoolens CPU-kapacitet i millicores Ingen Reserverar CPU för Kubernetes-systemdaemoner i Linux-nodpooler. Den här parametern är i förhandsversion och kräver funktionsflaggan CustomNodeConfigPreview .
kubeReserved.memoryMB 1 till nodpoolens minneskapacitet i MiB Ingen Reserverar minne för Kubernetes-systemdaemoner i Linux-nodpooler. Den här parametern är i förhandsversion och kräver funktionsflaggan CustomNodeConfigPreview .
hardEvictionThreshold.memoryAvailable <number>Ki, <number>Mi, <number>Gieller <number>% där procentandelen inte är mer än 100 Ingen Anger gränsvärdet för kubelets hårda vräkning av tillgängligt minne på Linux-nodpooler. Den här parametern är i förhandsversion och kräver funktionsflaggan CustomNodeConfigPreview .
hardEvictionThreshold.nodeFsAvailable <number>Ki, <number>Mi, <number>Gieller <number>% där procentandelen inte är mer än 100 Ingen Anger tröskelvärdet för kubelet-hård borttagning för tillgängligt nodfilsystemutrymme i Linux-nodpooler. Den här parametern är i förhandsversion och kräver funktionsflaggan CustomNodeConfigPreview .
hardEvictionThreshold.nodeFsInodesFree <number> eller <number>% där procentandelen inte är mer än 100 Ingen Anger kubelets tröskelvärde för hård vräkning för lediga inoder i nodfilsystemet i Linux-nodpooler. Den här parametern är i förhandsversion och kräver funktionsflaggan CustomNodeConfigPreview .

Anpassad Windows kubelet-konfiguration

Parameter Tillåtna värden/intervall Standardinställning Description
imageGcHighThreshold 0–100 85 Den procent av diskanvändningen varefter skräpinsamling av avbildningar alltid körs. Minsta diskanvändning som utlöser skräpinsamling. För att inaktivera skräpinsamling av bilder, ange värdet till 100.
imageGcLowThreshold 0-100, inte högre än imageGcHighThreshold 80 Den procentuella andelen av diskanvändning före vilket skräpinsamlingen för bilder aldrig körs. Minsta diskanvändning som kan utlösa skräpinsamling.
containerLogMaxSizeMB Storlek i megabyte (MB) 10 Den maximala storleken (till exempel 10 MB) för en containerloggfil innan den roteras.
containerLogMaxFiles 2 eller större 5 Det maximala antalet containerloggfiler som ska behållas för en container.

Konfigurationsparametrar för anpassade Linux-operativsystem

Important

För att förenkla sökningen och läsbarheten visas operativsystemets inställningar i den här artikeln med deras namn, men de bör läggas till i JSON-filens konfiguration eller AKS-API:t enligt camelCase-konventionen.

Om du till exempel ändrar inställningen vm.max_map_count bör du formatera om den till vmMaxMapCount i JSON-konfigurationsfilen.

Gränser för Linux-filhandtag

När du hanterar stora mängder trafik kommer den trafiken ofta från ett stort antal lokala filer. Du kan justera följande kernelinställningar och inbyggda gränser så att du kan hantera mer, till priset av en del systemminne.

I följande tabell visas de filreferensgränser som du kan anpassa per nodpool:

Inställningen Tillåtna värden/intervall Standardvärde för Ubuntu 22.04 Standardvärde för Ubuntu 24.04 Standardinställning för Azure Linux 3.0 Description
fs.file-max 8192 - 9 223 372 036 854 775 807 9223372036854775807 9223372036854775807 9223372036854775807 Maximalt antal filreferenser som Linux-kerneln allokerar. Det här värdet är inställt på det maximala möjliga värdet (2^63-1) för att förhindra filbeskrivningsutmattning och säkerställa obegränsade systemomfattande filhandtag för containerbaserade arbetsbelastningar.
fs.inotify.max_user_watches 781250 - 2097152 1048576 1048576 1048576 Maximalt antal filövervakningar som tillåts av systemet. Varje klocka är ungefär 90 byte på en 32-bitars kernel och ungefär 160 byte på en 64-bitars kernel.
fs.aio-max-nr 65536 - 6553500 65536 65536 65536 Aio-nr visar det aktuella systemomfattande antalet asynkrona I/O-begäranden. med aio-max-nr kan du ändra det maximala värde som aio-nr kan växa till.
fs.nr_open 8192 - 20000500 1048576 1048576 1073741816 Det maximala antalet filreferenser som en process kan allokera.

Note

Parametern fs.file-max är inställd på 9223372036854775807 (det maximala värdet för ett signerat 64-bitars heltal) i Ubuntu och Azure Linux baserat på överordnade standardvärden. Den här konfigurationen:

  • Förhindrar överbelastningsattacker baserat på systemomfattande filbeskrivningsöverbelastning.
  • Säkerställer att containerarbetsbelastningar aldrig begränsas av systemövergripande filhandtagsbegränsningar.
  • Upprätthåller säkerhet via per process-gränser (fs.nr_open och ulimit) som fortfarande gäller för enskilda processer.
  • Optimerar för containerplattformar där många containrar kan köras samtidigt, var och en kan öppna många filer och nätverksanslutningar.

Linux-socket och nätverksjustering

För agentnoder, som förväntas hantera ett stort antal samtidiga sessioner, kan du använda följande TCP- och nätverksalternativ och justera dem per nodpool:

Inställningen Tillåtna värden/intervall Standardvärde för Ubuntu 22.04 Standardvärde för Ubuntu 24.04 Standardinställning för Azure Linux 3.0 Description
net.core.somaxconn 4096 - 3240000 16384 16384 16384 Maximalt antal anslutningsbegäranden som kan köas för en viss lyssningssocket. En övre gräns för värdet för parametern för kvarvarande uppgifter som skickas till funktionen listen(2). Om köargumentet är större än somaxconn, trunkeras det tyst till den här gränsen.
net.core.netdev_max_backlog 1000 - 3240000 1000 1000 1000 Maximalt antal paket, i kö på indatasidan, när gränssnittet tar emot paket snabbare än kerneln kan bearbeta dem.
net.core.rmem_max 212992 - 134217728 1048576 1048576 212992 Den maximala buffertstorleken för mottagningssocket i byte.
net.core.wmem_max 212992 - 134217728 212992 212992 212992 Maximal buffertstorlek för skicka socket i byte.
net.core.optmem_max 20480 - 4194304 20480 131072 20480 Maximal sidobuffertstorlek (alternativminnesbuffert) som tillåts per socket. Socket-alternativminne används i några fall för att lagra extra strukturer relaterade till användning av socketen.
net.ipv4.tcp_max_syn_backlog 128 - 3240000 16384 16384 16384 Det maximala antalet köade anslutningsbegäranden som inte har fått någon bekräftelse från den anslutande klienten. Om det här antalet överskrids börjar kerneln ta bort begäranden.
net.ipv4.tcp_max_tw_buckets 8000 - 1440000 262144 262144 131072 Maximalt antal TIME-WAIT socketar som hålls av systemet samtidigt. Om det här antalet överskrids förstörs time-wait-socketen omedelbart och en varning skrivs ut.
net.ipv4.tcp_fin_timeout 5 - 120 60 60 60 Hur lång tid en överbliven anslutning (som inte längre refereras till av något program) förblir i FIN_WAIT_2 tillstånd innan den avbryts i den lokala änden.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 7200 7200 Hur ofta TCP skickar ut keepalive meddelanden när keepalive är aktiverat.
net.ipv4.tcp_keepalive_probes 1 - 15 9 9 9 Hur många keepalive avsökningar TCP skickar ut tills den beslutar att anslutningen är bruten.
net.ipv4.tcp_keepalive_intvl 10 - 90 75 75 75 Hur ofta probsignalerna skickas ut. Multiplicerat med tcp_keepalive_probes utgör det tiden för att avsluta en anslutning som inte svarar, efter att probsignalerna har börjat.
net.ipv4.tcp_tw_reuse 2 2 2 Tillåter återanvändning av TIME-WAIT socketar för nya anslutningar när det är säkert ur protokollsynpunkt.
net.ipv4.ip_local_port_range Första: 1024 - 60999 och Sist: 32768 - 65535] Första: 32768 och Sist: 60999 Första: 32768 och Sist: 60999 Första: 32768 och Sist: 60999 Det lokala portintervall som används av TCP- och UDP-trafik för att välja den lokala porten. Intervallet består av två tal: den första lokala porten som tillåts för TCP- och UDP-trafik på agentnoden och det senaste lokala portnumret.
net.ipv4.neigh.default.gc_thresh1 128 - 80000 4096 4096 4096 Minsta antal poster som kan finnas i ARP-cachen. Skräpinsamling utlöses inte om antalet poster ligger under den här inställningen.
net.ipv4.neigh.default.gc_thresh2 512 - 90000 8192 8192 8192 Mjukt maximalt antal poster som kan finnas i ARP-cachen. Den här inställningen är utan tvekan den viktigaste eftersom ARP-skräpinsamling utlöses cirka 5 sekunder efter att den här mjuka maxgränsen har nåtts.
net.ipv4.neigh.default.gc_thresh3 1024 - 100000 16384 16384 16384 Hårt maximalt antal poster i ARP-cachen.
net.netfilter.nf_conntrack_max 131072 - 2097152 Dynamiskt beräknad Dynamiskt beräknad Dynamiskt beräknad nf_conntrack är en modul som spårar anslutningsposter för NAT i Linux. Modulen nf_conntrack använder en hash-tabell för att registrera den etablerade anslutningsposten för TCP-protokollet. nf_conntrack_max är det maximala antalet noder i hash-tabellen, dvs. det maximala antalet anslutningar som stöds av modulen nf_conntrack eller storleken på anslutningsspårningstabellen. Standardvärdet beräknas dynamiskt baserat på systemminnet med hjälp av formeln : RAM_in_bytes / 16384 (eller RAM_in_MB * 64). Till exempel har en virtuell dator med 8 GB RAM-minne som standard cirka 524 288 anslutningar. Faktiska värden varierar beroende på storleken på den virtuella datorn och tillgängligt minne.
net.netfilter.nf_conntrack_buckets 65536 - 524288 Dynamiskt beräknad Dynamiskt beräknad Dynamiskt beräknad nf_conntrack är en modul som spårar anslutningsposter för NAT i Linux. Modulen nf_conntrack använder en hash-tabell för att registrera den etablerade anslutningsposten för TCP-protokollet. nf_conntrack_buckets är storleken på hash-tabellen. Standardvärdet beräknas dynamiskt baserat på systemminnet med hjälp av formeln: RAM_in_bytes / 16384, med minst 1 024 bucketar och högst 262 144 bucketar. Standardvärdet nf_conntrack_max är vanligtvis inställt på nf_conntrack_buckets * 4. Faktiska värden varierar beroende på storleken på den virtuella datorn och tillgängligt minne.

Begränsningar för Linux-arbetare

Precis som filbeskrivningsgränser begränsas antalet arbetare eller trådar som en process kan skapa av både en kernelinställning och användargränser. Användargränsen för AKS är obegränsad. I följande tabell visas den kernelinställning som du kan anpassa per nodpool:

Inställningen Standardvärde för Ubuntu 22.04 Standardvärde för Ubuntu 24.04 Standardinställning för Azure Linux 3.0 Description
kernel.threads-max Dynamiskt beräknad Dynamiskt beräknad Dynamiskt beräknad Processer kan starta arbetstrådar. Det maximala antalet trådar som kan skapas anges med kernelinställningen kernel.threads-max. Standardvärdet beräknas dynamiskt baserat på systemminnet med hjälp av formeln: total_ram_pages / 4 (där varje sida vanligtvis är 4 KB). Faktiska värden varierar beroende på storleken på den virtuella datorn och tillgängligt minne.

Virtuellt Linux-minne

I följande tabell visas de kernelinställningar som du kan anpassa per nodpool för att justera driften av undersystemet virtuellt minne (VM) i Linux-kerneln och writeout för smutsiga data till disk:

Inställningen Tillåtna värden/intervall Standardvärde för Ubuntu 22.04 Standardvärde för Ubuntu 24.04 Standardinställning för Azure Linux 3.0 Description
vm.max_map_count 65530 1048576 1048576 Den här filen innehåller det maximala antalet minnesmappningsområden som en process kan ha. Områden för minneskarta används som en bieffekt av att anropa malloc, direkt av mmap, mprotectoch madvise, och även vid inläsning av delade bibliotek.
vm.vfs_cache_pressure 1 - 100 100 100 100 Det här procentvärdet styr kernelns tendens att frigöra minnet, som används för cachelagring av katalog- och inode-objekt.
vm.swappiness 0 - 100 60 60 60 Den här kontrollen används för att definiera hur aggressivt kerneln byter minnessidor. Högre värden ökar aggressiviteten, lägre värden minskar mängden växling. Värdet 0 instruerar kerneln att inte initiera växling förrän mängden lediga och filbaserade sidor är mindre än högvattenmärket i en zon.
swapFileSizeMB 1 MB – Storleken på den temporära disken (/dev/sdb) Ingen Ingen Ingen SwapFileSizeMB anger storleken i MB för en växlingsfil som ska skapas på agentnoderna från den här nodpoolen.
transparentHugePageEnabled always, madvise, never always always madvise Transparent Hugepages är en Linux kernel-funktion avsedd att förbättra prestandan genom att göra mer effektiv användning av processorns minnesmappningsmaskinvara. När den är aktiverad försöker kerneln allokera hugepages när det är möjligt och en Linux-process tar emot 2 MB sidor om mmap regionen är 2 MB naturligt justerad. I vissa fall när hugepages är aktiverade i hela systemet kan program till slut allokera fler minnesresurser. Ett program kan omfatta en stor region men bara röra 1 byte av den, i så fall kan en 2 MB-sida allokeras istället för en 4k-sida utan någon särskild anledning. Det här scenariot är anledningen till att det är möjligt att inaktivera hugepages hela systemet eller bara ha dem i MADV_HUGEPAGE madvise regioner.
transparentHugePageDefrag always, defer, defer+madvise, , , madvisenever madvise madvise madvise Det här värdet styr om kerneln ska använda minneskomprimering aggressivt för att göra mer hugepages tillgängligt.