容器云应该部署在裸机上,还是虚拟化环境里?
来自twt社区同行交流,欢迎更多同行参与交流
容器云应该部署在裸机上,还是虚拟化环境里?
问题来自社区会员,下文来自twt社区众多同行实践经验分享,欢迎大家参与交流,各抒己见。
@Garyy 某保险 系统工程师:
应该部署在物理机还是虚拟机上?这是架构设计时一定会讨论的一个问题,从容器云的架构设计来看,没有绝对的谁更好的答案,物理机或虚拟化平台均可以,前面也说到了,其核心组件 Kubernetes 将基础设施抽象的更为极致,所以要综合企业自身基础设施建设现状和内部制度流程等综合因素权衡。
如果之前已经有了 IaaS 平台建设,并且已经有成熟的运维规范和配套工具,那么就部署于IaaS 之上,享受 IaaS 建设的红利。融入了自助服务、内部流程审批、应用软件安装等自动化流程及规范,且 IaaS 平台有一些对于运维人员爱不释手的功能——热迁移、快照、HA、快速创建虚拟机等,IaaS 平台在易管理性和资源弹性上相比物理机还是有优势的。
如果没有现成的 IaaS 建设,那么首选物理机,没有必要再去投入人力去设计 IaaS 基础设施, Kubernetes 原生解耦了基础设施的依赖,提供了智能调度和高可用能力,针对物理机去定制一些满足自身的管理功能和运维的自动化手段也是理想之选,毕竟建设一套适合自身企业需求的 IAAS 本身也是个巨大的工程,而且少了一层虚拟化,从架构来看更为清晰简洁,故障处理时理论上的故障点也会少些,虚拟化层的性能损耗也不用考虑了。
如果体量体量较大,可以忽略爆炸效应对业务的干扰,同时规避雪崩效应。
@晓风 光大科技 研发工程师:
裸机服务器的优点包括:
更高的性能,因为没有系统资源浪费在硬件模拟上;充分利用所有机器资源,高需求期间无闲置;更简单的管理,因为主机、网络和磁盘等硬件基础架构更少。
裸机服务器的不足:
物理机的扩容成本比较高,效率低。
如果运行在物理机上,那么资源会最大程度的得到利用,但是会牺牲一定的隔离性及安全性,特别是在企业没有规范的CI/CD镜像交付流程时,不同租户的容器会相互影响。
虚拟机则具有以下优点:
通过在服务器之间传输虚拟机映像,轻松实现在主机间移动应用程序;不同虚拟机中运行的应用程序实现隔离,不仅有助于安全,也能降低管理复杂度。通过在同一类型虚拟机上部署所有应用程序,即使底层服务器是异构的,也能实现软件环境的跨平台一致性。
但是虚拟机也有一些缺点,包括:
服务器资源可能未完全使用。
如果运行在虚拟机上,那么隔离性和安全性都会强于前者,但是会增加管理虚机的成本,以及降低资源利用率。
如果企业已经有了一个比较稳定的虚拟机平台,而且运维经验也有了的话,建议还是虚拟机部署。
具体方案需要结合企业的实际需求进行选择。
@chinesezzqiang 信息技术经理:
容器云作为另外的一种虚拟化方式,可以部署在裸机上,也可以部署在虚拟化环境里。
部署在虚拟机的优势:
1.资源复用,节约空间;
2.支持各种虚拟化特性和优势,如快照、快速回滚等;
3.支持快速推广和应用,扩展能力强;
部署在虚拟机的劣势:
1.性能不及物理机性能;
2.底层资源共享使用,增加安全风险;
3.多应用同时运行,易造成性能争抢;
部署在物理机的优势:
1.资源独享,性能充沛;
2.降低应用的延迟,提高访问性能;
3.无共享,安全性高;
部署在物理机的劣势:
1.问题出现后,难以回滚;
2.硬件升级复杂,如升级硬件的CPUMEMDISK等;
3.维护成本较高,需采购大量设备,资源浪费。
@leop1229 博云(苏州博纳讯动) 产品负责人:
初期我们很多客户采用虚拟机,主要原因是小规模试用情况下,虚拟机容易申请、获取和管理。
慢慢大规模应用了,用物理机的就多了起来,主要原因是少了一次虚拟化,性能更好;架构更简洁,故障点更少。除了计算能力的性能损耗,网络层面的性能损耗也很明显,不管是用Underlay网络还是用overlay网络,总之都是两层网络虚拟化,带来的无谓损耗还是比较大的。
@summit 城商行 系统架构师:
选择物理机还是虚拟机,我觉得都行,主要还是根据自己单位建设的规模和使用的应用范围来决定,可以两种结合的使用,针对不同的场景进行划分,没有觉得选择谁更合适。
@swimming03 芯火科技 系统工程师:
前几天听课程说虚拟机和裸机的性能差不多了多少,感觉上有些违反常理,但是,这话是专家说的,前提是你买虚拟化服务要交不少钱。
@大白菜00 亚太财产保险有限公司 系统架构师:
虚拟化和容器本质上都是资源隔离的技术,从用的角度假如您对性能的损耗要求不高,怎么搭建都可以,性能上裸金属肯定是更有优势,用虚拟化也不是没有好处,起码管理上是方便的,这方面看看裸金属和虚拟化的优劣对比就好了,主要区别应该还是体现在性能上。
@顾黄亮 苏宁消费金融有限公司 技术总监:
首先有一点可以肯定的是,官方没有直接的描述进行推荐,如果通用化的部署,裸金属和虚拟机都可以部署,如果要使用GPU,部署在裸金属环境比较好,以下通过几个方面进行分析两种方式的优缺点。
1、计算性能和读写性能
毫无疑问,裸金属优于虚拟机, 国外有人做过相关的测试,使用了一台8核32G Amazon EC2 m4.2xlarge 云主机和一台8核32G的物理机进行对比测试,测试的结果是物理机上比云主机上运行Docker,在IO和CPU方面要快25%-30%。
2、数据隔离性
在同一个物理节点,如果存在多租户和跨业务线数据和权限的隔离需求,且对于工作负载无法共享内核或者需要监听相同的端口。在这种情况下,因为虚拟机提供了额外的隔离层,所以是裸金属无法满足的,虚拟机更适合隔离的需求。
3、Devops和工具的集成
对于工具和自动化的集成,绝大多数都是采取接口的方式,系统和应用级的接口输出方式已成为主流,所以这一方面虚拟机更适合。
4、易用性和维护性
虚拟机和物理机的管理,在云管平台的加持下,虚拟机更为优越。容器部署在虚拟机上,资源池更下沉,不用考虑基础架构的网络、服务器和存储的联网方式和架构方案,更不要考虑 硬盘槽位够不够,服务器网口够不够,网线是否布好,交换机口够不够等等,即使可以升配,那升级硬盘还要系统里面重新做raid,升级内存还需要开机箱等等操作。
因此,在以上场景的描述中,如果不考虑特定的场景和性能压榨的问题,虚拟机的部署方式是优于裸金属的。