Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Personalizar a configuração de nó permite que você ajuste as configurações do sistema operacional (SO) ou os parâmetros 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 das configurações de SO e kubelet usadas com frequência. Para definir configurações além desse subconjunto, você pode usar um daemon definido para personalizar suas configurações necessárias sem perder o suporte do AKS para os nós.
Criar arquivos de configuração de nós personalizados para pools de nós do AKS
As alterações de configuração de sistema operacional e kubelet exigem que você crie um novo arquivo de configuração com os parâmetros e as configurações desejadas. Se um valor para um parâmetro não for especificado, o valor será definido como o padrão.
Observação
Os exemplos a seguir mostram as configurações comuns. Você pode modificar as configurações para atender aos requisitos de carga de trabalho. Para obter uma lista completa de parâmetros de configuração personalizada com suporte, consulte a seção parâmetros de configuração personalizada com suporte .
Configuração do Kubelet
Crie um arquivo linuxkubeletconfig.json com o seguinte conteúdo:
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Configuração do SO
Crie um arquivo linuxosconfig.json com o seguinte conteúdo:
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Criar um cluster do AKS usando arquivos de configuração personalizados
Observação
Tenha as seguintes informações em mente ao usar arquivos de configuração personalizados ao criar um novo cluster do AKS:
- Se você especificar uma configuração ao criar um cluster, a configuração se aplicará somente aos nós no pool de nós inicial. Todas as configurações não configuradas no arquivo JSON mantêm seus valores padrão.
-
CustomLinuxOsConfignão há suporte para o tipo de sistema operacional Windows.
Crie um novo cluster usando arquivos de configuração personalizados com o comando az aks create e especifique seus arquivos de configuração para os parâmetros --kubelet-config e --linux-os-config. O seguinte comando de exemplo 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
Adicionar um pool de nós usando os arquivos de configuração personalizados
Observação
Tenha as seguintes informações em mente ao usar arquivos de configuração personalizados ao adicionar um novo pool de nós a um cluster do AKS existente:
- Quando você adiciona um pool de nós do Linux a um cluster existente, você pode especificar a configuração do kubelet, a configuração do SO, ou ambos. Quando você adiciona um pool de nós do Windows a um cluster existente, você pode especificar a configuração do kubelet. Se você especificar uma configuração ao adicionar um pool de nós, a configuração se aplicará somente aos nós no novo pool de nós. Todas as configurações não configuradas no arquivo JSON mantêm seus valores padrão.
-
CustomKubeletConfigtem suporte para pools de nós de Linux e Windows.
Crie um novo pool de nós do Linux usando o comando az aks nodepool add e especificando os arquivos 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 do Linux com o arquivo personalizado ./linuxkubeletconfig.json :
az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json
Confirmar se as configurações foram aplicadas
Depois de aplicar a configuração de nó personalizado, você pode confirmar se as configurações foram aplicadas aos nós pela conexão ao host e verificar sysctl ou se as alterações de configuração foram feitas no sistema de arquivos.
Parâmetros de configuração personalizados com suporte
Configuração personalizada do kubelet do Linux
| Parâmetro | Os valores/intervalos permitidos | Padrão | Descrição |
|---|---|---|---|
cpuManagerPolicy |
nenhum, estático | none | A política estática permite que os contêineres em garantissem os pods com as CPU de inteiros solicitando acesso a CPUs exclusivas no nó. |
cpuCfsQuota |
verdadeiro, falso | true | Habilitar/desabilitar a imposição de cota de CFS da CPU para contêineres que especificam limites de CPU. |
cpuCfsQuotaPeriod |
Intervalo emmilissegundos(ms) | 100ms |
Define o valor do período de cota do CFS da CPU. |
imageGcHighThreshold |
0-100 | 85 | A porcentagem de uso do disco após a qual a coleta de lixo da imagem é sempre executada. Uso mínimo de disco que inicia a coleta de lixo. Para desabilitar a coleta de lixo de imagem, defina como 100. |
imageGcLowThreshold |
0-100, não é maior que imageGcHighThreshold |
80 | A porcentagem de uso do disco antes da qual a coleta de lixo da imagem nunca é executada. Uso mínimo do disco que pode disparar a coleta de lixo. |
topologyManagerPolicy |
nenhum, melhor esforço, restrito, nó único | none | Otimize o alinhamento do nó NUMA. Para obter mais informações, consulte Políticas de Gerenciamento de Topologia de Controle em um nó. |
allowedUnsafeSysctls |
kernel.shm*, kernel.msg*, kernel.sem, , fs.mqueue.*net.* |
Nenhum | Lista permitida de padrões de sysctl sysctls ou inseguros. |
containerLogMaxSizeMB |
Tamanho em megabytes (MB) | 50 | O tamanho máximo (por exemplo, 10 MB) de um arquivo de log de contêiner antes de ser rotacionado. |
containerLogMaxFiles |
≥ 2 | 5 | O número máximo de arquivos de log de contêiner que podem estar presentes para um contêiner. |
podMaxPids |
-1 para o limite de PID do kernel | -1 (∞) | O número máximo de IDs de processo que podem ser executados em um Pod. |
seccompDefault |
Unconfined, RuntimeDefault |
Unconfined |
Define o perfil de seccomp padrão para todas as cargas de trabalho.
RuntimeDefault usa o perfil de seccomp padrão do contêiner, restringindo determinadas chamadas do sistema para aprimorar a segurança. As chamadas restritas falham.
Unconfined não impõe restrições a chamadas de sistema (syscalls), permitindo todas as chamadas do sistema e reduzindo a segurança. Para obter mais informações, consulte o perfil de seccomp padrão do containerd. Esse parâmetro está em versão prévia.
Registre o sinalizador de recurso "KubeletDefaultSeccompProfilePreview" com o comando az feature register usando --namespace "Microsoft.ContainerService". |
Configuração personalizada do kubelet do Windows
| Parâmetro | Os valores/intervalos permitidos | Padrão | Descrição |
|---|---|---|---|
imageGcHighThreshold |
0-100 | 85 | A porcentagem de uso do disco após a qual a coleta de lixo da imagem é sempre executada. Utilização mínima de disco que aciona a coleta de lixo. Para desabilitar a coleta de lixo de imagem, defina como 100. |
imageGcLowThreshold |
0-100, não é maior que imageGcHighThreshold |
80 | A porcentagem de uso do disco antes da qual a coleta de lixo da imagem nunca é executada. Uso mínimo do disco que pode disparar a coleta de lixo. |
containerLogMaxSizeMB |
Tamanho em megabytes (MB) | 10 | O tamanho máximo (por exemplo, 10 MB) de um arquivo de log de contêiner antes de ser rotacionado. |
containerLogMaxFiles |
≥ 2 | 5 | O número máximo de arquivos de log de contêiner que podem estar presentes para um contêiner. |
Configurações de sistema operacional personalizadas do Linux
Importante
Para simplificar a pesquisa e a legibilidade, as configurações do sistema operacional são exibidas neste artigo pelo nome, mas devem ser adicionadas ao arquivo JSON de configuração ou à API do AKS usando a convenção de capitalização camelCase.
Por exemplo, se você modificar o vm.max_map_count setting, deverá reformatar para vmMaxMapCount no arquivo JSON de configuração.
Limites do identificador de arquivo do Linux
Ao atender a altas quantidades de tráfego, esse tráfego geralmente vem de um grande número de arquivos locais. É possível ajustar as seguintes configurações de kernel e limites internos para aumentar a capacidade de processamento, ao custo de uma parte da memória do sistema.
A tabela a seguir lista os limites dos identificadores de arquivo que você pode personalizar por pool de nós.
| Configuração | Os valores/intervalos permitidos | Padrão do Ubuntu 22.04 | Padrão do Ubuntu 24.04 | Padrão do Azure Linux 3.0 | Descrição |
|---|---|---|---|---|---|
fs.file-max |
8192 – 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | Número máximo de descritores de arquivo alocados pelo kernel do Linux. Esse valor é definido como o valor máximo possível (2^63-1) para evitar o esgotamento do descritor de arquivo e garantir um número ilimitado de identificadores de arquivo em nível de sistema para cargas de trabalho em contêineres. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | 1048576 | 1048576 | Número máximo de inspeções de arquivo permitidas pelo sistema. Cada inspeção tem aproximadamente 90 bytes em um kernel de 32 bits e aproximadamente 160 bytes em um kernel de 64 bits. |
fs.aio-max-nr |
65536 - 6553500 | 65536 | 65536 | 65536 | O AIO-NR mostra o número atual do sistema de solicitações de e/s assíncronas. AIO-Max-NR permite que você altere o valor máximo AIO-NR pode aumentar para. |
fs.nr_open |
8192 - 20000500 | 1048576 | 1048576 | 1073741816 | O número máximo de identificadores de arquivo que um processo pode alocar. |
Observação
O fs.file-max parâmetro é definido como 9223372036854775807 (o valor máximo para um inteiro de 64 bits assinado) no Ubuntu e no Azure Linux com base em padrões upstream. Esta configuração:
- Impede ataques de negação de serviço com base no esgotamento do descritor de arquivos em todo o sistema.
- Garante que as cargas de trabalho de contêiner nunca sejam afuniladas pelos limites de identificador de arquivo de todo o sistema.
-
Mantém a segurança por meio de limites por processo (
fs.nr_openeulimit) que ainda se aplicam a processos individuais. - Otimiza para plataformas de contêiner nas quais muitos contêineres podem ser executados simultaneamente, cada um potencialmente abrindo muitos arquivos e conexões de rede.
Ajuste de rede e soquete do Linux
Para nós de agentes, que devem lidar com um grande número de sessões simultâneas, você pode usar as seguintes opções de TCP e rede e ajustá-las por pool de nós:
| Configuração | Os valores/intervalos permitidos | Padrão do Ubuntu 22.04 | Padrão do Ubuntu 24.04 | Padrão do Azure Linux 3.0 | Descrição |
|---|---|---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 16384 | 16384 | 16384 | Número máximo de solicitações de conexão que podem ser enfileiradas para qualquer soquete de escuta específico. Um limite superior para o valor do parâmetro backlog passado para a função Listen (2). Se o argumento da pendência for maior que o somaxconn, ele será silenciosamente truncado para esse limite. |
net.core.netdev_max_backlog |
1000 - 3240000 | 1000 | 1000 | 1000 | Número máximo de pacotes, em fila no lado de entrada, quando a interface recebe pacotes mais rápidos do que o kernel pode processá-los. |
net.core.rmem_max |
212992 - 134217728 | 1048576 | 1048576 | 212992 | O tamanho do buffer do soquete recebido máximo em bytes |
net.core.wmem_max |
212992 - 134217728 | 212992 | 212992 | 212992 | O tamanho do buffer do soquete enviado máximo em bytes |
net.core.optmem_max |
20480 - 4194304 | 20480 | 131072 | 20480 | Tamanho máximo de buffer auxiliar (buffer de memória de opção) permitido por soquete. A memória de opção de soquete é usada em alguns casos para armazenar estruturas extras relacionadas ao uso do soquete. |
net.ipv4.tcp_max_syn_backlog |
128 - 3240000 | 16384 | 16384 | 16384 | O número máximo de solicitações de conexão enfileiradas que não receberam uma confirmação do cliente que está se conectando. Se esse número for excedido, o kernel começará a remover solicitações. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 262144 | 262144 | 131072 | Número máximo de timewait soquetes mantidos pelo sistema simultaneamente. Se esse número for excedido, o soquete de espera de tempo será destruído imediatamente e o aviso será impresso. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | 60 | 60 | O período que uma conexão órfã (não é mais referenciada por qualquer aplicativo) permanece no estado de FIN_WAIT_2 antes de ser anulada na extremidade local. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | 7200 | 7200 | Com que frequência o TCP envia keepalive mensagens quando keepalive está habilitado. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | 9 | 9 | Quantas keepalive investigações o TCP envia, até que decida que a conexão foi interrompida. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | 75 | 75 | Com que frequência as investigações são enviadas. Multiplicado por tcp_keepalive_probes ele torna-se o tempo para eliminar uma conexão que não está respondendo, após o início das investigações. |
net.ipv4.tcp_tw_reuse |
2 | 2 | 2 | Permita a reutilização TIME-WAIT de soquetes para novas conexões quando ele estiver seguro do ponto de vista do protocolo. |
|
net.ipv4.ip_local_port_range |
Primeiro: 1024 - 60999 e último: 32768 - 65535] | Primeiro: 32768 e último: 60999 | Primeiro: 32768 e último: 60999 | Primeiro: 32768 e último: 60999 | O intervalo de portas local que é usado pelo tráfego TCP e UDP para escolher a porta local. Composto de dois números: o primeiro número é a primeira porta local permitida para o tráfego TCP e UDP no nó do agente, o segundo é o último número da porta local. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 4096 | 4096 | 4096 | Número mínimo de entradas que podem estar no cache ARP. A coleta de lixo não será disparada se o número de entradas estiver abaixo dessa configuração. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | 8192 | 8192 | Número máximo flexível de entradas que podem estar no cache ARP. Essa configuração é, sem dúvida, a mais importante, pois a coleta de lixo ARP inicia cerca de 5 segundos depois de atingir esse limite flexível. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | 16384 | 16384 | O número máximo inflexível de entradas no cache ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 524288 | 524288 | 262144 |
nf_conntrack é um módulo que controla as entradas de conexão para NAT no Linux. O nf_conntrack módulo usa uma tabela de hash para registrar o registro de conexão estabelecido do protocolo TCP.
nf_conntrack_max é o número máximo de nós na tabela de hash, ou seja, o número máximo de conexões com suporte no nf_conntrack módulo ou o tamanho da tabela de controle de conexão. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 262144 | 262144 | 262144 |
nf_conntrack é um módulo que controla as entradas de conexão para NAT no Linux. O nf_conntrack módulo usa uma tabela de hash para registrar o registro de conexão estabelecido do protocolo TCP.
nf_conntrack_buckets é o tamanho da tabela de hash. |
Limites de trabalho do Linux
Como os limites do descritor de arquivo, o número de trabalhos ou threads que um processo pode criar são limitados por uma configuração de kernel e limites de usuário. O limite de usuários em AKS é ilimitado. A tabela a seguir lista a configuração do kernel que você pode personalizar por pool de nós:
| Configuração | Padrão do Ubuntu 22.04 | Padrão do Ubuntu 24.04 | Padrão do Azure Linux 3.0 | Descrição |
|---|---|---|---|---|
kernel.threads-max |
1030425 | 1030462 | 256596 | Os processos podem criar threads de trabalho. O número máximo de todos os threads que podem ser criados é definido com a configuração do kernel kernel.threads-max. |
Memória virtual do Linux
A tabela a seguir lista as configurações de kernel que você pode personalizar por pool de nós para ajustar a operação do subsistema de memória virtual (VM) do kernel do Linux e writeout dos dados sujos no disco:
| Configuração | Os valores/intervalos permitidos | Padrão do Ubuntu 22.04 | Padrão do Ubuntu 24.04 | Padrão do Azure Linux 3.0 | Descrição |
|---|---|---|---|---|---|
vm.max_map_count |
65530 | 1048576 | 1048576 | Esse arquivo contém o número máximo de áreas de mapa de memória que um processo pode ter. As áreas de mapa de memória são usadas como um efeito colateral de chamar malloc , diretamente por mmap, mprotect e madvise também ao carregar bibliotecas compartilhadas. |
|
vm.vfs_cache_pressure |
1 a 100 | 100 | 100 | 100 | Esse valor de porcentagem controla a tendência do kernel de recuperar a memória, que é usada para armazenar em cache os objetos de diretório e inode. |
vm.swappiness |
0–100 | 60 | 60 | 60 | Esse controle é usado para definir a agressividade com que o kernel troca páginas de memória. Valores mais altos aumentam a agressividade, os valores mais baixos diminuem a quantidade de troca. Um valor de 0 instrui o kernel a não iniciar a permuta até que a quantidade de páginas livres e com backup em arquivo seja menor que a marca d' água alta em uma zona. |
swapFileSizeMB |
1 MB - Tamanho temporário de disco (/dev/sdb) | Nenhum | Nenhum | Nenhum | SwapFileSizeMB especifica o tamanho em MB de um arquivo de permuta que será criado direto dos nós de agente do pool de nós. |
transparentHugePageEnabled |
always
madvise
never
|
always |
always |
madvise |
Transparent Hugepages é um recurso de kernel do Linux destinado a melhorar o desempenho, fazendo uso mais eficiente do hardware de mapeamento de memória do processador. Quando habilitado, o kernel tenta alocar hugepages sempre que possível e os processos do Linux receberão as páginas de 2 MB se a região mmap for de 2 MB alinhados naturalmente. Quando hugepages estão habilitados para todo o sistema, os aplicativos podem acabar alocando mais recursos de memória. Um aplicativo pode mmap ser uma região grande, mas tocar em apenas 1 byte dela; nesse caso, uma página de 2 MB poderá ser alocada em vez de uma página de 4 K sem um bom motivo. Esse cenário é o motivo pelo qual é possível desabilitar hugepages todo o sistema ou apenas tê-los dentro de MADV_HUGEPAGE madvise regiões. |
transparentHugePageDefrag |
always, defer, defer+madvise, , madvisenever |
madvise |
madvise |
madvise |
Esse valor controla se o kernel deve fazer uso agressivo da compactação de memória para tornar mais hugepages disponível. |
Conteúdo relacionado
- Saiba como configurar o cluster AKs.
- Saiba como atualizar as imagens de nó no cluster.
- Confira Atualizar um cluster do AKS (Serviço de Kubernetes do Azure) para saber como atualizar o cluster para a versão mais recente do Kubernetes.
- Confira a lista de Perguntas frequentes sobre o AKS para encontrar respostas a algumas perguntas comuns sobre o AKS.