The main task of scheduler is to schedule pod
For the specific process, please refer to the kubernetes pod creation process
In several cases, kubernetes can bypass the scheduler and create a pod directly
- NodeName is specified when creating a pod
- Pod created by daemon set daemonset (daemonset specifies nodeName, so it is the same as the first one)
- Static pod
Further explanation
The pod created by the daemon set can run before the scheduler starts
The pod created by the daemon set can not comply with the unscheduled of the node
The pod created by the daemon set has a higher priority, the demodulator will avoid expelling it, and the autoscaler will manage them separately
Static pod is similar to daemon set. Kubelet can not only communicate with kubernetes API server and obtain pod description file, but also obtain resource definition from local directory. The pod defined in this way can only be managed by kubelet and can only run on one node.
API services do not monitor these pods, and they do not have controllers or perform health checks on them. Kubelet monitors these pods and restarts them when they crash.
Kubelet also periodically scans the configuration directory to find changes to pod definitions, and adds or removes pods accordingly