亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Kubernetes調度器是怎么工作的,你造么?

Kubernetes调度程序负责确定您的Pod在集群中的部署位置。这听起来很简单,但是实际上却相当复杂!

调度器的工作原理

这里我们就一起来理解一下调度器是如何工作的吧。

图片描述

图:Kubernetes调度器是怎么工作的?

每次创建Pod时,它会被添加到调度器(Scheduler)队列中。调度程序通过两个阶段逐个处理Pod:

  1. 调度阶段(scheduling phase) - 我应该选择哪个节点?
  2. 绑定阶段(binding phase) - 让我们将这个Pod所属节点的信息写入数据库

图片描述

图:当执行kubectl apply -f时,yaml文件内容将被传递给k8s API

图片描述

图:deployment定义被存入etcd中

图片描述

图:controller mananger得知有一个新的deployment,该deployment创建了一个处于pending状态的pod

图片描述

图:pod创建后就被加入调度器队列,调度器通过两个阶段为pod选择运行节点

调度阶段也分为两部分。调度器:

  1. 过滤相关节点(使用一组被称为谓词(predicate)的函数)
  2. 排列其余节点(使用一组被称为优先级(priority)的函数)

让我们举个例子。 比如,你要部署一些对GPU有需求的Pod。你将Pod提交给集群,然后:

  1. 调度器过滤掉所有不具有GPU的节点;
  2. 调度器对其余节点进行排名,并选择利用率最低的节点;
  3. 将pod调度到该节点上运行。

图片描述

图:集群一些节点具有GPU

图片描述

图:一旦你要部署对GPU有需求的pod,调度器会过滤掉没有GPU的节点

图片描述

图:过滤后,调度器对其余节点进行打分排名

图片描述

图:选出最佳节点后,你的pod将在那个节点上被创建

截至目前,过滤阶段有13个谓词。这是13个函数,用于确定调度器是否排除该节点作为Pod的可能目标节点。

计分阶段也有13个priority函数。这13个函数决定如何对节点评分和排名。

图片描述

图:过滤阶段有13个谓词函数

图片描述

图:打分阶段有13个优先级函数

如何影响调度器的决策?

  • nodeSelector
  • 节点亲和力(node affinity)
  • pod亲和力/反亲和力(pod affinity/anti-affinity)
  • taint和容忍度(toleration)

如何自定义调度器?

您可以为调度器编写插件。您可以在调度阶段自定义任何过滤和打分函数。 但是,绑定阶段尚未公开任何公共API。

图片描述

图:扩展API和绑定阶段的内部API

其他学习资料

你还可以通过下面链接了解更多有关调度程序的信息:

本文翻译自[《How does the scheduler work in Kubernetes?》(https://threadreaderapp.com/thread/1309090938673868801.html)]。


图片描述

點擊查看更多內容
“小禮物走一走,來慕課關注我”
贊賞支持
Tony Bai 說 去圍觀
Tony Bai,智能網聯汽車獨角獸公司先行研發部負責人,Go語言專家,資深架構師,《Go語言精進之路》作者。
評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
7769
獲贊與收藏
497

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消