• kubernetes之Scheduler原理分析


    scheduler在整个系统承担了承上启下的重要功能

    承上值负责接受Controller Manager创建新的pod,安排目标Node

    旗下指安置工作完成后,目标Node上的kubelet服务进程接管后续工作,负责pod生命周期下半生。

    kubernetes Scheduler作用是将待调度的pod,按照特定的调度算法和调度策略绑定到集群中合适的Node上,并将绑定信息写入etcd中。整个调度过程涉及三个对象。分别是待调度Pod列表,可用Node列表,以及调度算法和策略。简单地说,就是通过调度算法为待调度pod列表地每个pod从Node里欸报中选择一个最合适的Node

    默认调度流程

    (1)预选调度过程,即遍历所有目标node,筛选出符合要求的候选节点。内置了多种预选策略。

    (2)确定最优节点,在第一步的基础上,采用优选策略计算每个候选节点的积分,分高者胜出。

    Scheduler中可用的预选策略包含:NoDiskConflict,PodFitsResources,PodSelectorMatches,PodFitsHost,CheckNodeLabelPresence,CheckServiceAffinity和PodFitsPorts策略等。其默认的AlgorithmProvider加载的预选策略predicates包括:PodFitsPorts、PodFitsResources、NoDiskConflict、MatchNodeSelector和HostName每个节点只有通过前面提及的5个默认预选策略后,才能初步被选中,进入下一个流程。

    1)NoDiskConflict

    判断备选pod的GCEPersistentDisk或AWSElasticBlockStore和备选的节点中已存在的Pod是否存在冲突。

    读取备选pod的所有Volume信息

    如果Volume是GCEPersistenDisk,将Volume和备选节点上的所有pod每个Volume比较,相同的返回false,表明磁盘冲突。

    如果所有Volume均为发现冲突,返回true。

    2)FodFitsResources

    判断节点的资源是否满足备选pod的需求

    计算pod所有容器的需求资源中和,获取备选节点状态信息,包含资源信息。如果节点资源超过需求资源,返回true。否则返回false。

    3)PodSelectorMatches

    判断备选节点是否包含备选pod的标签选择器指定的标签

    如果pod没有指定spec.nodeSelector标签选择器,返回true

    否则,获取备选节点的标签西悉尼,如果包含pod的标签选择器,返回true,否则返回false

    4)PodFitsHost

    判断备选pod的spec.nodeName域所指定的节点名称和备选节点名称是否一致,如果一致true否则false

    5)CheckNodeLabelPresence

    6)CheckServiceAffinity

    7) PodFitsPorts

    判断备选pod所用端口是否在备选节点中被占用,如果被占用,返回false,否则true

    Scheduler优选策略包括LeastRequestedPriority、CalculateNodeLabelPriority和BalancedResourceAllocation等。

  • 相关阅读:
    C#+ArcEngine10.0+SP5实现鼠标移动动态显示要素属性信息
    C#中实现excel文件批量导入access数据表中
    C#子窗体闪烁问题解决
    C#打印代码运行时间
    TableLayoutPanel导致的闪屏问题
    线段余弦角+凸包算法
    ICommand相关知识
    批量导出access某表内容到word文档
    通过数组里的时间重新排序数组
    数组层级叠加
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/11367793.html
Copyright © 2020-2023  润新知