Scheduler 主要任务是 调度 Pod
具体过程请参考 Kubernetes Pod 创建过程
有几种情况,Kubernetes可以绕过 调度器 直接创建pod
- 创建pod的时候,指定了 nodeName
- 由守护进程集 daemonset 创建的pod (daemonset会指定nodeName,所以和第一条一样)
- 静态pod
进一步解释
由守护进程集创建的Pod可以在调度器启动之前运行
由守护进程集创建的Pod可以不遵守节点的Unschedulable
由守护进程集创建的Pod优先级更高,解调度器会避免驱逐它,自动缩放器也会单独管理它们
静态 Pod 和 守护进程集 类似,Kubelet 除了可以与 Kubernetes API 服务器通信并获取 Pod 描述文件之外,还可以从本地目录获取资源定义。以这种方式定义的 Pod,只能由 Kubelet 管理,而且只能在一个节点上运行。
API 服务不会监视这些 Pod ,而且它们也没有控制器,也不会针对它们执行 健康检查,Kubelet 会监视这些 Pod,并在崩溃时重启。
Kubelet 还会定期扫描配置目录,以查找 Pod 定义的改动,并相应的添加 或 删除 Pod