【云原生】谈云原生,不得不谈的容器

末蓝、 2023-10-01 22:20 78阅读 0赞

目录

云计算革命

云计算带来的新问题

什么是容器

容器带来的其他问题

容器中的重要概念


谈起云原生,就不得不谈起容器。容器技术可谓是当下IT行业最炙手可热的技术之一,在云原生的技术大家庭里占有着举足轻重的强势地位,给软件开发带来了革命性的变化并助推微服务转变着整个行业。

那么容器到底是一项怎样的技术呢?不妨让我们先回到云计算掀起革命的年代。

云计算革命

想象一个十分十分巨大的机房,里面存放了数以千计的服务器。这些服务器和普通的笔记本电脑一样,有 CPU 、有硬盘、能上网,而这些分别对应着服务器的计算资源、存储资源和网络资源。

bb9be98caa02f7d99004db28e01dd7c5.png

数据中心

数据中心的人需要对这数以千计的服务器进行统一的管理,按照客户的需求,随时随地提供客户想要的资源。比如某个人当下需要一台很小很小的电脑,只需要有一个 CPU,1G 内存,10G 的硬盘,和一兆的带宽。

bdf135d82c6da0eefe3c0e320bd961bb.png

一个人向机房呼喊:我要…

而为了满足用户这一需求,经过了漫长时间的发展。在过去的十多年,我们通过云计算解决了计算机基础设施——计算、网络、存储资源——的弹性问题,此外基础架构资源的管理效率得到了大大的提升。比如说通过云平台,我们几分钟之内就可以获得一个可用的虚拟机。

但就在云计算取得巨大成功的同时,随之诞生了新的问题。

7782b2149936a2a08ef97b98fb3d9c98.png

接踵而至的新问题:扩展难、迁移难

云计算带来的新问题

首先是应用的扩展问题。拿大型电子商务应用为例,平台上的流量有高峰也有低谷,双十一期间平台上有大量流量疯狂涌入,这个时候就需要大量扩展应用。利用云计算平台,我们可以简单快速地获得想要的虚拟机,但是也仅仅只是虚拟机罢了。操作系统、应用以及应用依赖的环境还需要人为手动地去一台台部署,而这个过程是相当繁琐的,需要耗费大量时间。

再一个就是应用的迁移问题。应用往往会涉及到运行环境的迁移变化,比如从开发人员的电脑迁移到测试服务器、从物理服务器迁移到云上、还有依赖的运行库版本的变化和操作系统的变化。这些环境的迁移往往会导致应用部署失败。

这两大问题本质上都是应用部署效率低下的问题 。可以看到,基础资源管理的高效与应用部署的低效之间有着巨大的鸿沟。虽然我们可以快速获得基础资源,但是应用却因为繁琐的部署而没办法快速使用这些资源。

590ade38b45d1eb2eed05090e6af3d29.png

基础资源管理与应用部署的效率落差

正如木桶效应所反映的,应用部署的低效最终拉低了整体的效率。

de04f4c3ac741dff0f60f32aba541008.png

那么容器是怎样的一门技术?又是如何解决这一问题的呢?

什么是容器

容器定义了一种文件格式,叫容器镜像。通过镜像,我们可以提前把应用和它所需要的配置还有依赖的组件,以及部署的时候所需要做的动作提前定义成模板。然后在每一台机器上部署一个叫作容器引擎的软件。容器引擎通过读取镜像生成容器实例来运行我们的应用程序。

9908075696c89b144d55c23c7ad762ea.png

容器的工作模式

容器轻而易举解决了扩展难的问题。因为有了容器镜像作为模板,因此容器已经可以非常轻而易举的启动若干个应用实例,也因此应用的部署变得前所未有的简单。以前可能需要花一两个小时完成的应用的部署和扩容,现在几分钟之内就可以完成。

此外容器也解决了迁移难的问题。有了容器,应用和所需要的依赖被打包成一个整体,那么应用部署的整个过程都不需要关心安装环境和依赖。容器让各类应用都支持一套标准的运作模式,只要安装了容器引擎的服务器都可以运行。容器的英文单词是 Container ,更为贴切的翻译其实是“集装箱”,容器的这一特性就好比港口运输的集装箱。大大小小不同的货物被装在外观无差异封闭的集装箱中,运输人员无需关心集装箱内部的不同货物,只需把集装箱当做一个封闭、无差别的独立个体,进行装载,卸货,堆放,运输,整个过程中集装箱保持封闭状态直到被运送到目的地。从轮船到火车,再到卡车运输,都可以利用起重机对集装箱进行操作,实现流程的自动化,从而以非常廉价的方式,有效解决了不同类型货物在长距离运输中的问题。

07e48ff7ea068afb6982db3222c5edb8.png

容器好比规格统一的集装箱

容器巧妙解决了部署的问题,接着又迎来了新的问题。

容器带来的其他问题

应用大规模分发问题

现实中我们往往要把应用部署到众多服务器上,如何将应用有效便捷分发给需要的用户呢?为解决这一问题,容器借鉴手机应用商城的概念,引入了“容器镜像仓库”。开发人员将开发的应用打包成容器镜像,上传到容器镜像仓库,需要该应用的用户便可以从镜像仓库拉取该镜像,再通过本地安装的容器引擎,将镜像实例化,从而运行程序。

管理问题

当容器和服务器的数量达到一定规模,应用部署还涉及到一个管理的问题,即如何有效管理大量的服务器和容器,保证应用的稳定运行、方便升级和故障的快速解决。我们不可能人工对每一台机器上的容器引擎和实例进行管理,而需要一个集中的管理方案,这就是为什么容器编排的概念会出现。通过容器编排,我们可以在一个平台上管理成千上万的容器的主机,以及运行在这些机器上面的容器应用。

容器中的重要概念

从上述内容里,我们已经初步了解到了容器技术的几大重要概念:容器镜像、镜像仓库、容器引擎、容器实例、容器编排。接下来不妨从不同角度深入解读这些概念。

基础架构的角度:

4947c2689b994a928147ac001e77ba00.png

  • 容器镜像本质上是具有特别格式的压缩文件。
  • 容器镜像仓库相当于一个文件服务器,实现镜像的上传和下载。
  • 容器引擎是个轻量级的虚拟化工具,它利用操作系统内核的能力,构建出隔离的应用环境,也就是容器实例。
  • 容器实例是一个受控的进程,它的资源,比如说 CPU 、内存、进程、网络、存储访问等,都受到了管控。
  • 容器编排是一种资源的调度器,它管理了大片的机器资源,并根据用户的需求找到合适的机器的资源来运行应用程序。

应用的角度:

373a4c7c629158bda05c7285cd6bc8d3.png

  • 容器镜像相当于一种应用交付件格式,这种交付件格式除了包含应用程序,还包含了应用所需要的配置,以及依赖的组件。
  • 容器镜像仓库实现应用的分发。
  • 容器引擎和容器实例为应用提供了运行的环境。
  • 容器编排应用是用于管理应用生老病死的整个生命周期。

容器技术极大提升了部署的效率,有效地解决了应用扩展难、迁移难的难题。但在这些优势之外,容器也有着隔离性差、持久存储必须依赖外部存储设备的局限性,此外在容器管理层面也带来了不小的挑战,但是容器必定是未来势在必行的有效交付方式,有着无可限量的发展前景,为开发管理带来巨大的好处。

发表评论

表情:
评论列表 (有 0 条评论,78人围观)

还没有评论,来说两句吧...

相关阅读

    相关 原生技术概

    云原生技术概谈 说起“云原生技术”,大家可能有点懵,只闻其声,不明其意。但是云原生背后典型的几个公司或者技术产品的名称可能大家经常听到: 比如容器技术的代表公司dock

    相关 原生系列】原生安全

    随着云计算的快速发展和数字化转型的推进,云原生技术已经成为许多企业的首选。云原生是一种构建和运行应用程序的方法,它利用云计算的弹性和可扩展性,借助容器化、微服务架构和自动化管

    相关 理解原生

    讲述云原生的基本概念 云服务的优势,弹性、分布式 云原生计算基金会总经理Priyanka Sharma对云原生的解释为:云原生技术是指工程师和软件人员利用云计算构建更

    相关 原生

    什么是云原生? 云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之