简介
- 为方便理解与对比K8S集群运行在裸金属和VM的场景,下面引入原理流程图,再从多个维度进行分析,最后客观权衡各自利弊,量体裁衣
一、裸金属与VM刨析
二、K8S集群运行在裸金属和VM的对比
物理层:
一、管理
- 由于裸金属的配置都是非常高级,所以管理裸金属的数量相比虚拟机大大减少
- 在大型虚拟化基础设施中,管理员需单独管理每个虚拟机,非常繁琐和耗时,较难治理。因此裸金属的管理比虚拟机简单
二、调度
- 虚拟机可以热迁移调度,灵活性比裸金属强
三、可用性
- 裸金属发生故障时,还能够提供持续的可用性,不可逆的故障除外(系统损坏)
- 虚拟机故障时,故障解决之前虚拟机可能处于停机状态
四、性能
- 裸金属性能高,资源开销小,没有抽象层
- 虚拟机性能较差,资源开销大,虚拟机之间存在互相竞争资源情况。因此裸金属性能比虚拟机强
五、监控
- 裸金属相对数量较少,监控的效率提高
- 虚拟机数量较多,监控比较耗时
六、系统可靠性
- 裸金属操作系统直接运行在硬件上,减少了可能发生故障的层级与组件
- 虚拟机运行在主机操作系统之上,处于抽象层,故障率相比裸金属会有所提高
七、扩展能力
- 裸金属扩容硬件需关机维护,不够灵活
- 虚拟机可动态分配资源灵活扩展,但可能导致资源超售现象,引发性能问题,虚拟机之间资源争用
八、资源利用
- 裸金属的资源分配是静态的,会出现资源闲置的情况
- 多个虚拟机共享同一台物理服务器的资源,利用率更高
九、安全性
- 由于各个虚拟机的资源都是互相隔离,所以可以通过虚拟机层面进行安全完善,降低安全风险
- 裸金属内的大量容器或应用程序都是共享同一个内核操作系统,可能通过共享内核影响其它裸金属操作系统。因此安全方面的治理,虚拟机优于裸金属
十、稳定性
-
裸金属稳定性,直接访问物理硬件资源,没有虚拟化层介入,硬件资源独享,没有虚拟化的开销,较少的软件层减少了可能出现的软件故障和性能损失的风险
-
虚拟机稳定性,虽然在隔离性和备份恢复方面具有优势,但在性能方面会受到虚拟化层的影响
-
因此裸金属服务器在稳定性方面更具有优势,并且可以提供更高更稳定的性能
十一、数据可靠性
- 虚拟机使用Ceph等共享存储作为系统盘或数据盘,可以灵活跨服务器热迁移;数据可靠性取决于虚拟化平台与Ceph的兼容性,还有网络链路传输的效率,其它外在因素如(停电、设备故障等),以上这些因素会提高磁盘数据损坏的概率。(超融合Ceph可降低虚拟机数据损坏的概率,因为无须跨网络链路传输,物理服务器会在自身的操作系统内核进行操作,但又会引发其它性能问题导致稳定性降低)
- 虚拟机使用本地盘,不能灵活跨服务器热迁移;数据可靠性取决于物理服务器的磁盘规划,比如软RAID和硬件RAID,由于不需要跨网络链路传输,所以会降低数据损坏的概率,其它外在因素除外(停电、设备故障等)
- 裸金属使用本地盘,硬RAID组合或软RAID组合,扩容灵活性没有虚拟机高,裸金属为数量少但重量级,虚拟机为数量多但轻量级;但由于少了虚拟化层,都是直接独享硬件资源,数据可靠性都较高。虚拟机虽可以快照备份,但数量太多,备份占用的空间翻倍,成本可能较高。综合以上情况,结合成本考虑,裸金属的数据可靠性应比虚拟机更有优势
十二、成本与资源投入
-
裸金属:硬件、操作系统、K8S集群、集群管理云平台等
-
虚拟机:硬件、虚拟化平台、虚拟机操作系统、K8S集群、集群管理云平台等
-
虚拟机人力成本投入大,裸金属硬件成本投入大;较难评估,具体要根据硬件配置和数量、架构场景等综合情况
应用层:
一、K8S集群运行模式综合考量
- 二进制模式,各个组件解耦出来,使用system托管运行,需要针对实际业务场景,自定义各组件参数和优化,不断调优出适合自身的集群;灵活度、复杂度、性能、运维难度较高
- kubeadm或RKE2模式,各个组件封装成POD运行,后期调整各组件参数可能会涉及整个集群;灵活度、复杂度、性能、运维难度较低
- 综合以上情况,中小型集群规模推荐kubeadm或RKE2模式,中大型集群规模可考虑二进制模式,不管哪种模式,性能与稳定性都是运行在裸金属更有优势
二、worker节点扩展效率
- 裸金属需要准备硬件、上架,以及安装操作系统等操作,扩展节点较为耗时
- 虚拟机只需克隆、新增节点等操作,流程较少,效率较高
三、K8S集群在裸金属和VM的承载能力
- 运行在裸金属的K8S集群各方面承载能力较强,节点数量少,单节点POD多资源开销大,对于K8S集群各个组件的压力巨大,可能会提高故障概率,例如:高延迟、丢包、内核资源泄漏、Api-Server错误率提高,需要根据实际情况不断调整。性能高、稳定性强
- 运行在虚拟机的K8S集群各方面的承载能力较弱,节点数量多,单节点POD少资源开销小,对于K8S集群各个组件有效分摊均衡了压力,但由于是虚拟化层,也会提高其它故障概率。灵活性高、资源利用率高
- 综合以上情况,运行在裸金属的性能、稳定性更有优势,但硬件成本比虚拟机高
四、每台worker节点承载POD数量
- 在裸金属节点,能够承载大量的POD,具体数量要以实际的资源开销而定,但整体的空闲资源会比虚拟机多
- 在虚拟机节点,承载的POD数量相对较少,但空闲资源会较少,POD数量越少越可控,但节点数量也会增加
五、worker节点故障最小影响范围
- 裸金属承载的POD数量较多,因此节点故障时,影响范围也是较大的。但也不是不可避免,可从POD多副本+健康检测机制+HPA自动伸缩,三种方式来治理,降低节点故障时的影响范围
- 虚拟机承载的POD数量较少,因此节点故障时,影响范围较小
六、K8S集群灾难恢复速度
- 灾难恢复在裸金属和虚拟机的操作都是一样,取决于K8S集群的部署模式,在二进制模式只需执行etcd恢复命令,操作较为简单、速度较快。但由于二进制难度较高,可能引发其它因素的故障
- 在kubeadm或RKE2模式,由于组件是嵌入式,恢复步骤较多、灵活性较低,所以恢复速度相对较慢。但无需干预太多组件,同时降低了其它因素的故障率
- 综合以上情况,不管哪种部署模式,在虚拟机的恢复速度最快,因此推荐把master节点运行在虚拟机,worker节点运行在裸金属
总结:
裸金属 | 虚拟机 | |
---|---|---|
管理 | √ | |
调度 | √ | |
可用性 | √ | |
性能 | √ | |
监控 | √ | |
系统可靠性 | √ | |
扩展能力 | √ | |
资源利用 | √ | |
安全性 | √ | |
稳定性 | √ | |
数据可靠性 | √ | |
K8S集群运行模式综合考量 | √ | |
worker节点扩展效率 | √ | |
K8S集群在裸金属和VM的承载能力 | √ | |
每台worker节点承载POD数量 | √ | |
worker节点故障最小影响范围 | √ | |
K8S集群灾难恢复速度 | √ |