Pergunta de entrevista para Engenheiro DevOps

Como o scheduler do Kubernetes decide onde um pod roda?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Ele roda duas fases. A filtragem remove os nós que não podem hospedar o pod, com base nos requests de recursos contra a capacidade alocável, node selectors, taints que o pod não tolera e restrições de volume ou de afinidade. A pontuação então classifica os sobreviventes usando regras como espalhar entre nós e preferir os menos carregados. O vencedor recebe o bind, e o kubelet daquele nó de fato inicia o pod.

Por que os entrevistadores perguntam isso

Scheduling aparece em incidentes reais como pods em Pending e carga desigual, então o entrevistador quer saber se você consegue depurar isso. O detalhe principal que ele escuta é que o scheduling usa requests, não limits nem uso real, o que explica a maioria das caras de espanto durante incidentes de capacidade. Afinidade, taints e topology spread constraints mostram que você moldou o posicionamento de forma deliberada em vez de aceitar os padrões.

Como estruturar sua resposta

  • Cite as duas fases: filtrar e depois pontuar, e então o bind.
  • Deixe claro que os requests guiam o posicionamento, não os limits nem o uso ao vivo.
  • Liste as alavancas: selectors, afinidade, taints, topology spread.
  • Diga como você depura um pod travado em Pending.

Exemplo de resposta

Exemplo falado, em primeira pessoa

O scheduler observa pods sem nó atribuído e passa eles por filtragem e pontuação. A filtragem descarta qualquer nó que simplesmente não pode funcionar: CPU ou memória alocável insuficiente para os requests do pod, um node selector que não bate, um taint sem tolerância correspondente, um volume que não consegue se anexar naquela zona. A pontuação então classifica o que sobrou, favorecendo espalhamento e utilização equilibrada, e o nó do topo vence e recebe o bind. O detalhe que importa na operação é que ele agenda com base nos requests, não no que o pod realmente usa. Então um cluster pode parecer quinze por cento utilizado nos dashboards e ainda assim se recusar a agendar qualquer coisa, porque todo mundo colocou requests muito acima do uso real. Quando um pod fica em Pending, eu vou direto nos eventos do pod, já que o scheduler te diz exatamente qual predicado falhou e em quantos nós. Para moldar o posicionamento eu uso topology spread constraints entre zonas para disponibilidade, e taints com tolerâncias para manter cargas gerais fora dos nós com hardware especial.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Qual é a diferença entre um pod ser despejado e ser preemptado?
  • Como requests e limits interagem com as classes de quality of service?
  • Como você manteria duas réplicas do mesmo serviço fora de um mesmo nó?

Mais perguntas para Engenheiro DevOps

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot