• k8s驱逐篇(4)-kube-scheduler抢占调度驱逐


    kube-scheduler抢占调度驱逐

    介绍kube-scheduler抢占调度驱逐之前,先简单的介绍下kube-scheduler组件;

    kube-scheduler简介

    kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。

    kube-scheduler架构图

    kube-scheduler的大致组成和处理流程如下图,kube-scheduler对pod、node等对象进行了list/watch,根据informer将未调度的pod放入待调度pod队列,并根据informer构建调度器cache(用于快速获取需要的node等对象),然后sched.scheduleOne方法为kube-scheduler组件调度pod的核心处理逻辑所在,从未调度pod队列中取出一个pod,经过预选与优选算法,最终选出一个最优node,上述步骤都成功则更新cache并异步执行bind操作,也就是更新pod的nodeName字段,失败则进入抢占逻辑,至此一个pod的调度工作完成。

    在这里插入图片描述

    kube-scheduler抢占调度驱逐概述

    优先级和抢占机制,解决的是 Pod 调度失败时该怎么办的问题。

    正常情况下,当一个 pod 调度失败后,就会被暂时 “搁置” 处于 pending 状态,直到 pod 被更新或者集群状态发生变化,调度器才会对这个 pod 进行重新调度。

    但是有的时候,我们希望给pod分等级,即分优先级。当一个高优先级的 Pod 调度失败后,该 Pod 并不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod,这样一来就可以保证高优先级 Pod 会优先调度成功。

    抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。

    PDB概述

    PDB全称PodDisruptionBudget,可以理解为是k8s中用来保证Deployment、StatefulSet等控制器在集群中存在的最小副本数量的一个对象。

    抢占调度驱逐功能开启与关闭配置

    kube-scheduler的抢占调度驱逐功能默认开启。

    在 Kubernetes 1.15+版本,如果 NonPreemptingPriority被启用了(kube-scheduler组件启动参数--feature-gates=NonPreemptingPriority=true) ,PriorityClass可以设置 preemptionPolicy: Never,则该 PriorityClass的所有 Pod在调度失败后将不会执行抢占逻辑。

    另外,在 Kubernetes 1.11+版本,kube-scheduler组件也可以配置文件参数设置将抢占调度功能关闭(注意:不能通过组件启动命令行参数设置)。

    apiVersion: kubescheduler.config.k8s.io/v1alpha1
    kind: KubeSchedulerConfiguration
    ...
    disablePreemption: true
    
    • 1
    • 2
    • 3
    • 4

    配置文件通过kube-scheduler启动参数--config指定。

    kube-scheduler抢占调度驱逐-流程图

    下方处理流程图展示了kube-scheduler抢占调度驱逐的核心处理步骤,在开始抢占逻辑处理之前,会先进行抢占调度功能是否开启的判断。

    在这里插入图片描述

    关于kube-scheduler抢占调度驱逐的源码分析,可以查看
    kube-scheduler源码分析(3)-抢占调度分析

  • 相关阅读:
    explain 各字段介绍
    LLM系列 | 27 : 天工大模型Skywork解读及揭露刷榜内幕引发的思考
    测试团队的第一次测试,我们需要做哪些准备?
    Spring学习|使用JavaConfig实现bean配置、代理模式:静态代理模式、动态代理模式(通俗易懂)
    【Java】CAP理论以及它的实际应用案例
    生成式AI结合3D、XR怎么玩?NVIDIA、Niantic等公司已入局
    Android组件通信——消息机制(二十六)
    机器学习强基计划3-4:详解核方法——以核支持向量机KVSM为例
    Flutter实用工具Indexer列表索引和Search搜索帮助。
    vue中路由传参
  • 原文地址:https://blog.csdn.net/kyle18826138721/article/details/126674561