当前位置:  首页>> 技术小册>> Kubernets合辑3-kubernetes介绍

调度器组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。

当前各个node节点资源会通过kubelet汇总到etcd中,当用户提交创建pod请求时,controller manager监听apiserver的pod事件并处理。此时scheduler通过etcd中存储的node信息进行预选(predict),将符合要求的node选出来。再根据优选(priorities)策略,最后执行Pod与Node绑定。

scheduler并不是每次都对所有的node进行遍历筛选,而是根据参数 percentOfNodeToScore 的值确定需要检查多少个node状态,0表示未设置。如果节点小于50,该参数不生效;超过100个节点集群,按一定的百分比选取参与调度的node节点。

scheduler 与 controller-manager 一致,也是主备模式,只有一个leader处理调度。锁对象如下:

  1. [root@maxiaoke ~]# kubectl get endpoints -n kube-system kube-scheduler -o yaml
  2. apiVersion: v1
  3. kind: Endpoints
  4. metadata:
  5. annotations:
  6. control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"centos-7-51_1289d143-3521-4a89-bc2d-3de666517013","leaseDurationSeconds":15,"acquireTime":"2021-03-27T02:06:23Z","renewTime":"2021-03-27T02:35:23Z","leaderTransitions":37}'
  7. creationTimestamp: "2020-12-04T13:49:43Z"
  8. name: kube-scheduler
  9. namespace: kube-system
  10. resourceVersion: "1489536"
  11. selfLink: /api/v1/namespaces/kube-system/endpoints/kube-scheduler
  12. uid: 520b8a44-d9bd-41f1-9a0d-cc9448411e9d

该分类下的相关小册推荐: