通过模拟部署能力评估合适的集群资源配置
背景
在完成产品编排之后,如果想要把产品真正部署到一个环境中去,需要先确定该环境所能提供的服务器资源是否能满足产品部署的资源开销,主要体现在CPU、内存、存储这三个方面。
常规的资源规划流程:
统计产品部署所需的资源开销
盘点可实际利用的主机机型和资源规格
确定所需的主机数量和资源规格配置
验证是否满足部署要求
如果资源评估不准确,可能会导致产品在部署之后才发现因为资源不足导致无法完整运行,最终被迫进行主机扩容,或者裁剪产品资源开销后重新部署,这个过程将会消耗大量时间并可能循环往复,影响整体的部署效率。
难点
对于容器场景下的资源开销,人工评估时,往往会面临以下困难:
统计对象多导致的效率低下:容器场景下资源的占用是以Pod为单位的,一套完整的K8s加上业务应用,往往会涉及数十上百个Pod,靠人为去核算request总和,会存在较大的时间成本而且容易出疏漏。
动态创建Pod的场景难以统计:如果涉及Operator在运行阶段动态创建Pod的场景,会更加难以分析最终稳定运行状态下的资源总开销量。
因调度而产生的资源碎片:K8s的调度机制天然决定了,主机提供的资源很难被分配得干净,每台主机上都多多少少会存在资源碎片,单靠资源总量无法作为环境能满足产品部署的判定依据。
解决方案
将产品在验证环境部署之后,ADP平台将自动统计该产品的实际部署开销,基于该数据,通过平台提供的模拟部署功能,对拟定的节点资源规格进行仿真调度实验,得出实际的部署效果,如果因资源紧张而导致部署失败,可查看调度失败的Pod情况,并随之调整节点资源规格,快速重试(约几秒钟左右),直到得出理想的结果。这个过程大概数分钟时间即可完成。
具体流程如下:
将已编排好的产品在任一验证环境中完成部署
得到详细准确的资源开销数据
拟定一个资源规格配置
开始模拟并得出模拟结果
如果模拟部署失败,可以查看哪些Pod没有被成功调度,调整资源规格配置后重复3~4步骤,直到得出理想的结果。