K8S集群节点—裸金属与VM优劣对比

K8S集群节点—裸金属与VM优劣对比

Deng YongJie's blog 1,808 2023-10-15

简介

  • 为方便理解与对比K8S集群运行在裸金属和VM的场景,下面引入原理流程图,再从多个维度进行分析,最后客观权衡各自利弊,量体裁衣

一、裸金属与VM刨析

image-20231010104014866

二、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集群灾难恢复速度