揭开K8S调度算法的神秘面纱

K8S----node节点的调度算法

我在前几期的博客中搭建出了K8S集群,其中只有两个node节点。然而在真正的生产环境中可不止两个node节点,如何合理的分配服务器资源、提高利用率、让整个集群运行的更加稳定使得scheduler这个角色在集群中的地位愈发重要。

一、kube-scheduler的预选(过滤)和优选(打分)

api-server会将创建pod的请求发送给kube-scheduler,并且将pod信息记录在etcd数据库中。之后kube-scheduler会根据预选(过滤)规则,首先过滤掉一部分node节点中的pod,没有被过滤掉的pod可以看做是可以被调度的pod,之后再通过更加严格的规则给剩下的pod打分,这一步也叫作优选。打分最高的pod可以看做被优先分配到pod任务。
在这里插入图片描述

调度流程简介

(一)、创建pod的命令被api-server的api接口接收到。api-server将pod信息存储在etcd数据库中。

(二)、kube-scheduler通过api-server查看有哪些可用的pod。

(三)、kube-scheduler通过一组算法过滤掉一部分不可用的pod或者node节点。

(四)、kube-scheduler再通过更加严格的打分机制对所有的可用pod进行打分。

(五)、通过打分选出分数最高的pod,并将pod进行绑定之后存储在etcd中。

(六)、node节点的kubelet接收到api-server指令进行pod创建。

kube-scheduler的预选(过滤)规则

kube-scheduler首先通过以下规则对所有node节点或者pod进行初步的过滤。
在这里插入图片描述

kube-scheduler的优选(打分)规则

在经过重重过滤之后,剩下的都是K8S集群可用的pod和node节点。之后kube-scheduler会根据另一套规则给每个节点和待分配的pod进行打分。
1.首先可用的node和pod会被打分函数进行打分,分数在0-10分之间。并且每个打分函数还有一个权重值。那么一个可用的node节点最后的总分就是:Σ函数打分*函数的权重值。

列如:node节点总分=(函数1的打分 * 函数1权重值)+......+(函数n的打分 * 函数n的权重值)

2.打分函数即优先级函数的种类:
在这里插入图片描述
这里只介绍了一部分的优先级函数算法,还有许多算法在这里未解释有兴趣的小伙伴可以上网查一下哦。

二、小结

kube-scheduler组件将整个集群资源调配变得很科学。比如该如何分配pod的副本到其他的node节点中,或者如何分配pod使得集群运转的更加高效。此外kube-scheduler还支持第三方的调度器进行扩展,所以是一种插件化的实现。

Kubernetes(K8s)是一种用于容器编排和管理的开源平台,它提供了多维资源调度算法来实现高效的资源管理和利用。 K8s使用多维资源调度算法来平衡集群中所有节点的资源负载,确保每个节点能够充分利用其可用的计算和存储资源。这些资源包括CPU、内存、存储和网络带宽等。K8s通过采集集群中每个节点的资源使用情况,并将其报告给调度策略,从而实现资源的智能分配。 在K8s中,多维资源调度算法主要涉及以下几个方面: 1. 资源分配:K8s通过分配节点上的资源来满足容器的需求。调度器会考虑所有容器的资源需求,并将其分配到合适的节点上。该算法会根据容器的资源请求和节点的可用资源进行匹配,从而避免资源的浪费和不平衡。 2. 负载均衡:K8s通过负载均衡算法将容器分散到不同的节点上,以避免资源瓶颈和单点故障。该算法会根据节点的负载情况和容器的资源需求,将容器分配到最佳节点上,从而实现负载的均衡。 3. 弹性调度:K8s具有弹性调度的能力,可以根据节点的可用资源和容器的优先级,自动对容器进行调度。当集群容量不足或节点发生故障时,该算法可以自动将容器从一个节点迁移到另一个节点上,以确保容器的正常运行。 总之,K8s的多维资源调度算法是为了实现高效、均衡和可靠的资源管理。通过合理分配和调度容器的资源需求,K8s可以最大化地利用集群的资源,并提供高可用性和可伸缩性的应用环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值