Personalizar a configuração dos conjuntos de nós do Serviço Azure Kubernetes (AKS)

Ao personalizar a configuração do seu nó, pode ajustar as definições do sistema operativo (SO) ou os parâmetros do kubelet para corresponder às necessidades das suas cargas de trabalho. Ao criar um cluster AKS ou adicionar um pool de nós ao cluster, você pode personalizar um subconjunto de configurações de SO e kubelet comumente usadas. Para configurar definições para além deste subconjunto, usa um conjunto de daemons para personalizar as configurações necessárias sem perder o suporte AKS para os teus nós.

Pré-requisitos

À medida que o serviço passa a suportar novas definições e parâmetros do kubelet, poderá ser necessário registar o sinalizador de funcionalidade de pré-visualização. Se for necessária uma bandeira de pré-visualização, a referência de parâmetros de configuração personalizada do nó chama-a.

kubeReserved, hardEvictionThreshold, softEvictionThreshold, softEvictionGracePeriod e evictionMaxPodGracePeriodInSeconds definições do kubelet estão em pré-visualização e requerem o sinalizador de funcionalidade CustomNodeConfigPreview. Estas definições permitem-lhe personalizar reservas de recursos e limiares de expulsão, que também são configurados pelo AKS Node Hardening. Para passos de registo, valores predefinidos e exemplos, veja Hardening de Nós (pré-visualização) no AKS.

Criar ficheiros personalizados de configuração de nós para pools de nós AKS

Para alterar a configuração do sistema operativo e do kubelet, cria um novo ficheiro de configuração com os parâmetros e definições que pretendes. Se não especificar um valor para um parâmetro, é usado o valor padrão.

Nota

Os exemplos seguintes mostram definições de configuração comuns. Modifica as definições para satisfazer os requisitos da tua carga de trabalho. Para obter a lista completa dos parâmetros de configuração de nó personalizados suportados, consulte Parâmetros de configuração de nó personalizados para AKS.

Configuração do Kubelet

Crie um linuxkubeletconfig.json arquivo com o seguinte conteúdo:

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

Para personalizar os recursos kube-reserved e os limiares de evicção em pools de nós Linux, consulte Personalizar definições de Endurecimento de Nós.

Configuração do SO

Crie um linuxosconfig.json arquivo com o seguinte conteúdo:

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

Crie um cluster AKS usando ficheiros de configuração personalizados

Nota

Tenha em mente as seguintes informações ao usar ficheiros de configuração personalizados ao criar um novo cluster AKS:

  • Se especificar uma configuração ao criar um cluster, a configuração aplica-se apenas aos nós do pool inicial de nós. O cluster mantém valores predefinidos para quaisquer definições não configuradas no ficheiro JSON.
  • CustomLinuxOsConfig não é suportado para o tipo de sistema operativo Windows.
  • As definições de pré-visualização kubeReserved e limiar de expulsão do kubelet são suportadas apenas para pools de nós Linux e requerem o sinalizador de funcionalidade CustomNodeConfigPreview. Para os passos de registo, consulte Node Hardening (pré-visualização) no AKS.

Crie um novo cluster utilizando ficheiros de configuração personalizados, executando o comando az aks create e especificando os ficheiros de configuração para os parâmetros --kubelet-config e --linux-os-config. O comando de exemplo a seguir cria um novo cluster com os arquivos personalizados ./linuxkubeletconfig.json e ./linuxosconfig.json.

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

Adicione um pool de nós usando ficheiros de configuração personalizados

Nota

Tenha em mente as seguintes informações ao usar ficheiros de configuração personalizados para adicionar um novo pool de nós a um cluster AKS existente:

  • Ao adicionar um pool de nós Linux a um cluster existente, você pode especificar a configuração do kubelet, a configuração do sistema operacional ou ambas. Ao adicionar um pool de nós do Windows a um cluster existente, você só pode especificar a configuração do kubelet. Se especificar uma configuração ao adicionar um pool de nós, a configuração aplica-se apenas aos nós do novo pool de nós. O conjunto de nós mantém valores predefinidos para quaisquer definições não configuradas no ficheiro JSON.
  • CustomKubeletConfig é suportado para pools de nós Linux e Windows.
  • As definições de pré-visualização kubeReserved e limiar de expulsão do kubelet são suportadas apenas para pools de nós Linux e requerem o sinalizador de funcionalidade CustomNodeConfigPreview. Para os passos de registo, consulte Node Hardening (pré-visualização) no AKS.

Crie um novo pool de nós Linux utilizando o comando az aks nodepool add e especificando os ficheiros de configuração para os parâmetros --kubelet-config e --linux-os-config. O seguinte comando de exemplo cria um novo pool de nós Linux com o ficheiro personalizado ./linuxkubeletconfig.json :

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

Confirme que as definições foram aplicadas

Depois de aplicares uma configuração personalizada de nós, podes confirmar que as definições foram aplicadas aos nós ligando-te ao host e verificando sysctl ou fazendo alterações de configuração no sistema de ficheiros.

Revisão dos parâmetros de configuração personalizados suportados

Para obter a lista completa dos parâmetros de configuração suportados do kubelet e do sistema operativo Linux, valores permitidos, predefinições e descrições, consulte Parâmetros de configuração personalizados de nós para o AKS.

Considerações sobre configurações personalizadas de nós

Tenha em mente as seguintes considerações ao personalizar a configuração do seu nó:

  • As atualizações das imagens dos nós reaplicam as configurações personalizadas dos nós.
  • As operações de expansão horizontal preservam as configurações personalizadas dos nós.
  • O AKS não realiza a validação prévia de todos os parâmetros ou valores de configuração personalizados do nó. Certifique-se de que os parâmetros e valores de configuração personalizados dos nós que especifica são suportados e válidos para evitar potenciais problemas com os seus nós do cluster.
  • As definições de pré-visualização kubeReserved e threshold de eviction do kubelet estão disponíveis apenas em pools de nós Linux. Se os configurares, usa os intervalos, unidades e regras de emparelhamento suportados na referência de parâmetros de configuração personalizados dos nós.
  • Os valores predefinidos para parâmetros de configuração personalizados de nós frequentemente mudam com novas versões do sistema operativo. Ao aplicar configurações personalizadas de nós, reveja os valores predefinidos dos parâmetros que está a configurar para garantir que as suas definições personalizadas são adequadas para a versão do sistema operativo dos seus nós do cluster.
  • Limite o número de pessoas que têm permissões para modificar a configuração personalizada do nó para evitar consequências indesejadas na estabilidade e desempenho do cluster. Considere usar a autorização Microsoft Entra ID para a API Kubernetes para restringir o acesso às definições de configuração do cluster.
  • Separe os grupos de nós com configurações personalizadas dos que não têm configurações personalizadas para evitar efeitos indesejados nas cargas de trabalho que possam ser sensíveis a determinadas alterações de configuração. Por exemplo, se tiver uma carga de trabalho crítica que requer definições específicas de kubelet, considere isolar essa carga de trabalho para um pool de nós dedicado com a necessária configuração personalizada de kubelet.