写在前面


  • 学习K8s,整理这部分知识
  • 博文内容主要涉及
    • K8s中调度组件kube Scheduler的一些总结
    • 主要参考《K8s权威指南》一书
  • 食用方式:
    • 需要k8s基础知识
    • 需要了解pod基本调度行为

张牙舞爪的人,往往是脆弱的。因为真正强大的人,是自信的,自信就会温和,温和就会坚定--------《明朝那些事》


Scheduler原理解析

众多周知,Kubernetes SchedulerKubernetes中负责Pod调度的重要功能模块,运行在k8s 集群中的master节点。

作用 : Kubernetes Scheduler的作用是将待调度的Pod (API新创建的Pod, Controller Manager为补足副本而创建的Pod等)按照特定的调度算法调度策略绑定(Binding)到集群中某个合适的Node上,并将绑定信息写入etcd中。

在整个调度过程中涉及三个对象,分别是

  • 待调度Pod列表
  • 可用Node列表
  • 以及调度算法和策略

整体流程 :通过调度算法调度,为待调度Pod列表中的每个Pod从Node列表中选择一个最适合的Node随后, 目标node节点上的kubelet通过APIServer监听到Kubernetes Scheduler产生的Pod绑定事件,然后获取对应的Pod清单,下载Image镜像并启动容器

kubelet进程通过与API Server的交互,每隔一个时间周期,就会调用一次API Server的REST接口报告自身状态, API Server接收到这些信息后,将节点状态信息更新到etcd中。 同时kubelet也通过API Server的Watch接口监听Pod信息,如果监听到新的Pod副本被调度绑定到本节点,则执行Pod对应的容器的创建和启动逻辑;如果监听到Pod对象被删除,则删除本节点上的相应的Pod容器;如果监听到修改Pod信息,则kubelet监听到变化后,会相应地修改本节点的Pod容器。

所以说,kubernetes Schedule 在整个系统中承担了承上启下的重要功能,对上负责接收声明式API或者控制器创建新pod的消息,并且为其安排一个合适的Node,对下,选择好node之后,把工作交接给node上的kubelet,由kubectl负责pod的剩余生命周期。

Kubernetes Scheduler当前提供的默认调度流程分为以下两步。

流程 描述
预选调度过程 即遍历所有目标Node,筛选出符合要求的候选节点。为此, Kubernetes内置了多种预选策略(xxx Predicates)供用户选择
确定最优节点 在第1步的基础上,采用优选策略(xxxPriority)计算出每个候选节点的积分,积分最高者胜出

Kubernetes Scheduler的调度流程是通过插件方式加载的"调度算法提供者” (AlgorithmProvider)具体实现的。一个AlgorithmProvider其实就是包括了一组预选策略与一组优先选择策略的结构体.

Scheduler中可用的预选策略包含:NoDiskConflict、PodFitsResources、PodSelectorMatches、PodFitsHost、CheckNodeLabelPresence、CheckServiceAffinity 和PodFitsPorts策略等。

其默认的AlgorithmProvider加载的预选策略返回布尔值包括:

  • PodFitsPorts(PodFitsPorts):判断端口是否冲突
  • PodFitsResources(PodFitsResources):判断备选节点的资源是否满足备选Pod的需求
  • NoDiskConflict(NoDiskConflict):判断备选节点和已有节点是否磁盘冲突
  • MatchNodeSelector(PodSelectorMatches):判断备选节点是否包含备选Pod的标签选择器指定的标签。
  • HostName(PodFitsHost):判断备选Pod的spec.nodeName域所指定的节点名称和备选节点的名称是否一致

即每个节点只有通过前面提及的5个默认预选策略后,才能初步被选中,进入到确认最优节点(优选策略)流程。

Scheduler中的优选策略包含(不限于下面3个):

  • LeastRequestedPriority:从备选节点列表中选出资源消耗最小的节点,对各个节点公式打分
  • CalculateNodeLabelPriority:判断策略列出的标签在备选节点中存在时,是否选择该备选节,这不太懂,打分
  • BalancedResourceAllocation:从备选节点列表中选出各项资源使用率最均衡的节点。对各个节点公式打分

每个节点通过优先选择策略时都会算出一个得分,计算各项得分,最终选出得分值最大的节点作为优选的结果(也是调度算法的结果)。

关于Kubernetes中kube-scheduler的一些笔记相关推荐

  1. 关于Kubernetes中kubelet的一些笔记

    写在前面 今天和小伙伴们分享K8s中Kubelet组件相关笔记 内容涉及kubelet运行机制解析包括 节点Kubelet服务管理 kubeletPod管理 Pod的健康检查 理解不足小伙伴帮忙指正 ...

  2. 关于 Kubernetes中Volume实操的一些笔记

    写在前面 学习K8s,刚把这一块学完,整理笔记,理论很少,偏实战,适合温习 博文内容涉及: 常见nfs,hostPath,emptyDir数据卷使用 PV+PVC的创建 持久性存储及动态卷供应 男女情 ...

  3. 关于 Kubernetes中kube-controller-managerr的一些笔记

    写在前面 学习K8s,遇到整理记忆 大部分都是书里或者官网的东西 博文内容为kube-controller-manager的一些理论 涉及到常见控制器的一些说明 我想变成一棵树. 开心时在秋天开花; ...

  4. 关于 Kubernetes中Service的一些笔记

    写在前面 学习K8s,整理记忆 博文内容涉及:K8s中通过Servie的实现的服务创建,服务发现,服务发布 以及Load balancer负载,Ingress7层路由负载等的实际Demo 陈平安说,& ...

  5. 《Kubernetes权威指南:从Docker到Kubernetes实践全接触》读书笔记

    写在前面 之前简单的了解过,但是机器的原因,只有单机,因为安装Docker的原因,本机VM上的红帽节点起不来了.懂得不多,视频上都是多节点的,所以教学视屏上的所以Demo没法搞. 前些时间公司的一个用 ...

  6. Kubernetes 中创建 Pod 时集群中到底发生了些什么?

    想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...

  7. 尚硅谷Kubernetes(k8s)视频学习笔记

    这里写目录标题 kubernetes (k8s) 主要内容 一. kubernetes 概述 1. kubernetes 基本介绍 2. kubernetes 功能和架构 2.1 概述 2.2 K8s ...

  8. Kubernetes CKA认证运维工程师笔记-Kubernetes安全

    Kubernetes CKA认证运维工程师笔记-Kubernetes安全 1. Kubernetes安全框架 2. 鉴权,授权,准入控制 2.1 鉴权 2.2 授权 2.3 准入控制 3. 基于角色的 ...

  9. Kubernetes CKA认证运维工程师笔记-Kubernetes网络

    Kubernetes CKA认证运维工程师笔记-Kubernetes网络 1. Service 存在的意义 2. Pod与Service的关系 3. Service三种常用类型 4. Service代 ...

最新文章

  1. WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧
  2. 李飞飞点赞的NeurIPS新赛道,刚刚公布了第一批数据集benchmark入围名单
  3. iphone同步助手_教你如何用爱思助手给你的苹果手机设置自己喜欢的铃声
  4. Java volatile关键字原理解剖
  5. sql server数据库课程设计分析
  6. NSOperation的进阶使用和简单探讨
  7. 小米9android q测试版,基于Android Q的MIUI来了 小米9尝鲜
  8. Linux系统编程8-18总结项目:完成一个简单的自己的shell
  9. TCGA肿瘤基因数据的访问(二)
  10. react-native 第三方库
  11. gradle对java插件的扩展_Gradle之java插件入门
  12. 【转载】白话经典算法系列之六 快速排序 快速搞定
  13. 8、技术分析fastJson使用
  14. mysql数据库用doc命令,myMySQL数据库怎么使用dos命令安装? MySQL数据库使用教程
  15. gazebo模型_SLAM组合拳之六 — 创建自定义Gazebo功能包(一)
  16. 程序员面试金典--变位词排序
  17. php 转换带声调的字幕,PHP 汉字、拼音、unicode、声母、韵母互相转换
  18. iOS 【微信登录流程以及遇到的一些坑】
  19. 如何在PowerPoint中显示,隐藏或调整幻灯片缩略图的大小
  20. 服务器站点地址是什么意思,云服务器地址是什么意思

热门文章

  1. 自己动手实现微信自动回复机器人
  2. 苹果悬浮球_原来iPhone手机悬浮球这么厉害!开启后,能让手机变得更好用
  3. Idea 2020.3 显示Memory Indicator
  4. 即时通讯开发如何构建一套移动端消息推送系统
  5. Kali linux 2020.03详细安装教程
  6. 黄一老师:银行是如何审批你的申卡资料?
  7. ScheduledExecutorService定时任务停止问题
  8. Excel双条件交叉查询,你会吗
  9. 美颜瘦脸算法原理详解
  10. MySQL去重字段后查询所有信息