Skip to main content

Kube-Scheduler

Responsável por decidir qual node executará o pod. Não necessariamente colocando os pods nos nodes, essa é uma função do Kubelet.

Não adiantaria tentar colocar um pod que precisa de 4gb de ram em um node que só tem 2gb disponível.

O scheduler respeita alguns critérios dependendo dos requisitos necessários para o Pod. Alguns nodes podem ser dedicados a determinados tipos de aplicação como por exemplo aplicações que envolvem processamento gráfico precisam de ir para nodes que possuem placa de vídeo dedicada.

Schedular um pod para um node envolve algumas etapas, sendo uma delas a filtragem, que definirá quais os possíveis nodes que podem receber essa aplicação. Nos nossos manifestos alguns definições nos pods que são levadas em consideração:

  • Resources requirements e limits
  • taints
  • tolerations
  • node selector
  • affinity

Uma outra fase é escolher, dentre os possíveis nodes filtrados, qual tem o melhor score para receber o pod. O score é baseado em quantos CPUs e memória tem disponível e muitos outros parâmetros que podem ser ajustados. O Kubelet atualiza o kube-apiserver com essas informações.

Assim como nos outros componentes, podemos rodar o kube-scheduler como pod ou serviço nos nodes masters.

Alt text

Alt text