Anpassa nodkonfigurationen för AKS-nodpooler (Azure Kubernetes Service)

Genom att anpassa nodkonfigurationen kan du justera operativsystemsinställningar (OS) eller kubelet-parametrar 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 använder du en daemonuppsättning för att anpassa nödvändiga konfigurationer utan att förlora AKS-stöd för noderna.

Förutsättningar

Eftersom tjänsten lägger till stöd för nya inställningar och kubelet-parametrar kan det kräva registrering av förhandsgranskningsfunktionsflagga. Om en förhandsgranskningsflagga krävs anropar referensen för konfigurationsparametrar för anpassade noder den.

Krav för förhandsversion för kubeReserved och hardEvictionThreshold kubelet-inställningar

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Installera tillägget aks-preview Azure CLI

  1. Kör följande kommando för att installera aks-preview-tillägget:

    az extension add --name aks-preview
    
  2. Kör följande kommando för att uppdatera till den senaste versionen av tillägget:

    az extension update --name aks-preview
    

Registrera funktionsflaggan CustomNodeConfigPreview i din Azure-prenumeration innan du använder förhandsgranskningskubeReserved- och hardEvictionThreshold kubelet-inställningarna.

Registrera funktionsflaggan CustomNodeConfigPreview

  1. Registrera funktionsflaggan CustomNodeConfigPreview med kommandot az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    

    Det tar några minuter för statusen att visa Registrerad.

  2. Verifiera registreringsstatusen az feature show med hjälp av kommandot .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    
  3. När statusen visas Registrerad uppdaterar du registreringen av Microsoft. ContainerService-resursprovider med hjälp az provider register av kommandot .

    az provider register --namespace "Microsoft.ContainerService"
    

Skapa anpassade nodkonfigurationsfiler för AKS-nodpooler

Om du vill ändra konfigurationen av operativsystemet och kubelet skapar du en ny konfigurationsfil med de parametrar och inställningar som du vill använda. Om du inte anger något värde för en parameter används standardvärdet.

Kommentar

I följande exempel visas vanliga konfigurationsinställningar. Ändra inställningarna för att uppfylla dina arbetsbelastningskrav. En fullständig lista över anpassade konfigurationsparametrar som stöds finns i Konfigurationsparametrar för anpassade noder för AKS.

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
}

Om du vill använda kubelet-inställningarna för förhandsversionen av Nodanpassning i Linux-nodpooler lägger du till kubeReserved och hardEvictionThreshold till kubelet-konfigurationsfilen. I följande exempel reserveras CPU och minne för Kubernetes-systemdaemoner och konfigurerar kubelet-tröskelvärden för hård borttagning:

{
  "cpuManagerPolicy": "static",
  "kubeReserved": {
    "cpuMillicores": 200,
    "memoryMB": 1024
  },
  "hardEvictionThreshold": {
    "memoryAvailable": "20%",
    "nodeFsAvailable": "10%",
    "nodeFsInodesFree": "5%"
  }
}

Använd kubeReserved och hardEvictionThreshold endast på Linux-nodpooler. Båda inställningarna kräver funktionsflaggan CustomNodeConfigPreview .

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 AKS-kluster med anpassade konfigurationsfiler

Kommentar

Tänk på följande när du använder anpassade konfigurationsfiler när du skapar ett nytt AKS-kluster:

  • Om du anger en konfiguration när du skapar ett kluster gäller konfigurationen endast för noderna i den första nodpoolen. Klustret behåller standardvärden för alla inställningar som inte har konfigurerats i JSON-filen.
  • CustomLinuxOsConfig stöds inte för Windows-operativsystemtypen.
  • Förhandsgransknings kubeReserved - och hardEvictionThreshold kubelet-inställningarna stöds endast för Linux-nodpooler och kräver funktionsflaggan CustomNodeConfigPreview . Slutför registreringsstegen i Förhandsversionskrav för kubeReserved och hardEvictionThreshold kubelet-inställningar innan du skapar klustret eller nodpoolen.

Skapa ett nytt kluster med anpassade konfigurationsfiler genom att köra az aks create kommandot och ange dina konfigurationsfiler för parametrarna --kubelet-config och --linux-os-config . Följande exempelkommando skapar ett nytt kluster med anpassade ./linuxkubeletconfig.json filer och ./linuxosconfig.json filer:

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

Lägga till en nodpool med hjälp av anpassade konfigurationsfiler

Kommentar

Tänk på följande när du använder anpassade konfigurationsfiler för att lägga till en ny nodpool i ett befintligt AKS-kluster:

  • 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 gäller konfigurationen endast för noderna i den nya nodpoolen. Nodpoolen behåller standardvärden för alla inställningar som inte har konfigurerats i JSON-filen.
  • CustomKubeletConfig stöds för Linux- och Windows-nodpooler.
  • Förhandsgransknings kubeReserved - och hardEvictionThreshold kubelet-inställningarna stöds endast för Linux-nodpooler och kräver funktionsflaggan CustomNodeConfigPreview . Slutför registreringsstegen i förhandsversionskrav för kubeReserved och hardEvictionThreshold kubelet-inställningar innan du skapar klustret eller nodpoolen.

Skapa en ny Linux-nodpool med hjälp az aks nodepool add av kommandot och ange dina konfigurationsfiler för parametrarna --kubelet-config och --linux-os-config . Följande exempelkommando skapar en ny Linux-nodpool med den anpassade ./linuxkubeletconfig.json filen:

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

Bekräfta att inställningarna har tillämpats

När du har tillämpat anpassad nodkonfiguration kan du bekräfta att inställningarna som tillämpats på noderna är korrekt genom att ansluta till värddatorn och verifiera om konfigurationsändringar har gjorts i filsystemet.

Granska anpassade konfigurationsparametrar som stöds

Den fullständiga listan över kubelet- och Linux OS-konfigurationsparametrar som stöds, tillåtna värden, standardvärden och beskrivningar finns i Konfigurationsparametrar för anpassade noder för AKS.

Överväganden för anpassade nodkonfigurationer

Tänk på följande när du anpassar nodkonfigurationen:

  • Nodbilduppgraderingar återanvänder anpassade nodkonfigurationer.
  • Utskalningsåtgärder bevarar anpassade nodkonfigurationer.
  • AKS utför inte validering före flygning för varje konfigurationsparameter eller värde för anpassad nod. Kontrollera att de anpassade nodkonfigurationsparametrar och värden som du anger stöds och är giltiga för att undvika potentiella problem med dina klusternoder.
  • Förhandsversionen kubeReserved och hardEvictionThreshold inställningarna är endast tillgängliga i Linux-nodpooler.
  • Om du konfigurerar kubeReservedmåste värdena vara positiva och får inte överskrida den tillgängliga processor- eller minneskapaciteten i målnodpoolen.
  • Om du konfigurerar hardEvictionThresholdanvänder du endast de enheter som stöds: Ki, Mi, Gi, eller % för memoryAvailable och nodeFsAvailable, och ett rånummer eller % för nodeFsInodesFree.
  • Standardvärden för anpassade nodkonfigurationsparametrar ändras ofta med nya operativsystemversioner. När du använder anpassade nodkonfigurationer granskar du standardvärdena för de parametrar som du konfigurerar för att säkerställa att dina anpassade inställningar är lämpliga för operativsystemversionen av dina klusternoder.
  • Begränsa antalet personer som har behörighet att ändra konfigurationen för anpassade noder för att förhindra oavsiktliga konsekvenser för klusterstabilitet och prestanda. Överväg att använda Microsoft Entra ID-auktorisering för Kubernetes API för att begränsa åtkomsten till konfigurationsinställningar för kluster.
  • Avgränsa nodpooler med anpassade konfigurationer från dem utan anpassade konfigurationer för att förhindra oavsiktliga konsekvenser för arbetsbelastningar som kan vara känsliga för vissa konfigurationsändringar. Om du till exempel har en kritisk arbetsbelastning som kräver specifika kubelet-inställningar bör du överväga att isolera arbetsbelastningen till en dedikerad nodpool med nödvändig anpassad kubelet-konfiguration.