返回顶部
首页 > 资讯 > 精选 >Kubernetes Scheduler有什么用
  • 430
分享到

Kubernetes Scheduler有什么用

2023-06-03 00:06:07 430人浏览 独家记忆
摘要

这篇文章给大家分享的是有关kubernetes Scheduler有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先来过一下KubernetesScheduler的基本功能KubernetesSchedul

这篇文章给大家分享的是有关kubernetes Scheduler有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

先来过一下KubernetesScheduler的基本功能

KubernetesScheduler 的作用是根据特定的调度算法将pod调度到指定的工作节点(node)上,这一过程也叫绑定(bind)。Scheduler 的输入为需要调度的 Pod 和可以被调度的节点(Node)的信息,输出为调度算法选择的 Node,并将该 pod bind 到这个 Node 。
Kubernetes Scheduler有什么用

KubernetesScheduler中调度算法分为两个阶段:
预选 : 根据配置的 Predicates Policies(默认为 DefaultProvider 中定义的 default predicates policies 集合)过滤掉那些不满足Policies的Nodes,剩下的Nodes作为优选的输入。

优选 : 根据配置的 Priorities Policies(默认为 DefaultProvider 中定义的 default priorities policies 集合)给预选后的Nodes进行打分排名,得分最高的Node即作为最适合的Node,该Pod就Bind到这个Node。

Kubernetes Scheduler有什么用

预选规则详细说明

预先规则主要用于过滤出不符合规则的Node节点,剩下的节点作为优选的输入。在1.6.1版本中预选规则包括:

Kubernetes Scheduler有什么用

详细的规则说明:

(1) NoDiskConflict : 检查在此主机上是否存在卷冲突。如果这个主机已经挂载了卷,其它使用这个卷的Pod不能调度到这个主机上。GCE 、AmazonEBS 和 Ceph RBD 使用的规则如下:

     GCE 允许同时挂载多个卷,只要这些卷都是只读的。

     AmazonEBS 不允许不同的 Pod 挂载同一个卷。

     Ceph RBD 不允许任何两个 pods 分享相同的 monitor,match pool 和 image。
注:ISCSI 与 GCE 一样,在卷都是只读的情况下,允许挂载两个 IQN 相同的卷。

(2) NoVolumeZoneConflict : 检查在给定的 zone 限制前提下,检查在此主机上部署 Pod 是否存在卷冲突,目前指对 PV 资源进行检查(NewVolumeZonePredicate对象predicate函数)。

(3) MaxEBSVolumeCount : 确保已挂载的 EBS 存储卷不超过设置的最大值。默认值是39。它会检查直接使用的存储卷,和间接使用这种类型存储的 PVC 。计算不同卷的总目,如果新的 Pod 部署上去后卷的数目会超过设置的最大值,那么 Pod 就不能调度到这个主机上。

(4) MaxGCEPDVolumeCount : 确保已挂载的 GCE 存储卷不超过设置的最大值。默认值是16。规则同MaxEBSVolumeCount。

(5) MaxAzureDiskVolumeCount : 确保已挂载的Azure存储卷不超过设置的最大值。默认值是16。规则同MaxEBSVolumeCount。

(6) CheckNodeMemoryPressure : 判断节点是否已经进入到内存压力状态,如果是则只允许调度内存为0标记的 Pod。

(7) CheckNodeDiskPressure : 判断节点是否已经进入到磁盘压力状态,如果是则不调度新的Pod。

(8) PodToleratesNodeTaints : Pod 是否满足节点容忍的一些条件。

(9) MatchInterPodAffinity : 节点亲和性筛选。

(10) GeneralPredicates : 包含一些基本的筛选规则(PodFitsResources、PodFitsHostPorts、HostName、MatchNodeSelector)。

(11) PodFitsResources : 检查节点上的空闲资源(CPU、Memory、GPU资源)是否满足 Pod 的需求。

(12) PodFitsHostPorts : 检查 Pod 内每一个容器所需的 HostPort 是否已被其它容器占用。如果有所需的HostPort不满足要求,那么 Pod 不能调度到这个主机上。

(13) 检查主机名称是不是 Pod 指定的 HostName。

(14) 检查主机的标签是否满足 Pod 的 nodeSelector 属性需求。

优选规则详细说明

优选规则对符合需求的主机列表进行打分,最终选择一个分值最高的主机部署 Pod。kubernetes 用一组优先级函数处理每一个待选的主机。每一个优先级函数会返回一个0-10的分数,分数越高表示主机越“好”,同时每一个函数也会对应一个表示权重的值。最终主机的得分用以下公式计算得出:

finalScoreNode= (weight1 priorityFunc1) +(weight2 priorityFunc2) + … + (weightn * priorityFuncn)

Kubernetes Scheduler有什么用

详细的规则说明:
(1) SelectorSpreadPriority: 对于属于同一个 service、replication controller 的 Pod,尽量分散在不同的主机上。如果指定了区域,则会尽量把 Pod 分散在不同区域的不同主机上。调度一个 Pod 的时候,先查找 Pod 对于的 service或者 replication controller,然后查找 service 或 replication controller 中已存在的 Pod,主机上运行的已存在的 Pod 越少,主机的打分越高。

(2) LeastRequestedPriority : 如果新的 pod 要分配一个节点,这个节点的优先级就由节点空闲的那部分与总容量的比值((总容量-节点上pod的容量总和-新pod的容量)/总容量)来决定。CPU 和 memory 权重相当,比值最大的节点的得分最高。需要注意的是,这个优先级函数起到了按照资源消耗来跨节点分配 pods 的作用。计算公式如下:
cpu((capacity – sum(requested)) 10 /capacity) + memory((capacity – sum(requested)) 10 / capacity)/ 2

(3) BalancedResourceAllocation : 尽量选择在部署 Pod 后各项资源更均衡的机器。BalancedResourceAllocation 不能单独使用,而且必须和 LeastRequestedPriority 同时使用,它分别计算主机上的 cpu 和 memory 的比重,主机的分值由 cpu 比重和 memory 比重的“距离”决定。计算公式如下:score = 10 –abs(cpuFraction-memoryFraction)*10

(4) NodeAffinityPriority : Kubernetes调度中的亲和性机制。Node Selectors(调度时将 pod 限定在指定节点上),支持多种操作符(In、 NotIn、 Exists、DoesNotExist、 Gt、 Lt),而不限于对节点 labels 的精确匹配。另外,Kubernetes 支持两种类型的选择器,一种是 “ hard(requiredDuringSchedulingIgnoredDuringExecution)” 选择器,它保证所选的主机满足所有Pod对主机的规则要求。这种选择器更像是之前的 nodeselector,在 nodeselector 的基础上增加了更合适的表现语法。另一种 “ soft(preferresDuringSchedulingIgnoredDuringExecution)” 选择器,它作为对调度器的提示,调度器会尽量但不保证满足 NodeSelector 的所有要求。

(5) InterPodAffinityPriority : 通过迭代 weightedPodAffinityTerm 的元素计算和,并且如果对该节点满足相应的PodAffinityTerm,则将 “weight” 加到和中,具有最高和的节点是最优选的。

(6) NodePreferAvoidPodsPriority(权重1W) : 如果 Node 的 Anotation 没有设置 key-value:scheduler. alpha.kubernetes.io/ preferAvoidPods ="...",则该 node 对该 policy 的得分就是10分,加上权重10000,那么该node对该policy的得分至少10W分。如果Node的Anotation设置了,scheduler.alpha.kubernetes.io/preferAvoidPods= "..." ,如果该 pod 对应的 Controller 是 ReplicationController 或 ReplicaSet,则该 node 对该 policy 的得分就是0分。

(7) TaintTolerationPriority : 使用 Pod 中 tolerationList 与 Node 节点 Taint 进行匹配,配对成功的项越多,则得分越低。

另外在优选的调度规则中,有几个未被默认使用的规则:

(1) ImageLocalityPriority : 据主机上是否已具备 Pod 运行的环境来打分。ImageLocalityPriority 会判断主机上是否已存在 Pod 运行所需的镜像,根据已有镜像的大小返回一个0-10的打分。如果主机上不存在 Pod 所需的镜像,返回0;如果主机上存在部分所需镜像,则根据这些镜像的大小来决定分值,镜像越大,打分就越高。

(2) EqualPriority : EqualPriority 是一个优先级函数,它给予所有节点一个相等的权重。

(3) ServiceSpreadingPriority : 作用与 SelectorSpreadPriority 相同,已经被 SelectorSpreadPriority 替换。

(4) MostRequestedPriority : 在 ClusterAutoscalerProvider 中,替换 LeastRequestedPriority,给使用多资源的节点,更高的优先级。计算公式为:(cpu(10 sum(requested) / capacity) + memory(10sum(requested)/ capacity)) / 2

感谢各位的阅读!关于“Kubernetes Scheduler有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Kubernetes Scheduler有什么用

本文链接: https://lsjlt.com/news/231838.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Kubernetes Scheduler有什么用
    这篇文章给大家分享的是有关Kubernetes Scheduler有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先来过一下KubernetesScheduler的基本功能KubernetesSchedul...
    99+
    2023-06-03
  • kubernetes中的Scheduler原理是什么
    本篇文章为大家展示了kubernetes中的Scheduler原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一: 简介1.Kubernetes  scheduler在整个系统中承...
    99+
    2023-06-04
  • kubernetes中Harbor有什么用
    这篇文章主要介绍了kubernetes中Harbor有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:简介Harbor是一个用于存储和分发Docker镜像的企业级Re...
    99+
    2023-06-04
  • kubernetes中NetworkPolicy有什么用
    小编给大家分享一下kubernetes中NetworkPolicy有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一: 简介 1.Kubernetes的一个重要特性就是要把不同node节点的pod连接起来,...
    99+
    2023-06-04
  • kubernetes中TLS bootstrapping有什么用
    这篇文章主要介绍了kubernetes中TLS bootstrapping有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一: 前言当集群开启了 TLS 认证后,每个节...
    99+
    2023-06-04
  • Kubernetes中yaml文件有什么用
    小编给大家分享一下Kubernetes中yaml文件有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!YAML 基础YAML(Yet Another Mark...
    99+
    2023-06-19
  • docker和kubernetes有什么区别
    Docker和Kubernetes都是用于容器化应用程序的工具,但是它们有不同的功能和用途。 Docker是一种容器化引擎,用于创建...
    99+
    2024-04-08
    docker kubernetes
  • Kubernetes pod里的pause-amd64容器有什么用
    这篇文章主要介绍“Kubernetes pod里的pause-amd64容器有什么用”,在日常操作中,相信很多人在Kubernetes pod里的pause-amd64容器有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-04
  • Kubernetes中StatefulSet和Deployment有什么区别
    StatefulSet和Deployment是Kubernetes中用来管理应用程序的两种资源对象。它们之间的主要区别在于它们对于应...
    99+
    2024-04-02
  • Oracle Scheduler中的repeat_interval怎么用
    小编给大家分享一下Oracle Scheduler中的repeat_interval怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解...
    99+
    2024-04-02
  • Kubernetes特别属性的标签Label有什么作用
    今天小编给大家分享一下Kubernetes特别属性的标签Label有什么作用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前...
    99+
    2023-06-29
  • hadoop Yarn调度器Scheduler的特点是什么
    这篇文章主要讲解了“hadoop Yarn调度器Scheduler的特点是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hadoop Yarn调度器Scheduler的特点是什么”吧!概...
    99+
    2023-06-03
  • kubernetes中API是什么
    这篇文章给大家分享的是有关kubernetes中API是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:体系结构二:说明Kubernetes API是集群系统中的重要组成部分,Kubernetes中各种资源...
    99+
    2023-06-04
  • kubernetes中Service是什么
    这篇文章主要为大家展示了“kubernetes中Service是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes中Service是什么”这篇文章吧。一:Service概念K...
    99+
    2023-06-04
  • kubernetes中Pod是什么
    这篇文章主要介绍kubernetes中Pod是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:Pod 是什么Pod是Kubernetes的最重要最基本的概念。它是能够被创建,调度和管理的最小部署单元。一个Pod...
    99+
    2023-06-04
  • Kubernetes和Docker是什么
    小编给大家分享一下Kubernetes和Docker是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是Docker虽然,我们一直在谈论容器,探讨基于容器的...
    99+
    2023-06-04
  • Vue中Watcher和Scheduler的实现原理是什么
    这篇文章主要介绍“Vue中Watcher和Scheduler的实现原理是什么”,在日常操作中,相信很多人在Vue中Watcher和Scheduler的实现原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-21
  • React调度系统Scheduler工作原理是什么
    这篇文章主要介绍“React调度系统Scheduler工作原理是什么”,在日常操作中,相信很多人在React调度系统Scheduler工作原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React调度...
    99+
    2023-07-05
  • kubernetes中kube-dns是什么
    这篇文章将为大家详细讲解有关kubernetes中kube-dns是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:前言kube-dns是Kubernetes中的一个内置插件,目前作为一个独立的开源...
    99+
    2023-06-04
  • kubernetes中什么是Service Mesh
    这篇文章主要为大家展示了“kubernetes中什么是Service Mesh”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes中什么是Service Mesh”这篇文章吧。一:...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作