首页 > 聚焦 > > 正文

图文并茂带你解读 Kube-scheduler

2023-02-15 21:03:38 来源:腾讯云

作者 | ContainerLabs 译者 | Luga Lee 策划 | Luga Lee

Hello folks,今天为大家分享一个由 ContainerLabs 出品的关于 Kubernetes Scheduler 的文章。

在 Kubernetes 中,Pod 是最小的可部署工作负载单元。所以显而易见的问题:

“Pod 应该部署在哪里?”


(资料图)

当然,答案是:Pod 始终在 Node 内执行。

但是…… 有这么多 Node 节点 ,我们应该将这个 Pod 部署到哪个 Node ???

大家好,我是 “Kubernetes Scheduler” ~

让我们用简单的场景打个比方来剖析一下 Kubernetes Scheduler 的工作原理以及选择 Node 的方式。

假设我们有一家“社交餐厅”,里面有几张桌子,每张桌子周围有几个座位,有很多顾客和酒店服务员。“社交餐厅”意味着不同的顾客群可以坐在同一张桌子旁,如果有足够的座位并且满足所有条件。

桌子 = Node 节点(VM 或物理机)座位 = VM 上的资源可用性服务员= Kube-Scheduler客户组 = Pod组内单个客户 = Container

1、Resource requirements and availability - 资源需求和可用性

1、一个 *Customer-Group 进入餐厅并提出一个简单的座位请求。服务员分析客户组的需求并查看他们需要多少个座位。然后,他查看所有可用的桌子,过滤无法“安排”的桌子,并为他们分配(绑定)满足他们座位要求的桌子。 *

2、这是基本的调度类型——Kube 调度程序不断监视 API Server 以查看是否有任何未调度的 Pod,查看 Pod 内每个容器的资源需求。

3、请记住,容器是那些在规范中有资源需求的容器,而不是 Pod 本身。

在下面的示例中,我们对所部署的 Pod 的 CPU 和内存进行了资源定义。要求是 500 milli CPU 和 128 MiB 内存。

apiVersion: v1kind: Podmetadata:  name: nginxspec:  containers:  - name: nginx    image: nginx:1.7.9    resources:      requests:        memory: "128Mi"        cpu: "500m"

现在让我们看一下其中一个 Node(餐厅餐桌)以确保它们有足够的容量。我们运行以下命令:

kubectl describe nodes 

2、Node Selector - 节点选择器

另一个 *Customer-Group 来到餐厅,要求坐在任何“蓝色”的桌子上。服务员查看他的库存并找到所有带有蓝色标签的表并将客户组分配给适当的桌子*

在这种情况下,Pod 有一个指定的 nodeSelector(键值对),它请求部署 Pod 到与键值对匹配的任何 Node 节点上。

新的 YAML 文件如下所示:

apiVersion: v1kind: Podmetadata:  name: nginx-bluespec:  containers:  - name: nginx    image: nginx:1.7.9  nodeSelector:    color: blue

为了查询我的所有 Node 以检查我们是否有标签 “blue” ,我们运行以下命令进行查看:

kubectl get nodes --show-labels

从列表中我们可以看到 “worker-2” 的标签为 color=blue。Kubernetes 也为我们提供了几个内置标签。

棒极了 !如果您现在部署它,调度程序会自动将其分配给正确的节点。我们可以通过运行以下命令来确认这一点。

kubectl get pod -o wide

请注意,如果您没有带有适当标签的 Node 节点,则部署将处于挂起状态。

3、 Node affinity and anti-affinity -节点亲和与反亲和

节点亲和性和反亲和性很像节点选择器,但它通过支持表达语言和软/硬偏好而不只是硬性要求为您提供更大的灵活性。

让我们说另一个 *Customer-Group 进入餐厅。他们更喜欢放在任何“海景”的桌子上,但这不是必需的。服务员查看他的库存并找到所有标签为“海洋”的桌子并将客户组分配给适当的桌子*

在此示例中,Pod 定义了一个 nodeAffinity,它表明我们更喜欢与键值对匹配的“节点”-> view : ocean(我们通过下面的 matchExpressions 来做到这一点)

这里有两个选项:

preferredDuringSchedulingIgnoredDuringExecution: 这意味着匹配条件的节点将是首选,但不保证何时分配到节点。

IgnoredDuringExecution- 如果在调度 Pod 后删除或更改节点的标签,则不会删除 Pod。换句话说,affinity 选择仅在调度 Pod 时起作用,而在执行时不起作用

requiredDuringSchedulingIgnoredDuringExecution: 表示选择节点时需要符合条件的节点。IgnoredDuringExecution 和以前一样。
apiVersion: v1kind: Podmetadata:  name: nginx-oceanviewspec:  containers:  - name: nginx    image: nginx:1.7.9  affinity:    nodeAffinity:      preferredDuringSchedulingIgnoredDuringExecution:      - weight: 1        preference:          matchExpressions:            - key: view              operator: In              values:                - ocean

这种情况下的运算符也可以是其他值,例如 In、NotIn、Exists、DoesNotExist、Gt、Lt。NotInDoesNotExist 会产生相反的效果 nodeAntiAffinity。

4、 Pod affinity and anti-affinity -Pod 亲和与反亲和

另一个素食主义者女孩团伙*顾客团体来到餐厅。他们有一项要求,即不得将其放置在任何包含已经被肉食者占据的座位的桌子上。他们有点挑剔——他们还想坐在已经有男孩子坐的桌子上。换句话说,他们对肉食者没有亲和力,但对男孩有亲和力。 *

让我们来看一个真实世界的场景,您有一组 Redis 缓存和 Web 服务器部署。以下是条件:

您希望将 redis-cache Pod 部署得尽可能靠近 web-servers Pod (podAffinity)您不希望同一节点中有两个 redis-cache Pod (podAntiAffinity)您不想在同一个节点中部署两个网络服务器 Pod (podAntiAffiinity)您希望这些规则适用于节点范围。(拓扑)

以下是 redis-cache 部署 YAML :

apiVersion: apps/v1kind: Deploymentmetadata:  name: redis-cachespec:  selector:    matchLabels:      apptype: redis-cache  replicas: 3  template:    metadata:      labels:        apptype: redis-cache    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: apptype                operator: In                values:                - redis-cache            topologyKey: "kubernetes.io/hostname"      containers:      - name: redis-server        image: redis:3.2-alpine

在上面的示例中,您看到 redis-cache 标签 (apptype=redis-cache) 被添加到作为此部署的一部分部署的每个 Pod。

描述 podAntiAffinity 为没有两个 redis-cache Pod 部署在同一台服务器内。这是由内置拓扑 “kubernetes.io/hostname” 定义的,这意味着它是一个 Node 。如果需要,这也可以扩展到区域或任何其他合法密钥。

现在,让我们看一下 Web 服务器部署 YAML 文件:

apiVersion: apps/v1kind: Deploymentmetadata:  name: web-serverspec:  selector:    matchLabels:      apptype: web-server  replicas: 3  template:    metadata:      labels:        apptype: web-server    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: apptype                operator: In                values:                - web-server            topologyKey: "kubernetes.io/hostname"        podAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: apptype                operator: In                values:                - redis-cache            topologyKey: "kubernetes.io/hostname"      containers:      - name: web-app        image: nginx:1.12-alpine

在上面的示例中,您看到 Web 服务器标签 (apptype=web-server) 被添加到作为此部署的一部分部署的每个 Pod:

podAntiAffinity 被描述为没有两个网络服务器 Pod 部署在同一台服务器内。这是由

内置的 topologyKey 定义的,"kubernetes.io/hostname" 这意味着它是一个 Node。如果需要,这也可以扩展到区域或任何其他合法密钥。

podAffinity 被描述为将 Web 服务器 Pod 部署为尽可能靠近 redis 缓存。

一旦你部署了这个 - 我们就得到了我们的目标 - 3 个网络服务器和 3 个 redis 缓存服务器 - 每个节点上都有一个副本!

5、 Taint and Tolerations -污点和容忍

这一次,餐厅周围的一张桌子被花生溢出的灾难“污染”了。所以他们说不会在这张桌子上安排新的 *Customer-Groups 以避免过敏反应。所以任何新的客户组都被放置在除了这个受污染的桌子之外的所有其他桌子上。*

到目前为止,我们一直在从 Pod 的角度来看调度。但是,如果 Node 的另一方决定不再安排新的 Pod 怎么办?这就是污点进来的地方。一旦你污染了一个 Node,你将有两个选择:

1、NoSchedule - 这意味着一旦它被污染,就不应该在这个 Node 上安排新的 Pod。*除非他们有容忍度

2、NoExecute - 现有的 Pod 一旦被污染,就会从 Node 中逐出。*除非他们有容忍度(我们将在一分钟内讨论容忍度)

那么我们如何污染节点呢?

kubectl taint nodes  mytaintkey=mytaintvalue:NoSchedule

一旦我们有了这个设置,Node 节点现在就被以下键值对 (mytaintkey=mytaintvalue) 污染了。因此无法安排新的 Pod。

但是如果你想从 Node 中驱逐现有的 Pod 怎么办?

kubectl taint nodes  mytaintkey=mytaintvalue:NoExecute

这将从当前 Node 中驱逐所有的 Pod,并将它们移动至另一个可用的 Node 节点上。

但过了一会儿,一个客户组走过来说 - “哦,那很好。我们对花生过敏有“容忍度”**。所以请继续并将我们放在“受污染”的桌子上”。Kube 调度程序验证它们的容忍度并将它们放入受污染的表中

现在,如果 Pod 对 Node 指定的污点键值具有容忍度,则此 Pod 将免除污点,并在必要时放置在 Node 上。

apiVersion: v1kind: Podmetadata:  name: web-serverspec:  containers:  - name: web-app    image: nginx:1.12-alpine  tolerations:  - key: "mytaintkey"    operator: "Equal"    value: "mytaintvalue"    effect: "NoExecute"

Adiós !

- EOF -

图文并茂带你解读 Kube-scheduler

Hellofolks,今天为大家分享一个由ContainerLabs出品的关于KubernetesScheduler的文章。

2023-02-15 21:03:38

广东今年将改造300个县城老旧小区-焦点信息

本报广州2月14日电  (记者 洪秋婷)日前,广东省委农村工作会议暨全面推进“百县千镇万村高质量发展...

2023-02-15 19:15:06

开山种田打一字 开山种田打一字答案 全球速看料

1、开山种田打一字答案是:画。:“开山”就是把山的中间一竖移开,安上一个“田”字,然后把那一竖平放...

2023-02-15 19:03:20

全球今亮点!退休了公积金可以一次性提取吗

可以。退休提取公积金只要满足公积金的提取条件,提取金额和提取次数不受限制。用户可以一次性支取公积...

2023-02-15 17:32:07

世界快资讯丨全市重大项目建设一线见闻|威海市总投资588亿元的198个重大项目集中开工

伴随工程机械响亮的鸣笛声,我市喜迎项目建设“开门红”——2月14日上午,全市总投资588 2亿元的198个...

2023-02-15 16:02:09

2019年冬至是哪一天 冬至介绍

1、2019年冬至的日期:2019年12月22日。2、冬至,又称日短至、冬节、亚岁、拜冬等,兼具自然与人文两大...

2023-02-15 15:57:25

开学日,天气如何?未来气温升升升,会入春吗?

今天天气开学日今天上海转受冷高压控制,天空彻底放晴。具体预报:↓↓↓晴到多云,2~9℃,偏北风4~5级...

2023-02-15 14:49:20

龙珠180话:短笛VS天神!

龙珠180话:短笛VS天神!上届大赛的冠军天津饭这次还没有进入到决赛就淘汰了,而以绝对优势战胜他的孙悟...

2023-02-15 13:11:42

男女收入差距扩大 为什么会出现那么大的差距-当前热门

最近,世界经济论坛发布《2020年全球性别差距报告》,报告显示,2019年全球男女收入差距扩大,大概需要2...

2023-02-15 12:01:11

涉及多个电力项目!2023年广西自治区层面统筹推进重大项目清单发布

广西壮族自治区政府办公厅发布2023年自治区层面统筹推进重大项目清单,其中包括桂平市金山环保工程有限...

2023-02-15 10:59:59

如何制作桦树皮纸

你需要的东西白桦树皮树纸巾洗碗皂水墨水笔热胶枪和胶水花、草、叶薄片白桦树皮很容易变成书写纸。白桦...

2023-02-15 10:04:11

全球信息:家常腌黄瓜的做法 腌黄瓜的做法大全

腌黄瓜好吃的做法【二】腌黄瓜做法所需的食材腌黄瓜的做法步骤图解1 准备食材2 将黄瓜去尖头去蒂切成...

2023-02-15 08:10:50

资讯:美国前常驻联合国代表妮基·黑莉宣布参选美国总统

美国前常驻联合国代表妮基·黑莉宣布参选美国总统---中新社华盛顿2月14日电美国前常驻联合国代表、前南...

2023-02-15 07:42:13

读书心得800字10篇 天天播资讯

读完一本经典名著后,相信大家都积累了属于自己的读书感悟,需要回过头来写一写读书心得了。下面是小编整...

2023-02-15 04:04:22

日本最大黑帮山口组的罪与罚 焦点报道

黑帮指社会上暗中活动的犯罪团伙和其他反动集团或其成员。在中国“”期间,黑帮一词主要指走资派有时也...

2023-02-15 00:23:19

当前速看:叮咚买菜全面盈利,“商品力建设+供应链优化”助推企业高成长

叮咚买菜2022Q4全面盈利了。北京时间2月13日晚间,叮咚买菜发布截至2022年12月31日的第四季度业绩报告。...

2023-02-14 23:48:30

遐想的意思都有哪些_遐想的意思-世界新视野

1、【汉语文字】遐想【汉语拼音】xiáxiǎng【英文翻译】1 [Formal](a)reverie;a

2023-02-14 21:16:33

电影《横空出世》观后感-世界热议

《横空出世》取材于我国在在及其艰苦的环境下制造属于我国自己的原子弹的历史。下面就是小编给大家带来...

2023-02-14 20:06:49

世界观天下!直击土耳其地震救援:冲突频发 连夜搜索 累到崩溃

《中国经济周刊》记者张宇轩|连线土耳其报道2月13日,距离土耳其叙利亚发生地震已经过去7天,灾区救援仍...

2023-02-14 18:48:07

今亮点!安徽巢湖经开区召开建筑施工领域企业集中警示会

为进一步压紧压实企业主体责任,有效防范各类事故发生,2月11日,安徽巢湖经开区召开全区建筑施工领域企...

2023-02-14 16:53:13

小学教育学试题及答案 全球简讯

小学教育学试题及答案小学教育是一门普通高等学校本科专业,属教育学类专业,基本修业年限为四年,授予...

2023-02-14 16:15:21

世界讯息:成人礼物送什么 男生

成人礼物送什么男生(男生礼物成人礼)送他一份比较有意义的礼物,能体现你对他的用心与爱。比如男士一生...

2023-02-14 15:29:38

有房东悔售涨价,也有人继续降价!杭城最新二手房涨跌榜来了

受到春节假期影响,1月二手房成交量减少,共2809套。不过对比去年同期,今年“春节月”的二手房市场有了...

2023-02-14 13:38:51

斜刘海直发发型|精彩看点

斜刘海直发发型清新的直发斜刘海一直是小女生们喜欢来打理的发型的,这样的发型说不是是可以引领潮流的时...

2023-02-14 12:17:01

老师生日送什么礼物 环球即时看

送老师的礼物,其实讲究还是蛮多的,不过要是有些老师喜欢的礼物,我们应该送给老师一些实用的礼物,比...

2023-02-14 11:34:42

嘴唇起皮干裂是怎么回事_嘴唇总是干裂起皮是什么原因

世界百事通!黎巴嫩的香柏树歌曲原唱_黎巴嫩的香柏树

当前通讯!河南商业高等专科学校_关于河南商业高等专科学校的介绍

适合送礼的高档礼品|世界最资讯

环球今日讯!6英寸是多少寸

大众途岳1.4T发动机,七速干式双离合,驾驶感受非常舒适

世界头条:邮箱怎么登录

「南昌精神科」 每日快报

世界报道:猫饲养方法 猫如何饲养

六年级上册数学知识点整理好的_六年级上册数学知识点整理

宜昌动物大世界表演时间表|世界速读

2022湖南成考延考时间是多久

【全球独家】惊天逆袭!吴易昺获中国大陆球员首个ATP巡回赛单打冠军

【世界独家】郭明錤:大部分Android品牌均面临高库存风险

环球新消息丨扬州客舍

画虎类犬打一什么生肖_画虎类犬 世界今热点

世界快资讯丨海口美兰区开展“美丽海岸线 你我共守护”活动[图]

起名的学问研究性学习_起名的学问-观天下

【环球聚看点】38送妈妈什么礼物好

颜姓女孩取名古风带寓意_颜姓女孩取名-环球今日讯

最新资讯:嘉祥县持续优化营商环境 增强企业发展信心

怪物借人世界买cdk还是礼物

三国杀武将图鉴-吉平

每日时讯!苹果手机照片怎么导入电脑里面_怎么把苹果手机里的照片传到电脑里

想买件老玉雕小兽?看看嘉德香港的成交行情吧-简讯

x 广告
x 广告

Copyright @  2015-2023 印度家电网版权所有  备案号: 沪ICP备2022005074号-8   联系邮箱:58 55 97 3@qq.com