容器化部署技术:从解决痛点到成为云原生核心的进化之路
前阵子跟做了15年运维的老杨撸串,他咬一口烤羊腰,拍着桌子说,这辈子最感谢的技术,就是容器化。换十年前,上线一个Java项目,光是搭JDK版本、配数据库依赖,就能跟开发吵三个小时。本地跑的飞起,服务器上就是起不来,这种鬼话,他听了没有一千也有八百。
传统物理机虚拟机与容器化部署资源占用对比图
你别小看这一点改变,整个研发运维的流程都被重构了。CI/CD能普及,说白了就是容器化给打的底。不然每次构建都要重新配环境,自动化根本跑不起来。
生产环境K8s容器化部署集群架构图
现在很多云厂商都提供了托管的K8s服务,不用自己折腾节点,其实对中小企业很友好。但你得搞清楚,你用容器化是为了提高效率,不是为了赶时髦凑技术栈。别搞反了。
容器化部署技术接下来的几个新方向,值得提前关注
容器化发展到今天,其实已经很成熟了,但依然还有很多新东西在冒出来。
第一个就是轻量Wasm容器。原来的容器是共享宿主机内核,启动怎么也得几百毫秒,Wasm容器把应用编译成字节码,跑在Wasm运行时里面,启动时间能压到几毫秒,资源占用只有原来的几十分之一。现在边缘计算火起来,边缘设备资源有限,Wasm容器简直是为这个场景量身定做的。不少大厂已经在生产环境用了,接下来两年应该会普及开。
第二个就是Serverless容器。原来你用容器,得自己维护节点,不管你用不用,资源都得留着。Serverless容器是按需调度,你有流量的时候才启动实例,没流量就缩到零,按实际消耗付费。对于那种流量波动很大的业务,比如电商大促、营销活动,能省一半以上的成本,还不用自己操心扩容。现在主流云厂商都有这个服务了,我身边已经有不少创业公司全迁到Serverless容器上了,运维都省了。
第三个就是机密容器。容器共享内核的安全问题,一直是金融、政务这些对安全要求高的行业的心头病。现在的机密容器,把容器的运行环境放在一个硬件隔离的飞地里面,宿主机都碰不到容器里面的敏感数据,既保留了容器的便利,又解决了安全问题。现在国内不少银行已经开始试点了,未来合规要求越来越高,这个方向肯定会火。
哦对了,还有容器镜像的压缩和分发,现在也有很多新的技术,比如eStargz,能按需拉取镜像,分发速度能提升好几倍,尤其是大镜像,体验提升特别明显。
不过话说回来,不管技术怎么变,容器化部署技术的核心从来没变过:就是让应用的部署更简单,让资源的利用率更高,让研发运维能少吵架,多干活。对吧?
你不用什么新技术都往自己栈里堆,选适合自己业务阶段的,就够了。
为什么容器化部署技术一出来,就能戳中所有人的痛点?
很早之前,大家用物理机部署,一个机器跑一个服务,资源浪费到姥姥家。后来出了虚拟机,把一台物理机切成好多个虚拟环境,看起来解决问题了对吧?可虚拟机本身就是个完整的操作系统,开机要五分钟,占用几个G的存储,跑个小服务,资源都给系统本身造完了。 说实话,那时候运维的一半时间,都在解决“环境不一致”的破事。 LXC早就实现了操作系统层面的进程隔离,可一直不温不火。直到Docker横空出世,把镜像分层打包这件事做到了极致,才真正把容器化带火了。 你把应用代码、依赖、配置、甚至系统库,一股脑打包成一个镜像,这个镜像就能在任何装了Docker的机器上跑起来。不用改配置,不用装依赖,拿来就用。 太爽了。 原来上线要走三天流程,现在推完镜像十分钟就能起服务。原来开发甩锅环境,现在环境跟代码一起走,锅都没地方甩。
传统物理机虚拟机与容器化部署资源占用对比图
你别小看这一点改变,整个研发运维的流程都被重构了。CI/CD能普及,说白了就是容器化给打的底。不然每次构建都要重新配环境,自动化根本跑不起来。
现在的容器化部署技术,早就不是当年那个打包工具了
最早大家都是单节点跑Docker,服务一多,容器怎么编排?节点挂了怎么办?扩容怎么搞? K8s出来之后,直接把容器化部署拉进了新时代。现在别说互联网大厂,就是传统行业的IT部门,都在往K8s上迁。 去年CNCF发布的行业调查报告,全球生产环境用容器的企业占比超过96%,其中八成以上用K8s做编排。这个渗透率,在基础设施领域真的很少见。 不过话说回来,我见过太多团队走歪了。一上来就要整个高可用多可用区K8s集群,不管业务规模多大,先把架子搭起来。我之前接触过一个创业团队,总共四个开发,两个服务,非要花一个月搭K8s集群,天天折腾监控和日志,产品功能半个月没更新一个。 这不是吃饱了撑的吗? 容器化部署的核心,从来不是你用了多牛逼的工具,而是实现应用的可移植、部署的标准化、资源的弹性调度。你就一两个小服务,用Docker Compose编排,完全够用,成本低还好维护,何苦非要上K8s给自己找罪受?
生产环境K8s容器化部署集群架构图
现在很多云厂商都提供了托管的K8s服务,不用自己折腾节点,其实对中小企业很友好。但你得搞清楚,你用容器化是为了提高效率,不是为了赶时髦凑技术栈。别搞反了。
容器化部署技术接下来的几个新方向,值得提前关注
容器化部署技术接下来的几个新方向,值得提前关注
容器化发展到今天,其实已经很成熟了,但依然还有很多新东西在冒出来。
第一个就是轻量Wasm容器。原来的容器是共享宿主机内核,启动怎么也得几百毫秒,Wasm容器把应用编译成字节码,跑在Wasm运行时里面,启动时间能压到几毫秒,资源占用只有原来的几十分之一。现在边缘计算火起来,边缘设备资源有限,Wasm容器简直是为这个场景量身定做的。不少大厂已经在生产环境用了,接下来两年应该会普及开。
第二个就是Serverless容器。原来你用容器,得自己维护节点,不管你用不用,资源都得留着。Serverless容器是按需调度,你有流量的时候才启动实例,没流量就缩到零,按实际消耗付费。对于那种流量波动很大的业务,比如电商大促、营销活动,能省一半以上的成本,还不用自己操心扩容。现在主流云厂商都有这个服务了,我身边已经有不少创业公司全迁到Serverless容器上了,运维都省了。
第三个就是机密容器。容器共享内核的安全问题,一直是金融、政务这些对安全要求高的行业的心头病。现在的机密容器,把容器的运行环境放在一个硬件隔离的飞地里面,宿主机都碰不到容器里面的敏感数据,既保留了容器的便利,又解决了安全问题。现在国内不少银行已经开始试点了,未来合规要求越来越高,这个方向肯定会火。
哦对了,还有容器镜像的压缩和分发,现在也有很多新的技术,比如eStargz,能按需拉取镜像,分发速度能提升好几倍,尤其是大镜像,体验提升特别明显。
不过话说回来,不管技术怎么变,容器化部署技术的核心从来没变过:就是让应用的部署更简单,让资源的利用率更高,让研发运维能少吵架,多干活。对吧?
你不用什么新技术都往自己栈里堆,选适合自己业务阶段的,就够了。