Service Configuration Question #019e3a4f
Qual componente no Kubernetes é responsável por observar novos Pods criados sem nó atribuído e selecionar um nó para eles executarem?
etcd
kube-controller-manager
kube-proxy
kube-scheduler
Official Explanation / Community Explanations
O kube-scheduler é o componente do Kubernetes responsável por observar novos Pods que não têm nó atribuído e selecionar um nó adequado para eles executarem. Ele é executado como um componente do plano de controle e normalmente é implantado no nó mestre.
Como Funciona
O kube-scheduler monitora continuamente o servidor da API em busca de Pods cujo spec.nodeName está vazio. Quando um novo Pod não agendado é detectado, o scheduler seleciona um nó ideal com base em um conjunto de predicados (filtros) e prioridades (pontuação). Os predicados garantem que o nó atenda aos requisitos de recursos do Pod, como CPU, memória e disco, bem como restrições como afinidade de nó, taints/tolerations e anti-afinidade de pod. As prioridades classificam os nós restantes para escolher o melhor ajuste, considerando fatores como disponibilidade de recursos, localidade e funções de pontuação personalizadas.
Por que o Valor Correto está Certo
O kube-scheduler é o único componente projetado especificamente para esta tarefa. Ele é configurável através de flags como --policy-config-file para políticas de agendamento personalizadas, e pode ser estendido com schedulers personalizados. A decisão do scheduler é escrita de volta no servidor da API, atualizando o campo nodeName do Pod.
Por que os Valores Incorretos estão Errados
- etcd: Este é um armazenamento chave-valor distribuído usado como repositório de backup do Kubernetes para todos os dados do cluster. Ele não realiza agendamento; apenas armazena o estado do cluster, incluindo informações de Pods e nós.
- kube-controller-manager: Este executa vários controladores que regulam o estado do cluster, como o controlador de nó, controlador de replicação e controlador de endpoints. Ele não agenda Pods; garante que o número desejado de Pods esteja em execução e lida com falhas de nós.
- kube-proxy: Este é um proxy de rede que é executado em cada nó, mantendo regras de rede para comunicação entre Pods e balanceamento de carga de Services. Ele não tem papel no agendamento de Pods em nós.