掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

容器是什么,和Kubernetes是什么关系,为什么对OpenStack很重要?

容器和Kubernetes越来越热,因为它们让开发人员专注于他们的应用程序,而不用担心管理底层基础设施。虽然OpenStack并没有取代AWS,但它显然是开放基础设施领域的一个成功案例。为什么它们对彼此重要,这是你需要了解的。

容器是什么

从2000年开始就开始就有了容器概念,随着Docker 1.0的发布,这一概念在2014年左右开始流行起来,并且成为咆哮的浪潮。

简而言之,容器是一种技术,允许开发人员快速创建现成的独立应用程序,分解组件,可以独立地部署、测试和更新。它还使它们能够创建一个完全功能的开发环境,与其他应用程序或系统组件隔离。

为了更好地理解这种“新”技术的本质,我发现将它与虚拟机进行比较是很有帮助的,所以请耐心等待。

当管理程序使用整个设备时,容器只是抽象操作系统内核。这意味着,容器不需要直接访问物理硬件。通过这样做,它们允许更低的资源消耗和更好的成本效率——这是容器和vm之间的主要区别之一。

我一直听到谣言说,在Docker出现之前,创建和运行容器是可能的,然而,它需要大量的黑客一样的技巧,只不过是一场噩梦。Docker的美妙之处在于,它使容器化变得容易,它可以用一些命令来实现——因此令容器成为潮流。

使用容器的好处

  • 易用性:容器让开发人员、系统管理员、架构师和几乎所有人,在他们的笔记本上打包应用程序,并在任何公共云、私有云、甚至是裸金属上运行它们。这加速了DevOps生命周期,使新服务在任何地方都能快速部署,并最终使所有相关人员的生活更加轻松。

  • 速度和效率:由于容器是在内核上运行的独立代码单元,所以它们非常轻。因此,他们占用的资源更少。当开发人员想要创建并运行一个新的Docker容器时,他们可以在几秒钟内做到这一点,而创建和运行vm可能需要更长的时间,因为他们必须每次都启动一个完整的虚拟操作系统。

  • 模块化和可伸缩性:最后,但同样重要的是,容器可以很容易地将应用程序的功能分解为单个组件。例如,开发人员可能希望在一个容器中运行他的MongoDB数据库,在另一个容器中运行他的RabbitMQ服务器,而他的Ruby应用程序则在另一个容器中。Docker将这些容器链接在一起,创建应用程序,使其在未来更容易独立伸缩或更新组件。

难怪大家都急于尽快采用Docker。但是,如果没有适当的管理系统,它们的好处将无法完全实现。

下面,欢迎来到Kubernetes。

Kubernetes是什么

Kubernetes 1.0在2015年发布,最初由谷歌创建。此后不久,谷歌与Linux基金会合作创建了云计算原生应用基金会(CNCF),并向该组织捐赠了Kubernetes作为种子技术。CNCF的主要目的是推广容器技术。

Kubernetes,也就是K8s,是一个开源的集群管理软件,用于部署、运行和管理Docker容器。它让开发人员专注于他们的应用程序,而不用担心提供它们的底层基础设施。它的美妙之处在于:Kubernetes可以运行在大量的云服务提供商上,比如AWS、GCE和Azure,在Apache Mesos框架的上层,甚至在本地的虚拟机(VirtualBox)。

Kubernetes的关键点是什么呢?

为了更好地理解集群管理器软件的本质,假设您有一个重要的业务应用程序运行在数百个容器的多个节点上。在一个没有Kubernetes的世界里,每当您的团队发布一个新的应用程序特性时,您需要手动更新数百个容器。手动操作需要花费大量的时间,容易出错,错误将对您的业务不利。

Kubernetes旨在自动化部署、缩放和操作应用程序容器。它基本上将密切相关的应用程序容器分类为功能组(“pods”),以方便管理和发现。在pod基础设施的上层,Kubernetes提供了另一层,允许对容器进行调度和服务管理。

容器如何知道要在哪个计算机上运行?Kubernetes检查调度。如果一个容器崩溃了怎么办?Kubernetes创造了一个新的。无论何时你需要推出新版本的应用程序,Kubernetes都会覆盖。它自动化并简化了您的日常事务与容器。

使用Kubernetes的好处

  • 它是可移植的:云本地应用程序开发的理念可以用一个词来概括:“可移植性”。在CNCF的前面,可移植性也是Kubernetes的主要概念:它消除了基础设施锁定,并使开发人员能够在任何基础设施上运行。

  • 它是可扩展的:Kubernetes在操作系统、容器运行时、存储引擎、处理器架构或云平台时提供了选择的自由。它还允许开发人员在Kubernetes API中集成他们自己的应用程序,并通过Kubernetes工具扩展或推出新的创新特性。

  • 它是自愈合的:Kubernetes持续地执行修复,保护您的容器应用程序抵御任何可能影响可靠性的故障。从而降低了操作人员的负担,提高了系统的整体可靠性。它还提高了开发人员的速度,因为开发人员可能花在故障诊断上的时间和精力可以花在开发新特性上。

你好,我的名字是OpenStack,我很不容易共事。

这里有一个简短的回顾:OpenStack是一个开源的云操作系统,用于开发私有和公共云环境。它由多个相互依赖的微服务组成,并为您的应用程序和虚拟机提供了一个生产就绪的IaaS层。

OpenStack的复杂性仍然受到影响,它目前有大约60个组件,也被称为“服务”,其中6个是核心组件,控制着云的最重要方面。云的计算、网络和存储管理、身份以及访问管理都有组件。有了这些,OpenStack项目的目标是为AWS、谷歌云、微软Azure或DigitalOcean等大型云提供商提供一个开放的选择。

OpenStack人气爆发式增长背后的原因很简单。因为它为那些想要部署自己的私有云基础设施的公司提供开源软件,在大多数公共云平台都很弱的地方,它是强大的。使用OpenStack的最大好处可能是它提供的供应商中立的API。它的开放API消除了对企业的专有、单一厂商锁定的关注,并在云中创建了最大的灵活性。

因为它们解决了类似的问题,但是在不同的层上,OpenStack和Kubernetes可以是一个很好的组合。通过使用它们,DevOps团队可以比以前更自由地创建云本地应用程序。

然而…

容器+ Kubernetes + OpenStack:未来的平台?

我们在客户身上看到的是,无论安全性和控制多么重要,它们都不需要只使用OpenStack。他们想要的更多:

  • 易于部署(来自公共云提供商)

  • 控制(来自私有云)

  • 成本效率(随处可见)

  • 灵活选择最佳位置运行任何给定的应用程序

  • 可扩展性

  • 可靠性

  • 安全

通常情况下,比初创公司大的公司想要享受“混合”的可能性。他们希望控制自己的基础设施,但在必要时,也要对公共云进行扩展。但我们的经验也是,完全享受混合场景的好处并不总是那么容易。不幸的是,在基础设施之间移动工作负载仍然是一个相当困难的任务。

这就是Kubernetes能派上用场的地方。因为它能同时控制私人和公共云,Kubernetes用户可以开启混合基础设施的真正力量。

回到我们开始的地方:容器

还记得文章开头的容器吗?他们的每秒在于他们让你:

  • 在OpenStack上运行容器化的应用程序

  • 使用Docker将您自己的OpenStack服务装箱。

  • 两种方法都可以从Kubernetes受益。

在Kubernetes上运行OpenStack的好处

由于它对云原生应用程序的巨大支持,Kubernetes可以再次使OpenStack变得很酷:它可以启用滚动更新、版本控制和新OpenStack组件和特性的部署,从而改进了整个OpenStack生命周期管理。此外,OpenStack用户还可以从自修复基础结构中获益,使OpenStack更能适应核心服务和独立计算节点的失败。最后,但并非最不重要的是,通过在Kubernetes上运行OpenStack,用户还可以从基于容器的基础设施的资源效率中获益。OpenStack的Kolla项目在这里有很大的帮助:它提供了生产就绪的容器和部署工具,用于运行可伸缩、快速和可靠的OpenStack云。

在OpenStack上运行Kubernetes的好处

另一方面,通过在OpenStack上部署K8s,Kubernetes用户可以访问一个健壮的框架来部署和管理应用程序。随着越来越多的企业采用云本地模式,他们面临着管理混合架构的挑战,这些架构包含公共和私有云、容器和虚拟机。OpenStack从来没有因为它的互操作性而出名——对于一些人来说,这可能是个好消息,但对大多数人来说却是坏消息。通过引入容器和Kubernetes,用户可以自由地选择最佳的云环境来运行任何给定的应用程序,或者应用程序的一部分,同时仍然享受可伸缩性、控制和安全性。Kubernetes可以使用Magnum来部署,它是OpenStack API服务,使容器编制引擎作为OpenStack中的一流资源可用。这给了Kubernetes所有共享基础设施的好处。

拥抱容器化

今天的企业想要很多东西,但是“使用单一的云基础设施并最终被锁定”并不是很好的。相反,他们想要获得公共云的好处(例如,易于部署),私有云(例如安全性),而且今天比以往任何时候都想要更快的上市时间。因此,他们逐渐转向云技术实践。

但是,无论从理论上说,建立和有效地使用混合架构仍然是一项艰巨的任务。大多数云基础设施,包括OpenStack,都没有被设计成允许在彼此之间轻松移动工作负载。

  • 但是有一个Docker,他来了,并为每个人都做了容器化。

  • 还有Kubernetes,他来了,并自动处理容器化。

  • 还有OpenStack,它提供了一个独立于供应商的、安全的、生产就绪的IaaS层,用于容器化的应用程序。

通过结合这三者,企业有机会充分实现混合架构的好处,更加敏捷,更快地交付创新。

别急,还有更多!

请看这张图片,以了解云的最重要层,以及构建、运行和管理云本地应用程序的不同工具和技术。

我们还演示了三个典型的云环境,我们看到客户在OpenShift、Azure和cloud Foundry上运行。

您是否已经使用Docker和Kubernetes,甚至可能与OpenStack结合使用?你如何找到这种组合?在下面的评论部分分享你的想法,一起讨论。

原文来自:云技术实践

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

0512-88869195
数 据 驱 动 未 来
Data Drives The Future