目录
前言
正文
一、传统虚拟技术面临的挑战
二、容器化的含义
三、容器化的优点
1. 可迁移性
2. 速度快
3. 可扩展性
4. 利用率
5. 故障隔离
6. 安全性
7. 易于管理
8. 便利性
四、容器化的缺点
1. 安全性
2. 编排和数据存储
3. 监控
五、容器化的发展趋势
六、云服务产品实例
总结
粉丝福利
前言
目前,容器化已经成为云计算领域最新的技术趋势,很多人认为,容器化可创建全新、可扩展的云原生应用程序,实现老旧系统的现代化改造。几乎所有的企业都在使用云环境(公有云或者私有云),大多时候采用虚拟机方案,但是传统的虚拟化技术面临一系列挑战。本文将针对容器化技术的发展现状和趋势展开讨论,最后以亚马逊非关系型云数据库 DynamoDB 为例介绍云原生应用程序服务实例。另外,亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。
正文
一、传统虚拟技术面临的挑战
在云原生的大趋势下,传统的虚拟技术已经无法满足最新服务架构和产品技术选型的需要,因此,基于容器化的虚拟机技术逐渐登上了历史舞台,并且在最近几年发展迅猛。
上图是传统虚拟机技术和容器技术一个简单对比情况。 除此之外,传统虚拟技术还面临着哪些挑战呢? 接下来详细介绍一下。
环境不一致,应用程序和软件包部署到虚拟环境,部署环境和开发调试环境不一致。
对操作系统有依赖,部署的应用程序只能在兼容的操作系统上运行。
隔离级别较低,无法提供高于操作系统级别的沙盒机制。
计算粒度不同,无法部署多个复制的应用程序,应用程序层上的负载平衡只能在单台计算机中运行,不能在非操作系统层中运行。
在生产环境中修补应用程序很麻烦,在群集级别系统上部署不是很灵活,而且难以跨多个区域进行管理。
容器化可以非常方便的解决这些痛点问题,容器化比虚拟化的效率更高,是虚拟化的自然演进结果。虚拟化有助于在单个服务器上分发多个操作系统,而容器化则更为灵活,也更精细。接下来具体看一下什么是容器化。
二、容器化的含义
本质上,容器化是操作系统虚拟化技术的一种形式,可以让用户在使用相同共享操作系统的隔离用户空间中运行应用程序。而且对于操作系统的类型也没有限制,包括常见的linux系统、windows系统、mac OS系统。应用程序容器是一个完全打包、可迁移的可执行环境。
应用程序容器具备如下特点:
容器拥有应用程序运行所需的全部内容,包括二进制文件、依赖关系、库和配置文件,所有文件都包含在容器中。
容器化应用程序是指将容器从主机操作系统中提取出来,限制其对基础资源的访问权限,类似于轻量级虚拟机。
容器化应用程序可以在各种类型基础架构和操作系统上运行应用程序,例如裸机、云服务器或虚拟机中,而不依赖具体的运行环境。
另外,容器化还可以减少启动时的开销。容器化的应用程序共享一个操作系统内核,无须为每个应用程序设置单独的访客操作系统。因此,可以在同一台机器上部署多个容器服务,而彼此之间互不影响。
三、容器化的优点
容器化技术允许将应用程序以容器的形式交付给客户、部署并对外提供服务。容器化为软件开发人员和开发团队带来卓越的敏捷性、可迁移性以及优化成本等众多优点。
容器化的应用程序具备如下优点:
1. 可迁移性
应用程序容器包含一个自主的操作系统,因此它并不依赖于主机操作系统,可以随便跨平台迁移,从而也避免了由于运行环境不一致导致的功能异常问题。
2. 速度快
开发人员之所以将容器称为“轻量型”,因为它们共享主机操作系统内核,无须额外开销,可以进一步提高服务器效率,减少服务器和授权许可成本。它们不必引导操作系统,因此可以显著加快启动的速度。
3. 可扩展性
应用程序容器技术具有高度的可扩展性,从而轻松应对日益增长的工作负载,在容器环境下,开发人员可以随时增添功能、更新服务,不会影响到原始应用程序。
4. 利用率
多个容器化应用程序共享主机的操作系统内核,同时,容器的容量本来就比虚拟机小,启动时间很短,所以支持单个服务器运行多个容器,提高了服务器的效率,同时降低了服务器和授权许可成本。
5. 故障隔离
容器化后,应用程序相对孤立,因此可独立于其他应用程序运行。所以,一个容器出现故障并不会影响其他容器的运行。同时,开发团队能快速找出和更正故障容器内的技术问题,不会造成其他容器停机。
6. 安全性
以容器形式隔离应用程序可防止恶意代码影响其他容器化应用程序或主机系统。您还可以规定安全权限,自动拦截对试图入侵其他容器或限制通信的恶意组件的访问。应用程序隔离可帮助开发人员共享其他功能,而不会产生风险。
7. 易于管理
借助容器编排平台,容器化工作负载和服务的安装、管理和扩展流程均可实现自动化。容器编排可显著简化管理任务,例如推出新的应用程序版本、扩展容器化应用程序或提供监控、日志记录和调试功能。
8. 便利性
容器化允许开发人员可使用同一个环境进行开发和生产,而这之前是 Web 应用程序开发很难办到的,所以容器对于开发人员来说非常方便。
四、容器化的缺点
当然,容器化也不是完美的,它也有一定的局限性。比如在制定和启动容器战略之前就要完成大量的准备工作。虽然,容器化可提高应用程序的灵活性,但它们也带来了其他方面的复杂性。这些复杂性主要体验在安全性、编排、监控等方面。
1. 安全性
相比较传统虚拟机,容器潜在的安全风险更高。容器需要多种级别的安全措施,因为它们有多个层。因此,除了要保护注册表、Docker 后台驻留程序以及主机操作系统,还要保护容器化应用程序本身。
2. 编排和数据存储
使用虚拟化解决方案随附的单一编排程序应对虚拟机(例如,适用于 VMware 的 VMware 编排程序)。不过,如果是容器,就要从 Kubernetes、Mesos 或 Swarm 等编排工具中进行选择。虚拟机的数据存储非常简单,但是容器却异常复杂。对于持久型容器数据,在启动容器时需要映射对应的物理机存储目录,否则容器一旦重启,其中的数据可能会永远消失。
3. 监控
监控容器的性能和安全问题也不容忽视。目前,可以选择使用各种监控工具、外部监控服务以及分析技术。云环境异常复杂,因此需要重视监控安全问题。
尽管存在缺陷,但是容器化依然利大于弊。
五、容器化的发展趋势
目前,很多企业都在大规模使用容器,容器的使用范围也开始有所变化,逐渐从在线业务逐渐向 AI 大数据演进,对 GPU 等异构资源的管理和 AI 任务和作业管理的需求也越来越多。同时,开发人员在考虑如何通过云原生技术,以统一架构、统一技术堆栈支撑更多类型的工作负载,从而进一步降低企业服务的运维成本。
深度学习、AI任务,正是社区寻求云原生技术支撑的重要工作负载之一。针对 AI 计算类任务的特性,在 Kubernetes 核心 Scheduler Framework 的基础上进行了大量扩展和增强,提供了支持 Gang Scheduling、Capacity Scheduling、Binpack 等任务调度策略,提升集群的资源利用率。并与 K8s 社区积极合作,持续推动 K8s 调度器框架演进,保证了 K8s 调度器通过标准的 plugin 机制,可按需扩展出各种调度策略,来满足各种工作负载的调度需求。同时避免了类似其他 custom scheduler 对集群资源分配带来数据不一致的风险。除此之外,支持 GPU 共享调度和拓扑感知调度,NPU/FPGA 等定制芯片调度,提升 AI 任务的资源利用率。
随着容器化技术的普及,很多云服务产品也都开始支持容器化部署。几乎所有的项目中都会用到数据库,接下就以云数据库产品为例进行介绍。
六、云服务产品实例
非关系型数据库 MongoDB,大家一定非常熟悉,另外一个非常有名的非关系型数据库 DBAmazon DynamoDB 也有必要了解一下,两种数据库都支持容器化部署。DynamoDB 是亚马逊云一种全托管 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。DynamoDB 可以免除操作和扩展分布式数据库的管理工作负担,因而无需担心硬件预置、设置和配置、复制、软件修补或集群扩展等问题。此外,DynamoDB 提供了加密静态,这可以消除在保护敏感数据时涉及的操作负担和复杂性。
如果使用 MongoDB 遇到了难以解决的问题,可以考虑尝一下 DynamoDB。关于 DynamoDB 的好处,这里举一个例子,有一位使用过 MongoDB 和 DynamoDB 的网友分享了自己的经验:“我以低效的方式使用了 MongoDB,我有140万条记录,占用8G磁盘,但转移到 DynamoDB 后,只占用300M存储空间。从中可以看到 DynamoDB 对比 MongoDB 存在明显的优势。
总结
综上所述,容器化作为一门热门的技术,已经被广泛使用,并且凭借自身优势还在迅速抢占市场。对技术小伙伴来说,了解和掌握容器化技术已经成为一个加分项。本文通过讨论传统虚拟化技术面临的挑战,引出容器化技术,并介绍了容器化的发展现状、优缺点和未来趋势,最后以亚马逊非关系型云数据库 DynamoDB 为例介绍了支持容器化的云服务产品。相信大家通过本文的介绍,已经对容器化的概念有了一定程度上的认识,如果想深入了解,不妨亲自动手试一试。
粉丝福利
亚马逊云科技专为开发者们打造了多种学习平台:
1. 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。AWS入门_AWS入门使用教程_AWS云计算资源-AWS云服务
2. 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。AWS架构中心部署说明_AWS云架构白皮书-AWS云服务
3. 构建者库:了解亚马逊云科技如何构建和运营软件。Amazon Builders’ Library*all&awsf.filter-content-type=*all&awsf.filter-content-level=*all&trk=835e6894-d909-4691-aee1-3831428c04bd&sc_channel=el
4. 用于在亚马逊云科技平台上开发和管理应用程序的工具包:aws工具下载_aws开发工具_资源下载-AWS云服务
【专属福利】
福利一:100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&sc_channel=el
福利二:最新优惠大礼包,200$数据与分析抵扣券,200$机器学习抵扣券,200$微服务与应用开发抵扣券。最新优惠活动_云服务器促销 – 亚马逊云科技
福利三:解决方案CloudFormation一键部署模版库
云服务解决方案部署快速入门_云服务部署-AWS云服务