首页 > 其他分享 >在k8S中,Scheduler作用及实现原理是什么?

在k8S中,Scheduler作用及实现原理是什么?

时间:2024-02-12 10:45:11浏览次数:39  
标签:Node 调度 集群 Scheduler 原理 Pod k8S 节点

在Kubernetes(k8s)中,Scheduler是一个核心组件,它的主要作用是负责集群中的Pod调度。具体来说:

Scheduler的作用

  1. 资源分配:根据每个Pod的资源请求(如CPU、内存),以及节点当前的可用资源情况,选择合适的Node来运行Pod。
  2. 满足约束条件:考虑Pod的调度约束条件和亲和性/反亲和性规则,例如节点标签、区域、拓扑结构等要求,确保Pod被调度到符合其特定需求的Node上。
  3. 服务稳定性与优化:通过预选(Filtering)和优选(Scoring)两个阶段的策略执行, Scheduler不仅确保Pod能够成功调度,还尽可能地优化集群的整体性能和可靠性。

实现原理
Scheduler的工作流程主要包括以下几个关键步骤:

  1. 监听事件:Scheduler会持续监听API Server的事件,一旦有新的待调度Pod或已有Pod需要重新调度时,它将介入并进行调度决策。

  2. 预选阶段(Filtering)

    • Scheduler遍历整个集群的所有Node列表。
    • 对于每一个Node,检查该节点是否满足Pod的资源需求和其他硬性约束条件,如节点标签匹配、容忍度(Taints and Tolerations)、存储容量等。
    • 如果一个Node通过了所有预选策略,则会被加入候选节点集合。
  3. 优选阶段(Prioritizing / Scoring)

    • Scheduler对候选节点集合应用一系列优选策略,为每个节点计算一个优先级分数。
    • 这些优选策略可以包括默认的系统策略(如基于资源利用率的打分)以及用户自定义的策略。
    • Scheduler根据各个节点得到的积分排序,得分最高的节点将被选为Pod的最佳调度位置。
  4. 绑定决策

    • 当确定了最优节点后,Scheduler会在API Server中为Pod创建一个binding对象,将Pod与选定的Node绑定在一起。
    • 调度结果写入etcd,并通知kubelet开始在该Node上启动Pod。
  5. 动态调整

    • Scheduler不断地观察集群状态的变化,并相应地调整Pod的位置,以适应集群资源的实时变化及业务需求。

综上所述,通过上述机制,Kubernetes Scheduler实现了集群资源的有效利用和Pod的智能调度。

标签:Node,调度,集群,Scheduler,原理,Pod,k8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18013723

相关文章

  • 在k8S中,kubelet监控Worker节点资源是使用什么组件来实现的?
    在Kubernetes集群中,kubelet是工作节点上的核心服务,它负责确保Pods及其容器按照预期的状态运行。为了实现这一目标,kubelet依赖于内置的cAdvisor组件来进行资源监控。cAdvisor(ContainerAdvisor)是一个开源的容器监控工具,它集成在kubelet内部,随kubelet一同启动。cAdvisor的主要功能包......
  • 在k8S中,什么是负载均衡器?
    在Kubernetes(k8s)中,负载均衡器是一种网络组件,用于将外部或内部网络流量均匀地分发到一组服务后端的Pod实例上,以确保高可用性、资源利用率以及响应速度。Kubernetes中的负载均衡主要体现在以下几个方面:Service资源类型:Kubernetes内置了负载均衡功能,通过创建Service资源可以实......
  • 在k8S中,各模块如何与API Server进行通信的?
    在Kubernetes(k8S)中,各个模块与APIServer的通信通常通过以下方式进行:RESTfulAPI:KubernetesAPIServer提供了一个统一的RESTful接口用于集群内所有组件之间的通信。任何想要操作集群资源(如Pods、Services、ConfigMaps等)的组件都会通过HTTP/HTTPS调用APIServer的端点......
  • 在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
    在Kubernetes(k8S)中,Scheduler使用两种主要的算法阶段来决定将Pod绑定到哪个worker节点上:预选算法(Predicates)预选阶段的主要目标是过滤掉不满足调度条件的节点。Scheduler会根据一系列预定义的预选策略对所有可用节点进行筛选。这些策略可能包括但不限于:检查节点上的资源是否......
  • 在k8S中,ingress是什么?
    在Kubernetes(k8s)中,Ingress是一种资源对象,它定义了从集群外部到集群内部服务的HTTP(S)路由规则。简单来说,Ingress提供了一种将外部网络请求转发到集群内不同Service的方式,并可以根据URL、主机名或其他HTTP元数据进行路由决策。Ingress控制器是实现这些功能的实际组件,它会监听Ingre......
  • 在k8S中,镜像的下载策略有哪些?
    在Kubernetes(k8s)中,容器镜像的下载策略主要体现在Pod的imagePullPolicy字段上。以下是三种不同的镜像下载策略:Always:默认情况下,如果Pod模板中的镜像标签为latest或者没有指定标签,Kubernetes会默认使用此策略。策略说明:每次创建Pod时都会从镜像仓库拉取最新的镜像版本,即使本......
  • C-递归原理
    递归是什么     函数调用自己本身这种调用过程称为递归递归原理     函数调用本质就是入栈出栈的过程,先入后出;可以假设有一个函数调用链,不过实际使用fun2,fun3,fun4都是fun1     递归实例     可以使用循环的地方通常可以使用......
  • 大白话说明白K8S的PV / PVC / StorageClass(理论+实践)
    本文主要通过大白话说明白PV、PVC的概念和原理,再说说StorageClass的作用,最后通过实践加深理解。先来个一句话总结:PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得可控,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组......
  • 5分钟搞懂K8S的污点和容忍度(理论+实战)
    本文主要快速讲解Kubernetes的污点和容忍度,一句话总结:如果Pod能容忍某个节点上的污点,那么Pod就可以调度到该节点。在K8S中,如果Pod能容忍某个节点上的污点,那么Pod就可以调度到该节点。如果不能容忍,那就无法调度到该节点。污点和容忍度就像谈恋爱的小情侣,你情我愿,女生知道男生的......
  • 10分钟搞懂K8S的亲和与反亲和调度
    本文主要快速讲解Kubernetes的亲和性调度和反亲和性调度,通过理论结合实际的方式,让理解更深刻。首先来个一句话总结:亲和性调度就像关系亲密的闺蜜,你去哪儿我也去哪儿。反亲和性调度就像赌气的两个孩子,赌气永远不在一起玩儿。更多解释和实战详见下文。花10分钟看到最后,你肯定会有......