Kubernetes调度器是怎么工作的,你造么?
2020/9/25 13:03:44
本文主要是介绍Kubernetes调度器是怎么工作的,你造么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Kubernetes调度程序负责确定您的Pod在集群中的部署位置。这听起来很简单,但是实际上却相当复杂!
调度器的工作原理
这里我们就一起来理解一下调度器是如何工作的吧。
每次创建Pod时,它会被添加到调度器(Scheduler)队列中。调度程序通过两个阶段逐个处理Pod:
- 调度阶段(scheduling phase) - 我应该选择哪个节点?
- 绑定阶段(binding phase) - 让我们将这个Pod所属节点的信息写入数据库
调度阶段也分为两部分。调度器:
- 过滤相关节点(使用一组被称为谓词(predicate)的函数)
- 排列其余节点(使用一组被称为优先级(priority)的函数)
让我们举个例子。 比如,你要部署一些对GPU有需求的Pod。你将Pod提交给集群,然后:
- 调度器过滤掉所有不具有GPU的节点;
- 调度器对其余节点进行排名,并选择利用率最低的节点;
- 将pod调度到该节点上运行。
截至目前,过滤阶段有13个谓词。这是13个函数,用于确定调度器是否排除该节点作为Pod的可能目标节点。
计分阶段也有13个priority函数。这13个函数决定如何对节点评分和排名。
如何影响调度器的决策?
- nodeSelector
- 节点亲和力(node affinity)
- pod亲和力/反亲和力(pod affinity/anti-affinity)
- taint和容忍度(toleration)
如何自定义调度器?
您可以为调度器编写插件。您可以在调度阶段自定义任何过滤和打分函数。 但是,绑定阶段尚未公开任何公共API。
其他学习资料
你还可以通过下面链接了解更多有关调度程序的信息:
- Kubernetes调度程序 - https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
- 调度策略 - https://kubernetes.io/docs/reference/scheduling/policies/
- 调度框架 - https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/
本文翻译自[《How does the scheduler work in Kubernetes?》(https://threadreaderapp.com/thread/1309090938673868801.html)]。
讲师主页:tonybai_cn
讲师博客: Tony Bai
专栏:《改善Go语言编程质量的50个有效实践》
实战课:《Kubernetes实战:高可用集群搭建,配置,运维与应用》
免费课:《Kubernetes基础:开启云原生之门》
这篇关于Kubernetes调度器是怎么工作的,你造么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在Kubernetes (k8s) 中搭建三台 Nginx 服务器怎么实现?-icode9专业技术文章分享
- 2024-11-05基于Kubernetes的自定义AWS云平台搭建指南
- 2024-11-05基于Kubernetes Gateway API的现代流量管理方案
- 2024-11-05在Kubernetes上部署你的第一个应用:Nginx服务器
- 2024-11-05利用拓扑感知路由控制Kubernetes中的流量
- 2024-11-05Kubernetes中的层次命名空间:更灵活的资源管理方案
- 2024-11-055分钟上手 Kubernetes:精简实用的 Kubectl 命令速查宝典!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台