Se a configuração padrão do kubelet não atender às suas necessidades, personalize os parâmetros do kubelet no nível do pool de nós para ajustar o comportamento dos nós. Por exemplo, ajuste as reservas de recursos para gerenciar o uso, defina limiares personalizados de evicção por pressão no nó para mitigar escassez de recursos ou altere a política do gerenciador de topologia para melhorar o desempenho do sistema.
Limitações
Apenas clusters ACK com Kubernetes 1.20 ou posterior suportam parâmetros personalizados do kubelet. Para atualizar um cluster, consulte Atualizar manualmente um cluster.
Somente clusters ACK Lingjun com Kubernetes 1.22 ou posterior aceitam parâmetros personalizados do kubelet. Para atualizar um cluster, consulte Atualizar um cluster.
Caso a versão do seu cluster não atenda a esses requisitos, podem ocorrer comportamentos inesperados.
Observações de uso
Os parâmetros personalizados do kubelet são aplicados aos nós em lotes. As alterações entram em vigor imediatamente nos nós existentes do pool e são aplicadas automaticamente aos novos nós. A aplicação da configuração reinicia o processo do kubelet, o que pode afetar nós e cargas de trabalho em execução. Recomendamos realizar essa operação fora do horário de pico.
Se
evictionHard,kubeReservedousystemReservednão estiverem configurados, o sistema usará valores padrão para reserva de recursos. Para mais detalhes sobre o cálculo dos valores padrão, consulte Política de reserva de recursos do nó.Alterações na configuração de reserva de recursos podem reduzir os recursos alocáveis de um nó. Em nós com alto uso de recursos, isso pode acionar a evicção do nó.
Recomendamos fortemente não usar a linha de comando para definir parâmetros do kubelet sem suporte no console. O uso da linha de comando apresenta riscos significativos à estabilidade. Você é responsável pela correção e compatibilidade do conteúdo do arquivo de dados do usuário. Parâmetros incorretos ou obsoletos podem tornar os nós indisponíveis.
-
Ao iniciar, o kubelet mescla configurações de diferentes fontes com base em sua prioridade. Se o mesmo item de configuração for definido de várias formas, a definição com maior prioridade substituirá a de menor prioridade.
Personalizar parâmetros do kubelet no console
A aplicação de parâmetros personalizados do kubelet reinicia o processo do kubelet, o que pode afetar seus serviços. Recomendamos executar esta operação fora do horário de pico.
Na página ACK Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Node Pools, localize o pool de nós desejado e escolha
> Kubelet Configuration na coluna Actions.-
Leia as observações na página. Clique em Custom Parameters, selecione os parâmetros a configurar, especifique os nós a atualizar e defina a política de atualização em lote. Em seguida, conclua a operação conforme solicitado.
A política de atualização em lote é descrita da seguinte forma:
Maximum Parallel Nodes per Batch: Quantidade de nós a serem atualizados simultaneamente em cada lote. Monitore e gerencie o processo de atualização na lista de eventos.
Interval Between Batches: Tempo de espera entre lotes consecutivos de atualização.
Pause a atualização para verificar os nós atualizados. Quando pausada, quaisquer atualizações de nó em andamento serão concluídas, mas novas atualizações não iniciarão até que você retome a tarefa.
Conclua a tarefa de configuração personalizada o mais rápido possível. Uma tarefa pausada é cancelada automaticamente após sete dias, e os eventos e logs relacionados são limpos.
Além do console, você também pode chamar a operação da API ModifyNodePoolNodeConfig para personalizar parâmetros do kubelet. A seção a seguir descreve os parâmetros personalizáveis do kubelet suportados pelo ACK.
Parâmetros personalizáveis do kubelet
|
Parâmetro |
Descrição |
Padrão |
Valores |
|
allowedUnsafeSysctls |
Especifique os sysctls inseguros permitidos ou curingas de sysctl (padrões terminados com Importante
Antes de usar este parâmetro, avalie cuidadosamente os riscos e garanta a disponibilidade. |
N/A |
Suporta configurações de sysctl com os seguintes prefixos:
|
|
containerLogMaxFiles |
Número máximo de arquivos de log para um contêiner. O valor deve ser 2 ou superior. O runtime do contêiner deve ser containerd. |
10 |
[2, 10] |
|
containerLogMaxSize |
Tamanho máximo de um arquivo de log de contêiner antes da rotação. O runtime do contêiner deve ser containerd. |
100Mi |
N/A |
|
cpuCFSQuota |
Ativa a imposição de cota CFS de CPU para contêineres que possuem limites de CPU. |
true |
Valores válidos:
|
|
cpuCFSQuotaPeriod |
Define o valor do período de cota CFS da CPU. O feature gate CustomCPUCFSQuotaPeriod deve estar ativado. |
100ms |
Um valor de 1 milissegundo a 1 segundo, inclusive. |
|
cpuManagerPolicy |
Política do gerenciador de CPU. |
none |
Valores válidos:
|
|
eventBurst |
Número máximo de registros de eventos em um burst. |
10 |
O valor deve ser um número inteiro de 1 a 100 e maior ou igual ao valor de |
|
eventRecordQPS |
Quantidade de eventos que podem ser gerados por segundo. |
5 |
[1, 50] |
|
evictionHard |
Conjunto de limiares rígidos de evicção que acionam a evicção de pods. |
imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5% |
Nenhum |
|
evictionSoft |
Conjunto de limiares flexíveis de evicção. |
Nenhum |
Nenhum |
|
evictionSoftGracePeriod |
Conjunto de períodos de carência para evicção. Nota
|
Nenhum |
Nenhum |
|
featureGates |
Conjunto de feature gates para recursos experimentais. Cada gate é representado como No formulário de configuração, selecione uma chave (como Importante
|
N/A |
N/A |
|
imageGCHighThresholdPercent |
Percentual de uso de disco que aciona a coleta de lixo de imagens. A coleta de lixo de imagens é executada continuamente quando o uso do disco excede esse limiar. Este valor deve ser maior que o valor de imageGCLowThresholdPercent. |
85 |
[60, 95] |
|
imageGCLowThresholdPercent |
Percentual de uso de disco abaixo do qual a coleta de lixo de imagens não é executada. Este valor deve ser menor que o valor de imageGCHighThresholdPercent. |
80 |
[30, 90] |
|
kubeAPIBurst |
Número máximo de requisições em burst enviadas ao servidor de API por segundo. |
10 |
[1, 100], e deve ser maior ou igual a |
|
kubeAPIQPS |
Número de consultas por segundo (QPS) para o servidor de API. |
5 |
[1, 50] |
|
kubeReserved |
Configuração de recursos reservada para daemons do sistema Kubernetes. |
O valor é calculado automaticamente por padrão. Para mais informações, consulte Política de reserva de recursos do nó. |
N/A |
|
maxPods |
Número máximo de pods que podem ser executados em um nó. Importante
Modificar o valor de |
N/A. O valor depende de configurações de recursos físicos, como especificações da máquina e planejamento de rede de contêineres. |
N/A |
|
memoryManagerPolicy |
Política para o gerenciador de memória. |
Nenhum |
Valores válidos:
|
|
podPidsLimit |
Número máximo de IDs de processo (PIDs) que podem ser usados em cada pod.
|
16.384 |
Nenhum |
|
readOnlyPort |
Porta somente leitura para o kubelet que não requer autenticação. |
|
0 Para informações sobre os riscos de abrir a porta somente leitura (10.255) para monitoramento de contêineres do kubelet, consulte [Alteração de Produto] Migrar a porta de monitoramento de clusters ACK de versões anteriores para uma porta autenticada. |
|
registryBurst |
Número máximo de pulls de imagem em burst. |
10 |
O valor deve estar no intervalo [1, 100] e ser maior ou igual ao valor de |
|
registryPullQPS |
QPS máximo para o registro de imagens. |
5 |
[1, 50] |
|
reservedMemory |
Lista de reservas de memória para nós NUMA. |
Nenhum |
Nenhum |
|
serializeImagePulls |
Especifica se as imagens devem ser baixadas serialmente. |
False |
Valores válidos:
|
|
systemReserved |
Configuração de recursos reservada para daemons do sistema. |
O valor é calculado automaticamente por padrão. Para mais informações, consulte Política de reserva de recursos do nó. |
N/A |
|
topologyManagerPolicy |
Política do gerenciador de topologia. Com uma arquitetura NUMA, alocar dados no mesmo nó NUMA reduz o acesso entre nós e melhora o desempenho. O gerenciador de topologia toma decisões de alocação de recursos alinhadas à topologia. Para mais informações, consulte Control Topology Management Policies on a node. |
none |
|
|
containerLogMonitorInterval |
O cluster deve executar Kubernetes 1.30 ou posterior. Intervalo em que os logs do contêiner são verificados para rotação. |
10s |
[3s, 60s] |
|
containerLogMaxWorkers |
O cluster deve executar Kubernetes 1.30 ou posterior. Número máximo de workers simultâneos para rotação de logs. |
1 |
[1, 20] |
|
tracing |
Ativa o rastreamento para componentes do plano de controle ou do plano de dados do cluster. Para mais informações, consulte Gerenciamento de rastreamento. |
Nenhum |
|
|
singleProcessOOMKill |
Controla o comportamento de OOM Kill de contêineres em um ambiente cgroup v2. Quando definido como
|
Em um ambiente cgroup v2, o padrão é |
|
|
configMapAndSecretChangeDetectionStrategy |
Modo de operação para o gerenciador de ConfigMap e Secret. |
|
|
|
serverTLSBootstrap |
Apenas clusters ACK Managed Pro são suportados. Garanta que o feature gate
Ative o bootstrap de certificado de servidor do Kubelet. Quando este recurso está ativado, o Kubelet solicita certificados de servidor ao cluster através da API |
|
Valores válidos:
|
Perguntas frequentes
As configurações personalizadas serão descontinuadas?
À medida que o Kubernetes evolui, parâmetros e feature gates podem ser descontinuados ou removidos. Se um parâmetro personalizado gerenciado pelo ACK for descontinuado em uma nova versão do Kubernetes, o ACK removerá a configuração correspondente durante uma atualização do cluster.
Gerenciando o kubelet com um arquivo de configuração
O Container Service for Kubernetes ajusta a forma como as configurações do kubelet são gerenciadas com base nas melhores práticas da comunidade. Para clusters que executam Kubernetes 1.20 ou posterior, sinalizadores de linha de comando descontinuados do kubelet são gradualmente substituídos por um arquivo de configuração. Para mais informações, consulte Kubelet Configuration (v1beta1).
Novos nós usam tanto o arquivo de configuração quanto o método de configuração original. Os nós existentes não são afetados. Para gerenciar as configurações de todos os nós em um pool usando apenas o arquivo de configuração, aplique uma configuração personalizada conforme descrito em Parâmetros personalizáveis do kubelet para padronizar as configurações de todos os nós no pool.
Modificando parâmetros do kubelet sem suporte
O ACK permite gravar parâmetros personalizados no arquivo /etc/kubernetes/kubelet-customized-args.conf. Este arquivo armazena parâmetros de inicialização personalizados e opções de configuração para o kubelet. Os parâmetros neste arquivo têm precedência sobre os valores definidos através do recurso de configuração personalizada do kubelet do pool de nós quando o nó é reiniciado.
Ajustar parâmetros do kubelet pode causar problemas como falhas no registro de nós e falhas no agendamento de pods, afetando seus serviços. Antes de prosseguir, avalie totalmente os riscos da alteração.
-
(Recomendado) Para nós que serão adicionados ao pool de nós no futuro, adicione um script que escreve no arquivo de configuração de parâmetros personalizados na seção User Data do pool de nós. Isso garante que novos nós usem esses valores de parâmetros personalizados por padrão.
Configure o seguinte conteúdo na seção User Data da configuração do pool de nós e substitua
${kubelet_key}e${kubelet_value}pelos valores reais.Você pode escrever no arquivo
kubelet-customized-args.confapenas usando o comando> /etc/kubernetes/kubelet-customized-args.confou> kubelet-customized-args.confem User Data . Se você modificar o arquivo usando qualquer outro método em Pre-defined Custom Data , o arquivo /etc/kubernetes/kubelet-customized-args.conf será sobrescrito durante o processo de inicialização do ACK.mkdir -p /etc/kubernetes echo 'KUBELET_CUSTOMIZED_ARGS="--${kubelet_key}=${kubelet_value}"' > /etc/kubernetes/kubelet-customized-args.conf systemctl daemon-reload systemctl restart kubeletPara acessar a página de configuração, consulte Criar e gerenciar pools de nós .
-
Para nós existentes no pool de nós, faça login no nó para modificar o arquivo de configuração de parâmetros personalizados. Em seguida, execute os seguintes comandos para aplicar a configuração.
systemctl daemon-reload systemctl restart kubelet
Referências
Para mais informações sobre os itens de configuração de um pool de nós, consulte Criar e gerenciar pools de nós.
Se você encontrar erros ou comportamento anormal com seus nós, pods ou o kubelet, consulte Solucionar problemas de exceções de nó, Solução de problemas de pods e Perguntas frequentes sobre nós e pools de nós para solucionar os problemas.