- 科创好生态孕育“济南好成果”
- 以创新技术夯实“低空之基” 打造可计算的低空空域
- 元宇宙魅力无限中国电信虚实融合创新消费新空间
- 新华基金邓岳:2025年新能源车渗透率有望突破50%关注龙头、出海企业
- 中船科技“搞定”甘肃
联系人:王经理
手机:13928851055
电话:13928851055
邮箱:sgbwre@163.com
地址:广州市天河南一街14-16号华信大夏四楼
不跟风容器技术的真实优、缺点
很多时候有人说 容器云平台更先进,那是因为他们传统的模式做得不好,如果把传统的模式做好,不见得比容器化平台的自动化程度低。)
从构建和部署来说,容器云方案相比Jenkins等方案,优势并不明显,而且jenkins+脚本+插件,可以全方位操控打包过程和服务器,定制化程度比容器平台还高(因为它直接深入到OS内部执行命令,且整个过程集中自动化管理,而容器要在OS内部做操作,一般是在构建镜像时写在Dockerfile中、每个镜像单独管理,有过大规模实施的人都知道,Dockfile功能还是很鸡肋,而且不方便统一管理,很多构建编译过程,大家都倾向于在流水线上去实现,然而新兴容器平台的流水线,通常没有老牌的Jenkins那么成熟,特别是使用开源容器云平台,比如Rancher,很多时候不能满足需求,需要二次开发,相对而言,商业的容器云平台要好一点)。
有利有弊。以前要修改服务器的东西,打补丁等,需要一个个虚拟机去操作,好处是,处理一个立即生效,应用不需要动。使用Docker,好处是只需要更新基础镜像,缺点是要生效,必须更新应用,更新应用意味着要停机重启。
;然后容器技术剩下的优点实际上就是我上面列的那两条。当时根据现有资源估算的结果是,使用容器只需要现有资源的1/4,可以节约75%的服务器成本(那也是因为,传统的虚机CPU和内存的利用率实在是太低!如果能好好管理和利用,实际上节约不到这么多,下面详细说明)。
注意,资源利用率细节,相对于虚拟机,虚拟化Hypervisor层的开销是减少了,但整体并没有一些人说的那么夸张,比如节省75%,这要看具体情况。首先,容器通常是用的最小化操Kaiyun官网中国作系统,而虚拟机用的完整版系统,这样对比是不公平的,如果虚拟机也用最小化操作系统,其实也可以将系统内存控制在50MB以下,而容器如果使用完整版的系统,内存也能达到300MB以上。实际上,我们正式运行的容器,我看了一下,简单Java应用,也使用了2.2G内存,不见得比虚拟机要节省多少(虚拟机,你分配4G内存给它,实际上也不代表它一定独占4G物理内存)。
值得一提,商业化的虚拟化平台,都支持超额分配,比如vSphere5.0+,每个物理内核(cores)最多支持25个vCPU,一个普通服务器有2颗CPU、总物理核数为2*12=24,按常规建议是1:1~1:3之间分配vCPU,可以分出48~144个vCPU,最高可以按1:25比例超额分配,但是在此Dell白皮书中,vCPU:pCPU 指导原则如下:
无所谓,其实CPU通常是足够的,按照1:3分配就够了。内存才是瓶颈,内存分配有3种模式:Limit(上限),Reservation(保留,即私有)和 Shares(共享,即内存不够时,按设置的权重争抢)。很显然,内存是天然支持超额分配的,而且虚拟化平台的内存管理,有许多的优化技术(可参见VMware官方技术文档),应该是很成熟了。
所以,我个人觉得,在相当一个大的物理服务器下,比如256G内存来说,从 极限 资源利用率 来看,Docker占不了多少便宜:假设我部署 48个应用,每个应用线G内存,用Docker部署,操作系统占用50MB,Docker引擎占用100M,实际占用内存约为:48*(4G+50MB)+100MB,而换成虚拟机部署,假设Hypervisor引擎占用500MB,则实际占用内存约为:48*(4G+50MB)+500MB。虚拟机也就多占用了400MB内存而已。有些人可能会喷,用Docker就是要多分配一些应用啊,一个256G的物理服务器,怎么才止48个容器,Docker的场景是那种很微小的应用,一个占用0.5G的,可以分配512个容器!。好吧,就算这样,虚拟化平台难道不可以分配512个虚拟机?据我所知,是可以的(vCPU也就1:10),我阿里云的虚拟机就是1vCPU+1GB内存的,最小的好像是256MB内存,256MB内存的系统,你登录进去看,也还有200多MB的剩余,说明系统本身占用内存才几十MB。这里有篇文章,计算了各种配置的物理机,能够做的最大虚拟机数量:虚拟机服务器经典应用配置方案,可以看到,48核+256G内存的服务器,就可以分配400个左右的“微型”虚拟机。所以,我觉得,从资源利用率角度来讲,Docker和虚拟机差别不大,Docker并不是传说中的那样,一个物理机可以运行1000个容器,我们生产也不会这样做,我亲身实践过,我们也会控制一个物理节点分配容器的数量。但容器有一个潜在的优势,那就是它的管理太方便了,随时启停、随时创建和销毁,所以容器的资源利用更灵活,在频繁启停、创建和销毁服务器的场景中,其资源利用率确实大大高于虚拟机(举个很生动的例子:我们有一个Jenkins自动打包的服务器,如果同时有20个打包任务执行,服务器只有4C+8G配置,性能不够,需要加资源,方案1:创建20个2C+4G的虚拟机
1) 有较高的学习成本(不是针对个人,而是针对整个研发及运维团队)2) 复杂度增加,引入了不少新东西,比如网络层面,引入Calico、Traefik等
容器技术的高资源利用率,标准化和可移植性,是难以抗拒的优点!!以至于为了具备这种优点,而不惜增加人力物力对容器技术的投入。如果公司本身的自动化程度很完善
从长远来看,还是得想办法将容器技术运用起来。最初的应用,可以是和传统的技术进行融合,取长补短。等到对容器技术驾轻就熟之后,且全面胜过传统技术之后,方可深入全面应用。
-
2025-03-16C在云计算时代的角色转变:从传统开发到云原生应用的跨越之旅
-
2025-03-15联想与微软合作 开启软件定义数据中心新篇章
-
2025-03-15Docker 容器化技术深度解析与实践
-
2025-03-15中国联通获Kubernetes存储技术专利:助力数字经济时代
-
2025-03-14云原生与传统架构的对比:企业如何实现无缝迁移?
-
2025-03-14腾讯云推出云原生构建(CNB)多项免费算力资源助力开源协作
-
2025-03-14创维数字(000810)周评:本周跌295%主力资金合计净流出115亿元
-
2025-03-14华为云胡玉海:主机上云加速构筑金融云上新核心