暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
43丨Kubernetes默认调度器的优先级与抢占机制.pdf
192
9页
0次
2023-08-03
10墨值下载
43 | Kubernetes默认调度器的优先级与抢占机制
2018-11-30 张磊
深入剖析Kubernetes
进入课程
讲述:张磊
时长 11:16 大小 10.33M
你好,我是张磊。今天我和你分享的主题是:Kubernetes 默认调度器的优先级与抢占机
制。
在上一篇文章中,我为你详细讲解了 Kubernetes 默认调度器的主要调度算法的工作原
理。在本篇文章中,我再来为你讲解一下 Kubernetes 调度器里的另一个重要机制,即:
优先级(Priority )和抢占(Preemption)机制。
首先需要明确的是,优先级和抢占机制,解决的是 Pod 调度失败时该怎么办的问题。
正常情况下,当一个 Pod 调度失败后,它就会被暂时“搁置”起来,直到 Pod 被更新,或
者集群状态发生变化,调度器才会对这个 Pod 进行重新调度。
下载APP
但在有时候,我们希望的是这样一个场景。当一个高优先级的 Pod 调度失败后,该 Pod 并
不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod 。这样就可以保证
这个高优先级 Pod 的调度成功。这个特性,其实也是一直以来就存在于 Borg 以及 Mesos
等项目里的一个基本功能。
而在 Kubernetes 里,优先级和抢占机制是在 1.10 版本后才逐步可用的。要使用这个机
制,你首先需要在 Kubernetes 里提交一个 PriorityClass 的定义,如下所示:
上面这个 YAML 文件,定义的是一个名叫 high-priority 的 PriorityClass,其中 value 的
值是 1000000 (一百万)。
Kubernetes 规定,优先级是一个 32 bit 的整数,最大值不超过 1000000000(10 亿,
1 billion),并且值越大代表优先级越高。而超出 10 亿的值,其实是被 Kubernetes 保留
下来分配给系统 Pod 使用的。显然,这样做的目的,就是保证系统 Pod 不会被用户抢占
掉。
而一旦上述 YAML 文件里的 globalDefault 被设置为 true 的话,那就意味着这个
PriorityClass 的值会成为系统的默认值。而如果这个值是 false,就表示我们只希望声明使
用该 PriorityClass 的 Pod 拥有值为 1000000 的优先级,而对于没有声明 PriorityClass
的 Pod 来说,它们的优先级就是 0。
在创建了 PriorityClass 对象之后,Pod 就可以声明使用它了,如下所示:
1
2
3
4
5
6
7
apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: "This priority class should be used for high priority service pods only."
复制代码
1
2
3
4
apiVersion: v1
kind: Pod
metadata:
name: nginx
复制代码
of 9
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文档被以下合辑收录

深入剖析Kubernetes(共51篇)
课程介绍 过去几年,以 Docker、Kubernetes 为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和 K8S 项目作为技术重心,试图“放长线钓大鱼”。 但容器技术本身偏向运维,namespace 资源隔离、cgroups 资源限制等概念,对开发者来说,理解起来比较困难。尤其在实施 K8S 落地时,总有一些问题被反复提及,比如: 为什么容器里只能跑“一个进程”? 之前一直用的某个 JVM 参数,在容器里怎么不好使了? 为什么 Kubernetes 不能固定 IP 地址?容器网络连不通,该如何 Debug? K8S 中 StatefulSet 和 Operator 到底什么区别?PV 和 PVC 又该怎么用? 这些问题的答案和原理并不复杂,但很难一两句话解释清楚。因为容器技术涉及操作系统、网络、存储、调度、分布式原理等方方面面的知识,是个名副其实的全栈技术。 而其技术体系里那些“牵一发而动全身”的主线,比如 Linux 进程模型对容器本身的重要意义,“控制器”模式对整个 K8S 项目提纲挈领的作用等等,不会详细展现在 Docker 或 Kubernetes 官方文档中,但它们才是掌握容器技术体系的精髓所在,这也是张磊的《深入剖析 Kubernetes》专栏的核心内容。 张磊花费数月时间,经过多次改版,构建出如今的知识框架,适合所有初学者和进阶容器技术的伙伴,帮你逐层理清容器背后的技术本质与设计思想,并结合对其核心特性的剖析与实践,加深你对容器技术的理解。 本专栏共包括如下四大模块: 1. “白话”容器技术基础:用饶有趣味的解说,梳理容器技术生态的发展脉络,讲述容器技术的来龙去脉与实现原理,让你知其然,并且知其所以然。 2. Kubernetes 集群的搭建与实践:以浅显易懂的语言,讲述 Kubernetes 集群背后的原理,并从 0 开始搭建一套 Kubernetes 集群,带你领略 Kubernetes 集群的“一键安装”。 3. 容器编排与 Kubernetes 核心特性剖析:这个模块从分布式系统设计的视角出发,归纳出这些特性中体现出来的普遍方法,然后再逐一阐述 Kubernetes 项目关于编排、调度和作业管理的各项核心特性。 4. Kubernetes 开源社区与生态:磊哥会带你思考如何同团队一起平衡内外部需求,逐渐成为社区中不可或缺的一员。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜