Personalizzare la configurazione dei nodi per i pool di nodi del servizio Azure Kubernetes

Personalizzando la configurazione del nodo, è possibile modificare le impostazioni del sistema operativo o i parametri kubelet in base alle esigenze dei carichi di lavoro. Quando si crea un cluster nel servizio Azure Kubernetes o si aggiunge un pool di nodi al cluster, è possibile personalizzare un subset di impostazioni del sistema operativo e kubelet di uso comune. Per configurare impostazioni che vanno oltre questo sottoinsieme, usa un DaemonSet per personalizzare le configurazioni richieste senza perdere il supporto di AKS per i tuoi nodi.

Prerequisiti

Poiché il servizio introduce il supporto a nuove impostazioni e parametri kubelet, potrebbe essere necessaria la registrazione del flag della funzionalità di anteprima. Se è necessario un flag di anteprima, il riferimento dei parametri di configurazione del nodo personalizzato lo indica.

Requisiti in anteprima per le impostazioni di kubelet kubeReserved e hardEvictionThreshold

Importante

Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Installare l'estensione aks-preview interfaccia della riga di comando di Azure

  1. Per installare l'estensione aks-preview, eseguire il comando seguente:

    az extension add --name aks-preview
    
  2. Eseguire il comando seguente per eseguire l'aggiornamento alla versione più recente dell'estensione:

    az extension update --name aks-preview
    

Registrare il flag di funzionalità CustomNodeConfigPreview nella sottoscrizione di Azure prima di utilizzare le impostazioni di anteprima del kubelet kubeReserved e hardEvictionThreshold.

Registrare il flag di funzionalità CustomNodeConfigPreview

  1. Registra il feature flag CustomNodeConfigPreview usando il comando az feature register.

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

    Sono necessari alcuni minuti per visualizzare lo stato Registered.

  2. Verificare lo stato della registrazione usando il az feature show comando .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    
  3. Quando lo stato mostra Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register.

    az provider register --namespace "Microsoft.ContainerService"
    

Crea file di configurazione dei nodi personalizzati per i pool di nodi AKS

Per modificare la configurazione del sistema operativo e kubelet, creare un nuovo file di configurazione con i parametri e le impostazioni desiderati. Se non si specifica un valore per un parametro, viene usato il valore predefinito.

Note

Gli esempi seguenti illustrano le impostazioni di configurazione comuni. Modificare le impostazioni per soddisfare i requisiti del carico di lavoro. Per l'elenco completo dei parametri di configurazione personalizzati supportati, vedere Parametri di configurazione dei nodi personalizzati per il servizio Azure Kubernetes.

Configurazione del kubelet

Creare un file linuxkubeletconfig.json con i contenuti seguenti:

{
 "cpuManagerPolicy": "static",
 "cpuCfsQuota": true,
 "cpuCfsQuotaPeriod": "200ms",
 "imageGcHighThreshold": 90,
 "imageGcLowThreshold": 70,
 "topologyManagerPolicy": "best-effort",
 "allowedUnsafeSysctls": [
  "kernel.msg*",
  "net.*"
],
 "failSwapOn": false
}

Per usare le impostazioni di anteprima della personalizzazione del nodo kubelet nei pool di nodi Linux, aggiungere kubeReserved e hardEvictionThreshold al file di configurazione kubelet. L'esempio seguente riserva CPU e memoria per i demoni di sistema di Kubernetes e configura per kubelet le soglie rigide di eviction:

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

Usare kubeReserved e hardEvictionThreshold solo nei pool di nodi Linux. Entrambe le impostazioni richiedono il feature flag CustomNodeConfigPreview.

Configurazione sistema operativo

Creare un file linuxosconfig.json con i contenuti seguenti:

{
 "transparentHugePageEnabled": "madvise",
 "transparentHugePageDefrag": "defer+madvise",
 "swapFileSizeMB": 1500,
 "sysctls": {
  "netCoreSomaxconn": 163849,
  "netIpv4TcpTwReuse": true,
  "netIpv4IpLocalPortRange": "32000 60000"
 }
}

Creare un cluster di Azure Kubernetes Service usando file di configurazione personalizzati

Note

Tenere presenti le informazioni seguenti quando si usano file di configurazione personalizzati durante la creazione di un nuovo cluster del servizio Azure Kubernetes:

  • Se si specifica una configurazione durante la creazione di un cluster, la configurazione si applica solo ai nodi nel pool di nodi iniziale. Il cluster mantiene i valori predefiniti per tutte le impostazioni non configurate nel file JSON.
  • CustomLinuxOsConfig non è supportato per il tipo di sistema operativo Windows.
  • Le impostazioni di anteprima kubeReserved e hardEvictionThreshold kubelet sono supportate solo per i pool di nodi Linux e richiedono il flag di CustomNodeConfigPreview funzionalità. Completa i passaggi di registrazione in Requisiti di anteprima per kubeReserved e hardEvictionThreshold impostazioni di kubelet prima di creare il cluster o il pool di nodi.

Creare un nuovo cluster usando file di configurazione personalizzati eseguendo il az aks create comando e specificando i file di configurazione per i --kubelet-config parametri e --linux-os-config . Il comando di esempio seguente crea un nuovo cluster con i file ./linuxkubeletconfig.jsone ./linuxosconfig.json personalizzati:

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

Aggiungere un pool di nodi usando file di configurazione personalizzati

Note

Tenere presenti le informazioni seguenti quando si usano file di configurazione personalizzati per aggiungere un nuovo pool di nodi a un cluster del servizio Azure Kubernetes esistente:

  • Quando si aggiunge un pool di nodi Linux a un cluster esistente, è possibile specificare la configurazione kubelet, la configurazione del sistema operativo o entrambi. Quando si aggiunge un pool di nodi Windows a un cluster esistente, è possibile specificare solo la configurazione kubelet. Se si specifica una configurazione quando si aggiunge un pool di nodi, la configurazione si applica solo ai nodi nel nuovo pool di nodi. Il pool di nodi mantiene i valori predefiniti per tutte le impostazioni non configurate nel file JSON.
  • CustomKubeletConfig è supportato per i pool di nodi Linux e Windows.
  • Le impostazioni di anteprima kubeReserved e hardEvictionThreshold kubelet sono supportate solo per i pool di nodi Linux e richiedono il flag di CustomNodeConfigPreview funzionalità. Completa i passaggi di registrazione in Requisiti di anteprima per kubeReserved e hardEvictionThreshold delle impostazioni di kubelet prima di creare il cluster o il pool di nodi.

Creare un nuovo pool di nodi Linux usando il az aks nodepool add comando e specificando i file di configurazione per i --kubelet-config parametri e --linux-os-config . Il comando di esempio seguente crea un nuovo pool di nodi Linux con il file personalizzato ./linuxkubeletconfig.json :

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

Confermare l'applicazione delle impostazioni

Dopo aver applicato la configurazione personalizzata dei nodi, è possibile verificare che le impostazioni siano state applicate ai nodi connettendosi all'host e verificando sysctl o modificando la configurazione nel file system.

Esaminare i parametri di configurazione personalizzati supportati

Per l'elenco completo dei parametri di configurazione del sistema operativo Kubelet e Linux supportati, dei valori consentiti, delle impostazioni predefinite e delle descrizioni, vedere Parametri di configurazione dei nodi personalizzati per il servizio Azure Kubernetes.

Considerazioni sulle configurazioni dei nodi personalizzate

Quando si personalizza la configurazione del nodo, tenere presenti le considerazioni seguenti:

  • Gli aggiornamenti delle immagini dei nodi riapplicano le configurazioni personalizzate dei nodi.
  • Le operazioni di scalabilità orizzontale mantengono le configurazioni personalizzate dei nodi.
  • AKS non esegue la convalida preliminare per ogni parametro o valore della configurazione personalizzata del nodo. Assicurarsi che i parametri e i valori di configurazione del nodo personalizzati specificati siano supportati e validi per evitare potenziali problemi con i nodi del cluster.
  • Le impostazioni di anteprima kubeReserved e hardEvictionThreshold sono disponibili solo nei pool di nodi Linux.
  • Se si configura kubeReserved, i valori devono essere positivi e non possono superare la capacità di CPU o memoria disponibile nel pool di nodi di destinazione.
  • Se si configura hardEvictionThreshold, usare solo le unità supportate: Ki, Mi, Gio % per memoryAvailable e nodeFsAvailablee e un numero non elaborato o % per nodeFsInodesFree.
  • I valori predefiniti per i parametri di configurazione dei nodi personalizzati spesso cambiano con le nuove versioni del sistema operativo. Quando si applicano configurazioni di nodi personalizzate, esaminare i valori predefiniti per i parametri che si sta configurando per assicurarsi che le impostazioni personalizzate siano appropriate per la versione del sistema operativo dei nodi del cluster.
  • Limitare il numero di persone che dispongono delle autorizzazioni per modificare la configurazione del nodo personalizzata per evitare conseguenze impreviste sulla stabilità e sulle prestazioni del cluster. Prendere in considerazione l'uso dell'autorizzazione Microsoft Entra ID per l'API Kubernetes al fine di limitare l'accesso alle impostazioni di configurazione del cluster.
  • Separare i pool di nodi con configurazioni personalizzate da quelle senza configurazioni personalizzate per evitare conseguenze impreviste sui carichi di lavoro che potrebbero essere sensibili a determinate modifiche alla configurazione. Ad esempio, se si dispone di un carico di lavoro critico che richiede impostazioni kubelet specifiche, prendere in considerazione l'isolamento del carico di lavoro in un pool di nodi dedicato con la configurazione kubelet personalizzata necessaria.