OpenStack和Kubernetes在云计算领域的定位和作用

只有swift和Nova这两个项目,即目前的对象存储和计算服务。是定位于laas平台的项目,其优点是能够提供虚拟机这种很底层的设施。服务拆分来抽象不同系统的权限控制和任务,以方便业务开发人员通过服务组合快速的创建企业应用。是定位于laaS平台的项目,是定位于PaaS平台的项目,两者在自己的领域中已经做的很好了。...

OpenStack和Kubernetes在云计算领域定位及作用

当前云计算领域最火的两个项目无疑是和。如果说云计算是汹涌的江湖,那么说和谐就是江湖中的泰山北斗也不为过。犹如少林,根基扎实,沉稳厚重,而武当,轻飘飘,飘逸细腻。用过这两个系统的人应该都有这种感觉。它们生于虚拟化技术,稳定但慢,来自容器技术,快但有限。两种不同的技术决定了不同的生命轨迹。那么两者是什么关系呢?我们分析分析。

产地比较:

2010年7月,公司与NASA合作,分别贡献了云文件平台代码和NASA平台代码,并发布了第一个版本。2010年是美国第二大云计算公司,但规模仅占亚马逊的5%。仅靠内功是不可能超越或赶超亚马逊的。该公司已经开源了自己的项目,即后来的存储源代码(swift)。同时,NASA 也对其使用的云计算管理平台非常不满。NASA 想为开源版本做出贡献,但没有被接受。当时,NASA 的六名开发人员花了一周的时间制作了一个原型,虚拟机在上面运行得非常成功。这就是 Nova(计算源代码)的由来。目前的对象存储和计算服务只有 swift 和 Nova 两个项目。此后,一直保持每六个月发布一个版本的频率,目前最新的版本是 Rocky。在最新版本中,项目已达60多个。

是 2014 年发布的一个开源项目。开发了一个名为 Brog 的系统,用于在内部调度大量容器和工作负载。在积累了多年的经验后,我决定重写这个容器管理,并将其贡献给开源社区,造福世界。自 2014 年第一个版本发布以来mac上开源项目管理软件,迅速受到开源社区的追捧,现已成为增长最快、市场份额最高的容器编排引擎。截至目前,最新版本是 1. 11。

版本发布表:

OpenStack和Kubernetes在云计算领域定位及作用

技术实现

:虚拟化

作为开源云计算平台,利用虚拟化技术和底层存储服务,提供可扩展、灵活、适应性强的云计算服务。虚拟化是云计算的基础。简单地说,虚拟化使多个虚拟机可以在一个物理服务器上运行。虚拟机共享物理机的 CPU、内存和 IO 硬件资源,但虚拟机之间在逻辑上是相互隔离的。主机通常使用程序来虚拟化硬件资源并提供给客户端使用。如下图所示是一个虚拟化的架构。

OpenStack和Kubernetes在云计算领域定位及作用

每个虚拟机都有自己的内核和文件系统,是一个完全独立的操作系统。上图是两种虚拟化方法之一:准虚拟化——KVM。在当前环境下,KVM虚拟化技术是使用最多的技术。

虚拟化优势:隔离性强,所有虚拟机都有自己的协议栈,每个虚拟机的底层相互隔离。

虚拟化的缺点:占用资源较多,虚拟化技术本身占用资源,宿主机性能消耗10%左右。

它是一个容器管理编排引擎,所以底层实现自然是容器技术。容器是一种轻量级、可移植、自包含的软件 封装技术,它使封装的应用程序几乎可以在任何地方以相同的方式运行。以容器的典型代表为例,它起源于2013年3月,是基于LXC构建的容器引擎。它通过and实现资源隔离和分配,并使用分层存储构建镜像。它是基于公司推出的Go语言实现的。与KVM虚拟化技术相比,最​​明显的特点就是启动速度快,占用资源少。虚拟化在几分钟内启动虚拟机,而不是几秒钟。下面是架构图。

OpenStack和Kubernetes在云计算领域定位及作用

启动速度快,资源消耗小,原因在于技术架构:

一个操作系统分为内核+文件系统。容器技术就是利用宿主机的内核系统加上自己的文件系统。容器运行时,文件系统是在使用宿主机内核的条件下加载的。缩小后的文件系统可以小到100MB,自然比虚拟机快很多。将容器视为运行在内核上的自包含代码单元MicroDicom viewer(Dicom格式看图软件),它们非常轻量级。因此,占用的资源更少。

容器的优点:启动快、资源占用小、可移植性好

容器的缺点:隔离性差,共享宿主机内核,底层可以访问。取决于主机内核,因此容器的系统选项是有限的。

架构比较

服务分为核心功能和非核心功能。核心功能是指系统运行所必需的功能,其中核心功能有:

OpenStack和Kubernetes在云计算领域定位及作用

其工作模式如下:

OpenStack和Kubernetes在云计算领域定位及作用

很大一部分“为什么选择”用户调查提出了:开放平台和标准化 API。实现松耦合和解耦的思想,各个服务之间使用标准的API接口调用,这些接口可以开发用于非程序调用。

具体来说就是( state )和RPC( call)。服务之间使用 API 通信来最小化服务之间的依赖关系。比如在创建虚拟机的时候,nova服务需要调用,调用,都是通过api来完成的。服务内模块之间的调用使用 RPC,这增加了水平可伸缩性。比如nova-api收到创建虚拟机的请求,会调用nova-选择创建虚拟机的主机,nova-完成虚拟机创建的具体工作。此外,常用的技术有:

1. 消息总线 AMQP

2. ORM 模型数据库

3. WSGI web 网管接口

4. 协程

使用开源技术避免轮子的重复制造,对团队的技术选择有参考意义。

这个想法是试图确保用户的理想状态。一般来说,用户创建了三个容器。为了保证这三个容器的寿命,三个容器始终健康,停电等故障可以及时得到补偿。它由和Node组成,Node是大脑,Node是计算节点。

下图的组成:

OpenStack和Kubernetes在云计算领域定位及作用

节点上运行的服务有:

1. API:提供 api。各种客户端工具或其他组件都可以调用它来完成资源调用。

2. :调度服务决定在哪个节点上创建容器。

3. :管理系统中的各种资源,保证资源处于预期状态。

4. etcd:保存系统配置信息和各种资源的状态信息。

5. Pod 网络:可以是 , , weave 等之一。

节点节点服务:

1. :接收节点发送的创建请求信息,上报运行状态。

2. kube-proxy :访问控制。

同样的方式创建一个服务来分析整个系统的运行情况。客户端向系统发送创建请求,API接收到请求,通知创建资源,由其负责具体的创建过程,调用选择创建哪个主机,然后将请求发送到Node节点. Node 节点接收请求并创建特定资源。.

还要遵循标准化的 API 接口。

API是集群系统的重要组成部分。集群中各种资源(对象)的数据通过API接口提交到后端持久化存储(etcd),集群中的组件通过API接口解耦。同时,集群中一个重要且便捷的管理工具也通过访问API接口来实现其强大的管理功能。在系统中的大多数情况下,API 的定义和实现都符合标准的 HTTP REST 格式,例如通过标准的 HTTP 动词(POST、PUT、GET 等)来查询、创建、修改和删除相关资源对象。但同时它也为一些非标准的 REST 行为实现了额外的 API 接口,例如观察资源的变化、进入容器执行操作等。

使用场景

场景 1:安全和隔离。适用于构建私有云和基于私有云的使用场景。底层采用虚拟化技术,其基因具有隔离性好、稳定性好、部署灵活等特点。云桌面的成功案例就是一个典型的例子。许多公司已将其生产环境迁移到云端。比如企业上云的时候PhotoPageGen(电子相册制作软件),工作环境就是云桌面的形式。一是降低设备成本。上云之前,每人一台主机,现在几十个人用一台服务器。如果考虑 CPU 和内存的使用,成本肯定会降下来。二是安全。并非所有数据都存储在周围,这在一些安全系数较高的行业尤为重要。它一直受到金融行业的青睐,安全功能在这里是少不了的。

OpenStack和Kubernetes在云计算领域定位及作用

场景 2:提供基础设施。它是一个定位在laas平台上的项目,它的优点是可以提供一个非常底层的设施,比如虚拟机。如果您在业务场景中严重依赖虚拟机,例如编译内核或驱动开发,这是一个不错的选择。

场景 3:存储要求。存储是另一个优势。该项目的第一个版本包括存储和计算。在后期的不断发展中,存储作为一项重要的功能,不断得到完善和创新。像块存储一样,ceph 共享存储能量。在存储需求量大的场景下,能够提供高效、安全的存储解决方案,这也是电信行业看好的原因之一。

场景四:动态数据场景。即不需要重复创建和销毁这些服务的运行环境。虚拟机的优势在于稳定性,优势在于运行稳定的项目。

场景一:适用于业务变化快、业务量未知的静态使用场景。所谓静态使用场景,是指在其创建的容器中,数据并非实时生成的场景。例如:网站架构,一次部署,长期使用。尤其是遇到一些线上业务量不确定的场景,可以动态扩展,灵活扩展,从5W并发到10W并发,秒级处理。

场景二:这些服务的运行环境需要反复创建和销毁。优点是启动速度快,消耗资源少。所以在需要频繁创建和销毁的场景中是个不错的选择。

场景 3:需要业务模块化和可扩展性:容器可以轻松地将应用程序的功能分解为单个组件,符合微服务架构的设计模式。

场景四:应用云化。将现有应用和新开发的应用转为云原生应用,利用云平台的可扩展性、弹性和高可用性,利用PaaS层提供的API实现自动恢复等更高级的功能,自定义弹性缩放等。

场景 5:微服务架构和 API 管理。服务拆分抽象了不同系统的权限控制和任务,让业务开发者可以通过服务组合快速创建企业应用。有的企业在没有相应的管理平台之前,就已经将应用拆分成很多服务。如何部署这些微服务并控制 API 权限成为了一个需要解决的问题,而具有代表性的 PaaS 就是一个理想的选择。

社区比较

对于开源项目来说,社区的热情程度代表着活力和潜力。如何判断一个项目的未来发展,关注社区一定是最基本的要求。

是开源项目的代表作之一。

R版从第一个版本到现在的开发过程,为了探索开源生态,给了高分。最明显的指标是每个版本的代码贡献量。代码贡献量是衡量一个企业实力的重要标准,代表着在开源社区的话语权,也代表着为自身权益而战的能力。于是欣欣向荣的公司花费人力物力为社区代码贡献力量。

OpenStack和Kubernetes在云计算领域定位及作用

另一方面的出现,极大地加速了IT架构的演进。社区对开发过程的把控非常有效,无论是代码质量保证,还是单元测试、集成测试等测试都值得借鉴。

社区起步较晚,目前还不是很流行,但是在中国发展的普及度还是很高的。中文社区为国内爱好者提供教程、中文文档、安装教程等,大大降低了国内用户的开发和使用难度。

融合

OpenStack和Kubernetes在云计算领域定位及作用

虽然说他和他是云计算领域的两位领军人物,但他们一定是水火不容吗?事实上dds贴图批量转换工具,恰恰相反,两者一直在积极地相互融合。可以集成,目前有三种选择:

1. 用于 Nova

2. 表示热

3.

部署是许多公司已实施部署的另一种融合方式。反之,使用服务进行部署也是一种非常成功的部署方式。在需要频繁部署环境的场景下,几分钟即可完成部署,大大降低了部署的难度和耗时。

从长远来看,两者的趋同趋势在所难免。

总结

是定位在IaaS平台上的项目,也是定位在PaaS平台上的项目,两者在各自的领域都做得很好。如果它不像它那样灵活,它也不像它那样稳定。就好像说,武当功夫的功底肯定比少林强mac上开源项目管理软件,少林的拳法和脚法都不如武当功夫。事实上,根据业务需求,懂得灵活运用这两种不同风格的系统才是制胜之道。

通过两个系统的渊源、技术架构、使用场景和社区的对比,希望能给读者在选型上一些有用的参考。

相关文章

发表评论