图文并茂带你解读 Kube-scheduler 今日快讯 - 行业动态 -

当前位置:首页  >  行业动态  > 正文

图文并茂带你解读 Kube-scheduler 今日快讯

图文并茂带你解读 Kube-scheduler 今日快讯
2023-02-17 04:17:57 来源:腾讯云

作者 | 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 -

标签: 云数据库 Redis Kubernetes

(责任编辑:news01)
【全球时快讯】杀破狼长庚为什么要谋反_杀破狼长庚

【全球时快讯】杀破狼长庚为什么要谋反_杀破狼长庚

1、长庚是皇帝的儿子,因为一次突袭而失散,后来被顾昀带回京城。2、最终继位成为皇帝。本文分享完毕,...
02-11 14:55:52
德里克-怀特砍至少30分10助3帽 联盟本赛季第二人 第一位是约基奇 世界即时

德里克-怀特砍至少30分10助3帽 联盟本赛季第二人 第一位是约基奇 世界即时

NBA常规赛,凯尔特人127-116击败黄蜂。本场比赛,凯尔特人球员德里克-怀特表现非常出色,出场36分半钟19...
02-11 11:08:53
热资讯!苛颤_关于苛颤的简介

热资讯!苛颤_关于苛颤的简介

1、苛[kē]颤[chàn]:北方方言。形容词。不好看的意思。本文关于苛颤的简介就讲解完毕,希望对大家有所帮助
02-11 08:50:30
天天微资讯!教师节外送什么礼物好

天天微资讯!教师节外送什么礼物好

教师节外送这些礼物好,老师是家长的顶梁柱,他是你的心意和体贴,并让他感觉到你的用心就好。教师节是...
02-11 05:30:58
全球看热讯:接收到很贵重的礼物怎么感谢

全球看热讯:接收到很贵重的礼物怎么感谢

接收到很贵重的礼物感谢的步骤,收的后说明知道你的礼物不喜欢,如果不喜欢你的礼物,说明他对你有意思...
02-11 01:24:32
入驻亚马逊需要多少费用?费用包括哪些?_当前聚焦

入驻亚马逊需要多少费用?费用包括哪些?_当前聚焦

在亚马逊平台开店的商家其实挺多的,如果要在这里开店的话,一定要符合相关的条件,而且费用方面都是必...
02-11 00:44:34
世界粮食计划署: 叙西北部粮食储备告急,需开辟更多过境点

世界粮食计划署: 叙西北部粮食储备告急,需开辟更多过境点

当地时间2月10日,世界粮食计划署(WFP)表示,由叙利亚反对派控制的叙西北部地区面临粮食储备告急,并呼...
02-10 22:15:22
你不得不知道的软文营销十大类标题写法

你不得不知道的软文营销十大类标题写法

今天我们再谈软文营销标题,无非就是为了补充之前给大家所提供的软文营销标题相关类干货的不足。我们知...
02-10 21:26:59
天天头条:遵守的拼音的读法

天天头条:遵守的拼音的读法

一、关于遵守的拼音的读法1、读法:[zūnshǒu]二、关于遵守的拼音的释义2、基础释义:依照规定行动;不...
02-10 19:45:33
世界滚动:海带胡萝卜能一起炖牛肉吗_海带胡萝卜能一起吃吗

世界滚动:海带胡萝卜能一起炖牛肉吗_海带胡萝卜能一起吃吗

1、海带胡萝卜能一起吃2、海带可以和胡萝卜一起吃,从海带和胡萝卜的性味来看,海带属于性寒味甘的食材...
02-10 18:04:46
徐凤年的三个徒弟结局(徐凤年的三个徒弟最后什么结局)|世界速看

徐凤年的三个徒弟结局(徐凤年的三个徒弟最后什么结局)|世界速看

1、余地龙。余地龙被徐凤年收为徒弟,也是第一个徒弟。余地龙跟着徐凤年历练,遇见卖炭妞,收陆地朝仙图...
02-10 17:21:35
环球今日报丨手擦干才算卫生

环球今日报丨手擦干才算卫生

国家三级健康管理师 刘瑛你每次洗手后都会擦干吗?有人可能说不一定。尤其是天气变热后,很多人觉得,...
02-10 16:02:26
excel公式大全详解ppt_excel公式大全详解

excel公式大全详解ppt_excel公式大全详解

1、第一个求和函数“SUM”的格式为“=SUM(X:Y)”。使用时,在函数框中输入“=SUM(X:Y)”,其中X和Y是对
02-10 14:44:56
灵笼 几季_灵笼上映时间

灵笼 几季_灵笼上映时间

1、影视于2019在大陆上映,由董汪汪导演,主要演员包括黄莺,李元韬,陶典,程玉珠,夏一可,是一部精彩的国...
02-10 12:59:23
山东在地震带上吗-天天热消息

山东在地震带上吗-天天热消息

山东在地震带上吗,山东在地震带上。山东地震整体上不多。山东位于郯庐断裂带。郯庐断裂带是东亚大陆上...
02-10 12:29:37
【奇顺投资2月13日】沪镍期货操作大行情 天天百事通

【奇顺投资2月13日】沪镍期货操作大行情 天天百事通

【奇顺投资2月13日】沪镍期货操作大行情  据USGS,2022年全球矿山镍产量达到330万吨,比2021年的273万...
02-10 10:51:50
每日焦点!岭南股份董秘回复:ChatGPT是人机交互技术之一

每日焦点!岭南股份董秘回复:ChatGPT是人机交互技术之一

岭南股份(002717)02月10日在投资者关系平台上答复了投资者关心的问题。
02-10 09:33:18
机械迷城图文全攻略|环球快资讯

机械迷城图文全攻略|环球快资讯

机械迷城图文全攻略,这个游戏很不错,虽然是个FLASH的游戏,但是质素非常高,水墨的风格画很合我胃口,...
02-10 08:37:14
新加坡补习班火爆背后:“减负”难 环球关注

新加坡补习班火爆背后:“减负”难 环球关注

【环球时报驻新加坡特约记者辛斌】日前,一则新加坡补习班老板因帮学生在考试中作弊被国际刑警通缉的消...
02-10 07:35:26
世界微动态丨新婚姻法新规定内容是什么

世界微动态丨新婚姻法新规定内容是什么

新婚姻法新规定内容是什么,新婚姻法新规定内容是禁止有配偶者与他人同居。禁止家庭暴力。夫妻应当互相...
02-10 04:23:05
促睾好处多!5个方法科学促睾,让你力量充沛、健康有活力_环球新消息

促睾好处多!5个方法科学促睾,让你力量充沛、健康有活力_环球新消息

睾酮这个词很多人都会觉得陌生跟奇怪?对于健身的男孩子来说,则会很熟悉。因为他们知道睾酮对肌肉生长...
02-10 04:00:06
个性签名积极向上纯洁 简短有个性积极向上的个性签名精选-世界今亮点

个性签名积极向上纯洁 简短有个性积极向上的个性签名精选-世界今亮点

文章来源:伊秀不要只因一次挫败,就忘记你原先决定想达到的远方。前面的路还很远,你可能会哭,但一定不...
02-10 00:54:22
北京大兴西瓜节

北京大兴西瓜节

中国占世界西瓜种植面积的40%,产量居世界第一位,西瓜原产非洲热带沙漠,汉代以前通过“丝绸之路”传入...
02-10 00:40:14
环球快看点丨来一波值得送的 送男朋友的礼物有哪些

环球快看点丨来一波值得送的 送男朋友的礼物有哪些

若是给男朋友送一些精致的小礼品,可以让其偶有枯燥的生活更有情趣。早上起床男朋友看见这个靠谱的礼物...
02-09 21:14:07
爱德华·诺顿_环球视讯

爱德华·诺顿_环球视讯

爱德华·诺顿地区:欧美明星生日:1969-08-18国家:欧美明星血型:星座:狮子座身高:生肖:鸡体重:爱...
02-09 20:43:03
世界报道:国产高通量测序仪单例成本低于100美元;摩根大通“抛售”康龙化成H股

世界报道:国产高通量测序仪单例成本低于100美元;摩根大通“抛售”康龙化成H股

国产基因测序仪的成本也在不断下降。2月7日,在AGBT上,华大智造发布超高通量测序仪DNBSEQ-T20×2。该...
02-09 19:10:04
迪威迅(300167.SZ):上海飒哟港拟公开征集受让方协议转让9.81%股份 将致第一大股东发生变化_环球快播报

迪威迅(300167.SZ):上海飒哟港拟公开征集受让方协议转让9.81%股份 将致第一大股东发生变化_环球快播报

迪威迅(300167 SZ):上海飒哟港拟公开征集受让方协议转让9 81%股份将致第一大股东发生变化
02-09 17:22:22
魔兽世界60数据库1.13_魔兽世界60数据库 全球最新

魔兽世界60数据库1.13_魔兽世界60数据库 全球最新

1、自己觉得大脚不错更多的原创挺好的没有那么花的画面多玩太花了。本文到此分享完毕,希望对大家有所帮...
02-09 16:36:32
怎么查询社保交了多少年_几匹马怎么猜有多少只_今日热门

怎么查询社保交了多少年_几匹马怎么猜有多少只_今日热门

1、这个游戏的规则是:问题是几个字就是几匹马。2、比如:啪啪啪啪啪,几匹马?就是3匹。3、2、啪啪啪啪...
02-09 15:54:21
全球热文:石家庄一示范区获批国家农业标准化示范区Ι类项目

全球热文:石家庄一示范区获批国家农业标准化示范区Ι类项目

河北新闻网讯(通讯员王镇河北日报记者马彦铭)近日,国家标准化管理委员会印发《关于下达农业农村及新...
02-09 13:04:26

为您推荐

精彩推送