周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54204 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

58 | Kubernetes的资源模型与调度器设计

你好,我是周志明。
调度是容器编排系统最核心的功能之一,“编排”这个词本来也包含了“调度”的含义。调度是指为新创建出来的 Pod,寻找到一个最恰当的宿主机节点来运行它,而这个过程成功与否、结果恰当与否,关键就取决于容器编排系统是怎么管理和分配集群节点的资源的。
那么这样一来,我们就可以认为,调度必须要以容器编排系统的资源管控为前提。
因此这节课,我们就从 Kubernetes 的资源模型谈起,来学习下 Kubernetes 是如何为一个新创建出来的 Pod,寻找到一个最恰当的宿主机节点来运行的。

资源模型

在开始之前,我们先来理清一个概念:资源是什么
在 Kubernetes 中,资源是非常常用的术语,从广义上来讲,Kubernetes 系统中所有你能接触的方方面面,都被抽象成了资源,比如表示工作负荷的资源(Pod、ReplicaSet、Service、……),表示存储的资源(Volume、PersistentVolume、Secret、……),表示策略的资源(SecurityContext、ResourceQuota、LimitRange、……),表示身份的资源(ServiceAccount、Role、ClusterRole、……),等等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes资源模型和调度器设计是容器编排系统的核心功能,以资源管控为前提进行调度,确保新创建的Pod能够在最恰当的宿主机节点上运行。资源被广义地抽象成各种方方面面,包括工作负荷、存储、策略和身份等,使得Kubernetes能够实施声明式API,并建立了一套描述集群状态的全景图。Node是资源的提供者,Pod是资源的使用者,而调度则是将它们进行恰当的撮合。处理器和内存是与调度关系最密切的资源,分别以逻辑处理器的个数和Bytes作为计量单位。Kubernetes的资源模型和调度器设计旨在确保Pod能够在最合适的宿主机节点上运行,实现高效的容器编排和资源利用。此外,文章还介绍了Kubernetes的服务质量等级和优先级的概念,以及资源配额的设置和影响。驱逐机制是通过kubelet执行的,以保证其他更重要的Pod的安全。文章还介绍了软驱逐、硬驱逐和优雅退出期的概念,以及如何避免被驱逐的Pod出现“阴魂不散”的问题。此外,还介绍了如何在Kubernetes中限制由多个Pod构成的微服务系统耗用的总资源,或者是由多名成员组成的团队耗用的总资源。总体而言,文章深入探讨了Kubernetes资源管理的方方面面,为读者提供了全面的技术视角和实践经验。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • zhanyd
    服务质量等级就是要给pod划分等级,Guaranteed是贵宾,Burstable是会员,BestEffort就是一般客户。资源不足时,先驱逐一般客户,然后在驱逐会员,最后才轮到贵宾。 优先级就是优先程度,高优先级的pod会先被调度。 驱逐机制分为软驱逐(Soft Eviction)、硬驱逐(Hard Eviction) 软驱逐:皇上赐毒酒,等你料理了后事之后,喝毒酒自尽,如果不喝,太监会强制你喝 硬驱逐:皇上派刺客强杀
    2021-04-07
    2
    9
  • 丁乐洪
    老师有大爱之心
    2021-04-27
    4
  • neohope
    如果去掉容器编排,想了下还是接触过资源调度的场景的: 1、做大数据处理的时候,接触过Yarn,但节点比较少并没有去深入理解 2、Nginx反向代理时不同节点分配不同的比重,加上访问策略,也算一种调度吧。 3、类似的Dubbo等框架,也支持不同的调度方式 4、服务器或虚拟机组成Cluster或NLB 5、路由器交换机的配置、包括F5的配置 6、计算线程与CPU的绑定,也算一种调度吧 7、线程池、socket连接池、DB连接池、对象池之类的好像也能算
    2021-05-30
    3
  • Demon.Lee
    老师,驱逐pod的时候,先按照Priority排序,如果Priority一样,则再按照Qos Level进行排序么?以此来决定先驱逐哪些pod。
    2021-04-22
    1
  • 黄啸
    项目中有用到阿里的大数据治理开发平台dataworks,dataworks中无论数据开发还是同步任务都会配置调度策略,包括调度参数,失败重跑,上下游依赖(上游写入数据,下游才可以同步)等。
    2022-11-23归属地:浙江
  • 不二
    高屋建瓴,每个组件的存在和设计都是为了解决一些问题,老师把这部分讲清楚了,知其然且知其所以然
    2022-08-16归属地:浙江
  • Jason Ding
    高屋建瓴的感觉
    2022-07-04
  • 文进
    老师的形容真是生动有趣。让人很直观的理解了这个K8S核心之一的运作逻辑。
    2022-06-28
  • coco
    xxl-job
    2021-11-30
  • kissingers
    讲得真好
    2021-07-01
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部