Todos os pods do Kubernetes são executados em uma única CPU

Todos os pods do Kubernetes são executados em uma única CPU

Minha máquina tem 48 CPUs. Antes de criar pods, coloquei off-line de 1 a 47 CPUs por echo "0" > /sys/devices/system/cpuN/online.

Quando eu crio o primeiro pod para um nó, on-line a CPU #1por echo "1" > /sys/devices/system/cpu1/online. A tarefa de estresse da CPU executada pelo pod e vejo CPU0que é totalmente usada por este pod. O uso do pod 99-100% CPU.

Quando crio o segundo pod para o mesmo nó, coloco o arquivo CPU #2 echo "1" > /sys/devices/system/cpu2/online. Mas apenas a CPU0 é totalmente utilizada CPU1e CPU2não tem carga. E ambos os pods são executados com 50% de uso da CPU.

Se eu criar mais pods para o mesmo nó, eles apenas compartilharão CPU0o que eu colocar online em mais CPUs. Todas as outras CPUs online estão ociosas.

Meu Kubernetes version is 1.23.12. Isso não acontece na versão 1.28. Na versão 1.28, todos os pods são executados em CPUs diferentes com 100% de uso. O yaml do pod tem limitação de CPU e solicitação para 1.

Não tenho certeza se isso é um bug na versão 1.23.12ou se alguma configuração está errada nela. Qualquer comentário será apreciado.

Responder1

O CPU Manager é responsável pela alocação de CPUrecursos aos pods no Kubernetes. Em um nó, o CPU Manager é responsável por ativar políticas de carga de trabalho aprimoradas. Por exemplo, dependendo se o pod está limitado e quais núcleos de CPU estão disponíveis no momento do agendamento, ele direciona vários CPUpods intensivos para compartilhar tarefas com diferentes núcleos de CPU.

O CPU Manager está em versão beta desde o Kubernetes v1.12e está habilitado por padrão. A --cpu-manager-policyopção kubelet é empregada para definir a política do CPU Manager.

EmKubernetes versão 1.23.14eles TEM umcorreção para um bugna mudança.

Kubelet: fix GetAllocatableCPUs method in cpumanage.

Deversão 1.26, o gerenciador de CPU foi GA no Kubernetes. Isso significa que o recurso CPU Manager foi considerado estável e está pronto para uso em ambientes de produção. Então esse pode ser o motivo pelo qual você está tendo um problema em version 1.23.12não estar no version 1.31.

informação relacionada