美文网首页
K8s Scheduler(4)

K8s Scheduler(4)

作者: jaymz明 | 来源:发表于2020-06-02 19:56 被阅读0次

    scheduler故名思维负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。

    调度流程

    给pod做调度主要分为两步:1. 过滤。2. 打分。
    过滤阶段会将所有满足的Pod调度需求的Node选择出来,过滤之后会得到一个符合的Node列表,如何列表为空,则表明这是一个不可调度的Pod。
    NodeSelector和LabelSelector不赘述。

    亲和和反亲和 Affinity and anti-affinity

    是为了增强调度的灵活性。增强一下几点:
    匹配有更多的逻辑组合,不只是字符的完全相等。
    调度分成软策略(soft)和硬策略(hard),在软策略的情况下,如果没有满足调度条件的节点,pod 会忽略这条规则,继续完成调度过程。
    软策略硬策略的区分是有用处的,硬策略适用于 pod 必须运行在某种节点,否则会出现问题的情况,比如集群中节点的架构不同,而运行的服务必须依赖某种架构提供的功能;软策略不同,它适用于满不满足条件都能工作,但是满足条件更好的情况,比如服务最好运行在某个区域,减少网络传输等。这种区分是用户的具体需求决定的,并没有绝对的技术依赖。

    节点Node 亲和性

    类似于nodeSelector,允许我们指定一些Pod在Node间调度的约束。
    支持两种形式:
    requiredDuringSchedulingIgnoredDuringExecution 必须满足,如果不满足则不进行调度
    preferredDuringSchedulingIgnoredDuringExecution 倾向满足,不满足的情况下会调度的不符合条件的Node。

    pod 亲和性和反亲和性

    podAffinity 主要解决POD可以和哪些POD部署在同一个拓扑域中的问题(拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的cluster、zone等。),podAntiAffinity主要解决POD不能和哪些POD部署在同一个拓扑域中的问题。它们处理的是Kubernetes集群内部POD和POD之间的关系。

    作用域: pod 于pod之间。

    提到NodeAffinity,不得不说污点Taints,亲和度是能够将pod调度到该node上面,而taints则是拒绝,甚至驱逐Pod。
    aints(污点)是Node的一个属性,设置了Taints(污点)后,因为有了污点,所以Kubernetes是不会将Pod调度到这个Node上的,于是Kubernetes就给Pod设置了个属性Tolerations(容忍),只要Pod能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就能够(不是必须)把Pod调度过去。
    因此 Taints(污点)通常与Tolerations(容忍)配合使用。
    待续……

    相关文章

      网友评论

          本文标题:K8s Scheduler(4)

          本文链接:https://www.haomeiwen.com/subject/jfijahtx.html