在 Kubernetes 集群中, kube-scheduler 的作用是将待调度的 Pod 按照算法和策略调度到集群中一个合适的 Worker Node 上,并将绑定信息写入到 etcd 中,目标 Node 中 kubelet 服务通过 API Server 监听到 Scheduler 产生的 Pod 绑定事件获取 Pod 信息,然后下载镜像启动容器。

调度流程

Scheduler 提供的调度流程分为预选 (Predicates) 和优选 (Priorities) 两个步骤:
- 预选,K8S会遍历当前集群中的所有 Node,筛选出其中符合要求的 Node 作为候选。
- 优选,K8S将对候选的 Node 进行打分。

预选
image.png

优选
image.png

调度命令

已调度到node4节点的资源不变动,后续pod资源不调度到node4
kubectl get nodes
kubectl cordon node4

恢复被调度权
kubectl uncordon node4

将指定节点(node4)上的pod进行驱逐
kubectl drain node4

驱逐节点上的所有Pod(包括Daemonset的容器)
kubectl drain node4 —delete-local-data —force —ignore-daemonsets