Anpassa nodkonfigurationen för AKS-nodpooler (Azure Kubernetes Service)
Genom att anpassa nodkonfigurationen kan du justera inställningarna för operativsystem (OS) eller kubeletparametrar så att de matchar arbetsbelastningarnas behov. När du skapar ett AKS-kluster eller lägger till en nodpool i klustret kan du anpassa en delmängd av vanliga inställningar för operativsystem och kubelet. Om du vill konfigurera inställningar utöver den här delmängden kan du använda en daemonuppsättning för att anpassa nödvändiga konfigurationer utan att förlora AKS-stöd för dina noder.
Skapa ett AKS-kluster med en anpassad nodkonfiguration
Skapa konfigurationsfiler
Konfigurationsändringar för operativsystem och kubelet kräver att du skapar en ny konfigurationsfil med parametrarna och önskade inställningar. Om ett värde för en parameter inte har angetts anges värdet till standardvärdet.
Kubelet-konfiguration
Skapa en linuxkubeletconfig.json
fil med följande innehåll:
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
OS-konfiguration
Skapa en linuxosconfig.json
fil med följande innehåll:
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Skapa ett nytt kluster med anpassade konfigurationsfiler
När du skapar ett nytt kluster kan du använda de anpassade konfigurationsfilerna som skapades i föregående steg för att ange kubelet-konfigurationen, OS-konfigurationen eller båda.
Kommentar
Om du anger en konfiguration när du skapar ett kluster kommer endast noderna i den första nodpoolen att ha den konfigurationen tillämpad. Alla inställningar som inte har konfigurerats i JSON-filen behåller standardvärdet. CustomLinuxOsConfig
stöds inte för operativsystemstyp: Windows.
Skapa ett nytt kluster med anpassade konfigurationsfiler med kommandot az aks create
och ange dina konfigurationsfiler. Följande exempelkommando skapar ett nytt kluster med anpassade ./linuxkubeletconfig.json
filer och ./linuxosconfig.json
filer:
az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Lägga till en nodpool med hjälp av anpassade konfigurationsfiler
När du lägger till en nodpool i ett kluster kan du använda den anpassade konfigurationsfilen som skapades i föregående steg för att ange kubelet-konfigurationen. CustomKubeletConfig
stöds för Linux- och Windows-nodpooler.
Kommentar
När du lägger till en Linux-nodpool i ett befintligt kluster kan du ange kubelet-konfigurationen, OS-konfigurationen eller båda. När du lägger till en Windows-nodpool i ett befintligt kluster kan du bara ange kubelet-konfigurationen. Om du anger en konfiguration när du lägger till en nodpool tillämpas endast noderna i den nya nodpoolen. Alla inställningar som inte har konfigurerats i JSON-filen behåller standardvärdet.
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json
Andra konfigurationer
Följande inställningar kan användas för att ändra andra inställningar för operativsystemet:
Dagens meddelande
--message-of-the-day
Skicka flaggan med filens plats för att ersätta Dagens meddelande på Linux-noder när klustret skapas eller nodpoolen skapas.
az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Skapa nodpool
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Bekräfta att inställningarna har tillämpats
När du har tillämpat konfigurationen av anpassade noder kan du bekräfta att inställningarna har tillämpats på noderna genom att ansluta till värden och verifiera att sysctl
eller konfigurationsändringar har gjorts i filsystemet.
Parametrar som stöds för anpassad nodkonfiguration
Anpassad Kubelet-konfiguration
Kubelet-anpassad konfiguration stöds för Linux- och Windows-nodpooler. Parametrar som stöds skiljer sig åt och dokumenteras nedan.
Anpassad Linux Kubelet-konfiguration
Parameter | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
cpuManagerPolicy |
none, static | inget | Den statiska principen tillåter containrar i garanterade poddar med heltals-CPU-begäranden åtkomst till exklusiva processorer på noden. |
cpuCfsQuota |
SANT, FALSKT | true | 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. Om du vill inaktivera skräpinsamling för avbildningar anger du till 100. |
imageGcLowThreshold |
0-100, inte högre än imageGcHighThreshold |
80 | Den procent av diskanvändningen innan avbildningens skräpinsamling aldrig körs. Minsta diskanvändning som kan utlösa skräpinsamling. |
topologyManagerPolicy |
none, best-effort, restricted, single-numa-node | inget | Optimera NUMA-nodjusteringen. Mer information finns här. |
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 | 5 | Det maximala antalet containerloggfiler som kan finnas för en container. |
podMaxPids |
-1 till kernel-PID-gräns | -1 (∞) | Den maximala mängden process-ID:t som kan köras i en podd |
Anpassad Windows Kubelet-konfiguration
Parameter | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
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. Om du vill inaktivera skräpinsamling för avbildningar anger du till 100. |
imageGcLowThreshold |
0-100, inte högre än imageGcHighThreshold |
80 | Den procent av diskanvändningen innan avbildningens skräpinsamling 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 | 5 | Det maximala antalet containerloggfiler som kan finnas för en container. |
Konfigurationsinställningar för anpassade Linux-operativsystem
Viktigt!
För att förenkla sökningen och läsbarheten visas inställningarna för operativsystemet i den här artikeln efter deras namn, men de bör läggas till i JSON-konfigurationsfilen eller AKS-API:et med hjälp av camelCase-versaler.
Om du till exempel ändrar inställningen "vm.max_map_count" bör du formatera om till "vmMaxMapCount" i JSON-konfigurationsfilen.
Gränser för filhandtag
När du hanterar mycket trafik kommer trafiken ofta från ett stort antal lokala filer. Du kan justera kernelinställningarna nedan och de inbyggda gränserna så att du kan hantera mer, till priset av en del systemminne.
Inställning | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
fs.file-max |
8192 - 12000500 | 709620 | Maximalt antal filreferenser som Linux-kerneln ska allokera, genom att öka det här värdet kan du öka det maximala antalet öppna filer som tillåts. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | Maximalt antal filklockor 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 | Aio-nr visar det aktuella systemomfattande antalet asynkrona io-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 | Det maximala antalet filreferenser som en process kan allokera. |
Socket- och nätverksjustering
För agentnoder, som förväntas hantera ett mycket stort antal samtidiga sessioner, kan du använda delmängden av TCP- och nätverksalternativen nedan som du kan justera per nodpool.
Inställning | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 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 argumentet för kvarvarande uppgifter är större än somaxconn , trunkeras det tyst till den här gränsen. |
net.core.netdev_max_backlog |
1000 - 3240000 | 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 | 212992 | Den maximala buffertstorleken för mottagningssocket i byte. |
net.core.wmem_max |
212992 - 134217728 | 212992 | Maximal buffertstorlek för skicka socket i byte. |
net.core.optmem_max |
20480 - 4194304 | 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 | Det maximala antalet köade anslutningsbegäranden som fortfarande 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 | 32768 | Maximalt antal timewait socketar som hålls av systemet samtidigt. Om det här antalet överskrids förstörs tidsvänte-socketen omedelbart och varningen skrivs ut. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 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 | Hur ofta TCP skickar ut keepalive meddelanden när keepalive är aktiverat. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 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 | Hur ofta avsökningarna skickas ut. Multiplicerat tcp_keepalive_probes med det tar det tid att avsluta en anslutning som inte svarar när avsökningarna har startats. |
net.ipv4.tcp_tw_reuse |
0 eller 1 | 0 | Tillåt återanvändning TIME-WAIT av socketar för nya anslutningar när det är säkert från protokollsynpunkt. |
net.ipv4.ip_local_port_range |
Första: 1024 - 60999 och Sist: 32768 - 65535] | 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. Består av två tal: Det första talet är den första lokala porten som tillåts för TCP- och UDP-trafik på agentnoden, den andra är det sista lokala portnumret. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 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 | 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 | Hårt maximalt antal poster i ARP-cachen. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 131072 | 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. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 65536 | 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. |
Arbetsgränser
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.
Inställning | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
kernel.threads-max |
20 - 513785 | 55601 | Processer kan starta arbetstrådar. Det maximala antalet trådar som kan skapas anges med kernelinställningen kernel.threads-max . |
Virtuellt minne
Inställningarna nedan kan användas för att justera driften av undersystemet virtuellt minne (VM) i Linux-kerneln och writeout
för smutsiga data till disk.
Inställning | Tillåtna värden/intervall | Standardvärde | beskrivning |
---|---|---|---|
vm.max_map_count |
65530 - 262144 | 65530 | 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 , mprotect och madvise , och även vid inläsning av delade bibliotek. |
vm.vfs_cache_pressure |
1 - 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 | Den här kontrollen används för att definiera hur aggressiv kerneln ska växla 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 | 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 |
Transparenta hugepages är en Linux-kernelfunktion som är avsedd att förbättra prestandan genom att använda processorns maskinvara för minnesmappning effektivare. När den är aktiverad försöker kerneln allokera hugepages när det är möjligt och en Linux-process får 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 mmap vara en stor region men bara röra 1 byte av det, i så fall kan en 2 MB-sida allokeras i stället för en 4k-sida utan någon bra 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 , , , madvise never |
madvise |
Det här värdet styr om kerneln ska använda minneskomprimering aggressivt för att göra mer hugepages tillgängligt. |
Nästa steg
- Lär dig hur du konfigurerar ditt AKS-kluster.
- Lär dig hur du uppgraderar nodavbildningarna i klustret.
- Se Uppgradera ett AKS-kluster (Azure Kubernetes Service) för att lära dig hur du uppgraderar klustret till den senaste versionen av Kubernetes.
- Se listan med vanliga frågor och svar om AKS för att hitta svar på några vanliga AKS-frågor.
Azure Kubernetes Service