作者:大二学生小周
主页:关注学习更多技术
关键:容器技术
软件开发
架构
云原生
大家好,前几篇文章讲解了云计算,微服务的概念,本文讲解容器技术,直接来到容器难免有些突兀,我决定按照时代划分为物理机时代,虚拟化时代以及本文的重点容器化时代,最后将容器化微服务和k8s
串起来,浅谈一下云原生,你会明白,为什么说容器技术的成熟预示着云原生时代的到来?我是小周,周棋洛的周,如果觉得文章写的不错,记得三联支持可怜的博主呀❤️
文章目录
- 物理机时代
- 虚拟化时代
- 什么是容器?
- 容器的优势
- 容器vs虚拟机
- 再看云原生
- 写在最后
物理机时代
在物理机时代,假如我开了公司,半年时间将网站开发完成了,现在要将网站上线,我需要先购买一台服务器,在服务器上安装操作系统,然后在服务器上安装数据库和配置网站环境,接着部署开发完成的网站,完成后可以申请域名,最后就是测试和维护,经过不懈努力,网站终于上线了,然后这一切才刚刚开始。
有一天突然停电了,服务器也停了,网站无法访问404,我找员工花钱缓解了停电对服务器的影响,20000没了。
有一天又突然断网,网站又没法访问了,我没办法只好将服务器托管到机房中,那里断电断网的可能性小很多,但是每个月得多付一些租金,小声bb。
网站成功上线了大半年,用户越来越多,日活量蹭蹭上涨,啊,不要,服务器的CPU烧了,我的心儿碎了,员工说,这换一台服务器就好了,那服务器的重要数据如何转移,我又迎来了诸多挑战。
幸运的是,计算机技术不断发展,已经步入了虚拟化阶段,我赶上了,美滋滋。
虚拟化时代
虚拟化,就是把物理机改造为虚拟机,比如我之前的一台 16G内存8核心CPU
服务器,在使用虚拟化技术前,基本就是一人独占,就算性能不能被跑满,也只能给一个人用,员工说,这不纯纯的浪费吗?我说,小周啊,你去学习一下虚拟化技术看看有什么好处。
于是小周便发奋学习虚拟化技术,他发现使用虚拟化技术,可以把公司服务器由原来的一个人用改造为现在供四个人使用,大家互不影响,相互独立,这样资源利用率大大提高,降低成本,虚拟化中如果物理机坏了,虚拟化技术可以把虚拟机快速迁移到好的物理机上,实现了高可用,容易扩展,内存扩充通过程序控制,比在物理机上操作方便太多……
小周发现,虚拟化技术对公司来说,简直是前所未有的救赎,于是开心的去和老板讲了,老板听了都夸赞,决定开始使用虚拟化技术,最终为公司节约了大量开销以及运维问题,小周也因此得到老板赏识,从此走向人生巅峰。
什么是容器?
先看看维基百科中的解释,容器Container
是一种基础工具,泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输
物品,物体可以被放置在容器中,而容器则可以保护内容物。
这是对容器的通用解释,简单说就是能“装”,那在计算机领域的容器定义是什么呢?
容器是轻量级应用代码包,它还包含依赖项,例如编程语言运行时的特定版本和运行软件服务所需的库。
容器的优势
降低了开销,与传统物理机时代或虚拟机时代相比,容器所需的系统资源更少,因为它们不包含操作系统镜像。
提升了可移植性,在容器中运行的应用程序可以轻松部署到多个不同的操作系统和硬件平台。
容器支持敏捷的 DevOps 工作,无论将容器中的应用程序部署到何处,它们都会按预期正常的运行,以加速开发测试并缩短生产周期。
提高了效率,通过容器,可以更快地部署、维护或扩展应用程序,提升了应用程序开发的效率。
还有很多,需要自己实践慢慢体会了
容器vs虚拟机
容器技术与虚拟化技术存在一些相似之处,但又截然不同。
虚拟机在虚拟机管理程序环境中运行,在此环境中,每个虚拟机都必须在其中包含自己的子操作系统,以及相关的二进制文件、库和应用程序文件。这会消耗大量系统资源和开销,尤其是当多个虚拟机在同一物理服务器上运行时,每个虚拟机都有自己的子操作系统,这时很恐怖的,我们会发现,大量精力以及资源被虚拟化的部署和运行上。
相比之下,每个容器均共享同一主机操作系统或系统内核,非常轻巧,通常只有数 MB
,这意味着容器可能只需几秒钟即可启动,而虚拟机则需要数 GB
和数分种。
特性 | 虚拟机 | 容器 |
---|---|---|
隔离级别 | 操作系统级别 | 进程级别 |
系统资源 | 5~15% | 0~5% |
镜像大小 | GB~TB | kb~MB |
启动时间 | 分钟 | 秒 |
集群规模 | 上百 | 上万 |
高可用策略 | 备份,容灾,迁移 | 弹性,负载,动态 |
再看云原生
如果你看过我之前的云计算,微服务的文章,再把本文读完,你就会理解,为什么说容器化技术的成熟必定会让云原生架构火热。
Docker容器 -> Kubernetes -> 微服务 -> 云原生
有了容器支持,微服务架构得以落地实现, k8s,全称Kubernetes
,是一种可自动实施 Linux 容器操作的开源平台,它让容器应用进入了大规模工业生产。
- 容器化包装:软件应用的进程应该包装在容器中独立运行
- 动态管理:通过集中式的编排调度系统来动态的管理和调度
- 微服务化:明确服务间的依赖,互相解耦
写在最后
读到这里,想必你对云原生架构的认识清晰了不少,其实没有你想的那么复杂,软件开发,有套路的,很多编程思想以及架构都是生活给的灵感或者生活总结的经验,所以,大家一定要好好生活呀!作者能力有限,如果文章写的有差错,还请指出纠正,最后,希望你能打好基础,一步一个脚印,加油吧少年,别忘了三联支持可怜的博主呀,我是小周,周棋洛的周,期待你的关注。