Kube-Scheduler
Responsable de decidir qué nodo ejecutará cada pod. No necesariamente colocando los pods en los nodos, esa es una función del Kubelet.
No tendría sentido intentar colocar un pod que necesita 4GB de RAM en un nodo que solo tiene 2GB disponible.
El Kube-Scheduler respeta algunos criterios dependiendo de los requisitos necesarios para el pod. Algunos nodos pueden ser dedicados a determinados tipos de aplicación, como por ejemplo aplicaciones que involucran procesamiento gráfico necesitan ir a nodos que poseen tarjeta de vídeo dedicada.
Programar un pod para un nodo involucra algunas etapas, siendo una de ellas el filtrado, que definirá cuáles son los posibles nodos que pueden recibir esta aplicación. En nuestros manifiestos, algunas definiciones en los pods son tenidas en consideración:
- Resources (requirements y limits)
- taints
- tolerations
- node selector
- affinity
Otra fase es elegir, entre los posibles nodos filtrados, cuál tiene la mejor puntuación para recibir el pod. La puntuación se basa en cuántas CPUs y memoria tiene disponible y muchos otros parámetros que pueden ser ajustados. El Kubelet actualiza el Kube-APIServer con esta información.
Al igual que en los otros componentes, podemos ejecutar el Kube-Scheduler como pod o servicio en los nodos maestros.

