看腾讯如何提升 Kubernetes 集群利用率?( 三 )
文章图片
当平台规模较大或在线、离线业务均具有的情况下 , 一般都需要使用在离线混部的方式提升资源利用率 。

文章图片
其实现逻辑较为简单:当集群资源充足时 , 动态地将离线任务调度到空闲节点上;当节点资源接近高负载阈值时 , 优先驱逐离线任务 。
负载提升和稳定性优化通过各种手段提升集群利用率的同时 , 也会带来相应的负面问题:
引起Node节点高负载 , 影响服务质量;Node节点负载不均;剩余剩余资源不足导致Pod横向度失败 。
针对以上负面问题 , 通常需要使用扩容及稳定性相关的手段来解决 。
第一 , 两级扩容机制 。

文章图片
HNA:当集群负载(装箱率)达到阈值(如85%)时 , 会触发节点自动扩缩容 , 来增加Node节点;
超级节点:当工作负载引发大量扩容、集群资源不足而导致Pod突增时 , 利用超级节点(通过VirtualKubelet加入集群的虚拟Node)直接将Pod扩容到VirtualKubelet节点上 , 超级节点的底层直接使用腾讯云公有云资源池创建弹性Pod 。
第二 , 两级动态超卖 。

文章图片
通常情况况下 , Pod压缩与Node超卖两种手段需同时使用 。 Pod压缩已实现从静态到动态的优化 , 其压缩比(Request/limit)可以根据历史状态进行动态修改 。
同样 , Node超卖也实现了由静态向动态的升级 , Node节点可以根据实时负载进行动态调整 , 以防止节点负载过高 。
第三 , 动态调度 。
动态调度机制可以实现保证Node节点的资源均衡 , 避免不同Node节点负载不均的现象 。

文章图片
上图可以看到 , 原生调度为静态调度且Node2空闲资源较多 , 那么根据静态调度策略 , 会将新的Pod调度到Node2节点中 。 但经过动态调度的算法优化 , 实际上会将Pod调度到Node1节点上 , 这是什么原因呢?
这是因为Node1节点的真是利用率更低所致的 , 将Pod调度至Node1上会提高Node的Pod利用率 , 进而使各节点的平均负载相近 。

文章图片
上图是动态调度机制的原理 , ExtendNodeScorer会根据不同时段的信息参数对Node进行打分 , Kube-scheduler调度器可获取这些参数信息进而将新增Pod调度至实际内存使用更低的节点上 。
第四 , 动态驱逐 。

文章图片
当Node负载不均或Node利用率过高时 , 大概率会对节点上运行的Pod资源产生影响 。 这种情况下 , 我们可以根据节点当前的状态信息以及节点上Pod的实际利用率对Pod进行动态驱逐 。 这里的参考维度是多样的 , 一般包括:CPU、Memory、FD、Inode等 , 且不同业务针对参数的权重与指标也存在差异 。

文章图片
上图是某一在线业务集群的状态 , 可以清晰看到在经过超卖及压缩后 , 该集群的节点平均利用率可达38.7% 。

文章图片
节点负载分布(未采用动态调度及动态驱逐)
文章图片
节点负载分布(采用动态调度及动态驱逐)通过以上两图对比 , 我们可以看到:在未采用动态调度及动态驱逐时 , 节点负载不均衡同时方差值较大 。 而在采用了动态调度及动态驱逐后 , 节点负载便会趋于稳定 , 异常Node数目减少 , 资源利用率得到有效提高 。
- 12月13日消息|腾讯qqmacos版6.8.9更新:支持全局搜索能力
- 腾讯云智能打法首揭秘!4条快速路让AI“开箱即用”
- cctv13新闻频道在线直播观看 cctv13新闻频道在线直播观看平安健康
- 贝尔金推出了一款65W双口氮化镓充电器|一款小小充电器近300元用料如何?贝尔金65W氮化镓快充拆解
- 腾讯 QQ macOS 版 6.8.9 更新,支持全局搜索能力
- iPhone|雷军希望的超越苹果做到了!近8成网友认为小米13比iPhone 14 Pro好看
- 由于注射器是临床和药物注射的关键医疗器械|一次性使用无菌注射器活塞滑动初始力和平均力如何检测?
- 如何将mp4格式转换成别的视频格式?
- 如何把录音转换成mp3格式?
- 如何利用电脑录制网页?
