zoukankan      html  css  js  c++  java
  • (3) kubernetes pod调度

    在kubernetes系统中,pod在大多数情况下只是容器的载体而已,通常需要通过RC、Deployment、DaemonSet、Job等对象来完成pod的调度及自动控制功能。

    以下来介绍pod的几种调度方法:

    1、RC、Deployment : 全自动调度

      RC的主要功能之一就是自动部署一个容器应用的多个副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量。除了使用系统内置的调度算法选择合适的node进行调度,也可以指定满足的条件来进行调度。

      1)NodeSelector :定向调度

        k8s默认是Master上的Schedule服务(kube-scheduler进程)根据一系列复杂的算法,最终为pod选择合适的主机,但是有时候我们希望pod创建在指定的节点上。可以通过Node的Label和Pod的nodeSelector属性匹配来达到上述目的。

        (1)首先通过kubectl label来给node打上一些标签

        (2)然后在pod的nodeSelector设置来匹配,如果多个node定义了相同的label,则会选一台合适的主机来创建。

      注意:如果pod指定了nodeSelector,但是集群中没有包含本Label的node,即使有可使用的node,该pod也无法创建。

      2)NodeAffinity  :亲和性调度

        由于nodeSlector通过Node的Label进行精确匹配,所以NodeAffinity增加了In、NotIn、Exists、DoseNotExists、Gt、Lt等操作符来选择Node。

    2、DaemonSet :特定场景调度

      用来管理在集群中每个Node上运行一份pod的副本实例

    3、Job :批处理调度

      如果有个批处理任务(并行或者串行启动多个计算机进程去处理一批工作项,处理完成后,整个批处理任务结束。有以下几种模式:

      1)Job Template Expansion 模式 

        一个Job对象对应一个待处理的一批工作项(work iteam)

        使用场景:批处理(work iteam)比较少,每个work iteam 的处理的数据比较大的场景

      2)Queue with Pod Per Work Iteam模式:

        采用一个队列存放work iteam ,一个job对象作为消费者去完成这些work iteam,在这种模式下,job会启动N个Pod,一个pod对应一个work iteam

      3)Queue with Variable Pod Count模式:

        与2)一样,只是启动的Pod数量是可变的

  • 相关阅读:
    指针数组和数组指针
    initializer_list
    main:处理命令行选项
    Synchronized 和Lock区别
    sleep和wait的区别
    什么时候会发生类初始化
    类的加载与ClassLoader的理解
    获取Class类的实例
    元注解
    IO流思维导图
  • 原文地址:https://www.cnblogs.com/creazylinux/p/7047848.html
Copyright © 2011-2022 走看看