K8S-Schedule: Overview
In Kubernetes, resource scheduling is a fundamental process that ensures Pods are efficiently matched to Nodes, allowing the kubelet to run them effectively. The default scheduler, known as kube-scheduler, is responsible for this task. It continuously monitors for newly created Pods that lack a Node assignment and determines the optimal placement based on various factors, including individual and collective resource requirements, hardware and software constraints, affinity and anti-affinity specifications, and data locality.

The scheduling process in Kubernetes is divided into two main phases:
Filtering (Preselection): In this phase, the scheduler filters out nodes that do not meet the specific requirements of the Pod. This could be due to insufficient resources or incompatible hardware/software configurations. The nodes that pass this filtering are considered feasible for running the Pod.
Scoring (Prioritization): After filtering, the scheduler scores the remaining feasible nodes to determine the most suitable one for the Pod. Factors influencing this scoring include resource availability, affinity rules, and other custom policies. The node with the highest score is selected for Pod placement.

By understanding and leveraging these scheduling principles and frameworks, Kubernetes ensures efficient workload distribution, optimal resource utilization, and maintains the desired state of applications running within the cluster.
In the following chapters, we will conduct practical exercises from three perspectives: Node, Pod, and Taint.

