CNCF的云原生景观简介

Wesley13
• 阅读 494

当你在研究云原生应用程序和技术,则可能会看到过云原生基金会(CNCF)提供的云原生景观图。毫不奇怪,它的规模相当庞大。如此众多的类别和众多的技术。我们应该如何看待它?

与其他任何复杂事物一样,如果你并对其进行拆分并分析,你会发现它并不那么复杂。实际上,云原生景观图是按功能整齐地组织的,一旦你了解了每个类别所代表的内容,就可以轻松进行“导航”。

在本系列的第一篇文章中,我们将分解这个庞大的云原生景观并提供整体,每个层,每一列和每个类别的概述。在后续文章中,我们将着重介绍每个层和每一列,并介绍每个类别是什么,它解决了什么问题以及如何运用等。

CNCF的云原生景观简介

云原生景观的四层

在第一层中,是配置云原生基础架构的工具。第二层和第三层,是添加运行和管理应用程序所需的工具,例如运行时和编排层。在第四层,是用于定义和开发应用程序的工具,例如数据库,镜像构建和CI/CD工具。

CNCF的云原生景观简介

现在,云原生景观始于基础架构,每一层都更接近实际应用程序。你可能也注意到还有跨所有层运行的两个“列“,文章后面我们将讨论。

1.供应层(Provisioning)

Provisioning指的是创建和强化云本机应用程序基础所涉及的工具。它涵盖了从自动化基础结构的创建,管理和配置镜像扫描,镜像签名和存储镜像的所有内容。除此之外,它还具备在应用程序和平台中构建身份验证授权以及处理密钥分发的工具,资源调配和安全领域的工具。

在供应层中,你会看到:

  • 自动化和配置工具(Automation &configuration ):可帮助工程师无需人工干预即可构建基础环境。

  • 容器仓库(Container Registry): 存储应用程序的镜像。

  • 安全( Security &compliance ):涉及不同的安全领域。

  • 密钥管理(Key management):有助于加密,以确保只有授权的用户才能访问该应用程序。

这些工具使工程师可以了解所有基础架构的细节,以便根据需要进行调整,来确保它们的一致性和安全性。

2.运行时层(Runtime)

运行时是云原生中最可能引起混淆的术语之一。与IT中的许多术语一样,没有严格的定义,可以根据上下文使用的不同来定义。从狭义上讲,运行时是运行应用程序的特定沙箱环境(应用程序运行所需的最低限度)。从广义上讲,运行时是应用程序运行所需要的任何工具。

在CNCF云原生环境中,运行时重点放在对容器化应用特别重要的组件上。它们包括:

  • 云原生存储(Cloud native storage):为容器化的应用程序提供了虚拟化磁盘或持久性。

  • 容器运行时(Container runtime):为容器提供了约束,资源和安全性等。

  • 云网络(Cloud native networking):分布式系统的节点通过其进行连接和通信的网络。

3.编排和管理层(Orchestration & Management )

一旦按照安全性标准自动搭建了基础结构(供应层),并设置了应用程序需要运行的工具(运行时层),工程师就需要知道如何编排和管理其应用程序。

编排和管理层,把所有容器化应用程序作为一个组进行管理。还要确定是否需要和其他服务相互通信并进行协调。同时,云原生应用程序具有良好的可扩展性。

在这一层中,包括:

  • **编排和调度( Orchestration & scheduling )**:部署和管理容器集群,以确保它们具有弹性,松耦合和可伸缩性。具有代表性的容器编排工具就是Kubernetes。

  • **服务发现( Coordination and service discovery )**:服务可以相互通信的工具。

  • 远程过程调用(RPC):跨节点上的服务进行通信的技术。

  • **服务代理( Service proxy )**:代理的唯一目的是对服务通信施加更多控制,它不会对通信本身添加任何内容。这些代理对于下面提到的服务网格至关重要。

  • API网关:一个抽象层,外部应用程序可以通过它进行通信。

  • **服务网格( Service mesh )**:在某种程度上类似于API网关,它是应用程序通过其进行通信的专用基础结构层,但是它提供了策略驱动的服务的通信。此外,它可能包括从加密、服务发现、到应用程序可观察性的所有内容。

4.应用程序定义和开发层(Application Definition & Development)

顾名思义,应用程序定义和开发层,是侧重于使工程师能够构建应用程序并使其运行的工具。

在此类别下,你会看到:

  • 数据库( Databases):使应用程序能够以有组织的方式收集数据。

  • 流和消息传递( Streaming & messaging):使应用程序能够发送和接收消息(事件和流)。它不是网络层,而是用于对消息进行排队和处理的工具。

  • 应用程序定义和镜像构建( Application definition &image build ):是帮助配置,维护和运行容器镜像的服务。

  • 持续集成和持续交付(CI/CD):使开发人员能够自动测试代码,自动打包,甚至还可以自动部署到生产环境中。

跨所有层运行的工具

接下来,我们将介绍在所有层上运行的两列–可观察性和分析。

CNCF的云原生景观简介

可观察性与分析(Observability &Analysis)

为了降低MRRT(解决软件问题的时间),你需要监视和分析应用程序的各个方面,以便立即发现并纠正任何异常情况。在复杂的环境中故障随时会发生,而这些工具将通过帮助尽快识别和解决故障来帮助减轻故障的负面影响。由于此类别遍历并监视所有层,因此它在侧面,而不是嵌入在特定层中。

在这里你会发现:

  • **日志记录( Logging)**:收集事件日志(有关进程的信息)的工具。

  • **监视( Monitoring )**:收集指标(系统参数,例如RAM可用性等),监视运行状况。

  • **跟踪( Tracing )**:比监视更进一步,这与服务网格相关。

  • **混沌工程( Chaos engineering)**:是对生产中的软件进行测试的工具,可以在交付之前识别缺陷并加以修复。

平台类(Platforms)

如我们所见,每个模块都解决了一个特定的问题。例如,仅存储并不能提供管理应用程序所需的全部功能。你将需要一个编排工具,覆盖多层,将不同的工具捆绑在一起,以解决更大的问题。

你可能会注意到,所有类别都围绕Kubernetes展开。这是因为Kubernetes是最受欢迎的云原生编排工具。

平台可分为四类:

  • Kubernetes发行版:未经修改的开源代码(尽管有人对其进行了修改),并跟踪市场需求添加相应功能。

  • Kubernetes托管:类似于发行版,在提供商的基础架构上进行管理。

  • Kubernetes安装程序:使用它们可以自动执行Kubernetes的安装和配置过程。

  • PaaS /容器服务:与Kubernetes托管相似,但包含了广泛的应用程序部署工具集(通常是云原生环境的一部分)。

结论

在每种类别中,都有旨在解决相同或相似问题的不同工具。区别在于它们的实现和设计方法。

在选择时,工程师必须仔细考虑每种功能并进行权衡,以确定适合其用例的最佳选择。尽管这带来了额外的复杂性,但选择最适合应用程序需求的数据存储,基础架构管理,消息系统等,都是至关重要的。

译者:王延飞

原文链接:https://thenewstack.io/an-introduction-to-the-cloud-native-landscape/

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
捉虫大师 捉虫大师
3年前
zookeeper到nacos的迁移实践
本文已收录https://github.com/lkxiaolou/lkxiaolou欢迎star。技术选型公司的RPC框架是dubbo,配合使用的服务发现组件一直是zookeeper,长久以来也没什么大问题。至于为什么要考虑换掉zookeeper,并不是因为它的性能瓶颈,而是考虑往云原生方向演进。云原生计算基金会(CNCF)对云原生的定义是:云原生
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
云原生 | 咱就是说跟“云”特熟 | 企业级飞速低代码
技术架构的演变非常快,各种新的名词也是层出不穷。云原生人云亦云,那到底什么才是云原生呢?云原生又能带来什么好处呢?对于大部分人来说,大火的云原生还只是一个相对模糊和笼统的技术用语,大家都只是道听途说。其实任何一个IT新理念都是源于业务驱动,对云原生来说也是如此。1、云原生的概念云原生(CloudNative)是一个组合词,“云”表示应用程序运行于分布式云
Tommy744 Tommy744
3年前
深度 | 阿里云蒋江伟:什么是真正的云原生?
作者|阿里云原生来源|而今,云原生成了耳熟能详的热门词,似乎不提云原生就落伍了,加入CNCF也成了云厂商引以为傲的技术优势。我们也看到各种云原生的定义,有来自CNCF的“微服务容器持续交付DevOps”,也有来自不同云厂商的说法。2020年9月,阿里云成立了云原生技术委员会,今天我就从云计算的初心尝试谈谈什么是真正的云原生。狭义的
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Tommy744 Tommy744
3年前
2021年值得关注的五个云原生安全问题
云原生正变得越来越流行,在2020年,统计发现,其中83%的组织也在生产环境中使用kubernetes。由于,团队可以轻松地构建和使用,,,以及管理服务,而不必担心底层的服务器。但是,云原生安全性仍然是一个真正的挑战。奇怪的是,云原生安全性的最大问题与所有新技术无关。首席安全官表示,如果组织希望以更好地开始新的一年,则应着手解决五个主要的云原生安全性问题。有
Docker 和 Kubernetes,一周即可快速入门!!云原生技术工坊再度来袭~
只需要每天晚上花三两个小时,在一周业余的时间里,你就能快速入门Docker和Kubernetes!!第一期云原生在线技术工坊已经圆满结束,好评如潮,下面是部分参与者打卡截图:第二期技术工坊活动再度来袭关注“腾讯云原生”公众号,回复“技术工坊”即可参与!!技术工坊简介云原生在线技术工坊,由腾讯云原生【燎原社】精心打造,旨在帮助更多对云原生技术感兴趣的开发者快
Wesley13 Wesley13
3年前
2019 年 CNCF 中国云原生调查报告
!头图.jpg(https://ucc.alicdn.com/pic/developerecology/6db0c465111b4d9a96eb1ffe85c00e7a.jpg)中国72%的受访者生产中使用Kubernetes在CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区。这是第三次中国云原生调查,以中文进行
Stella981 Stella981
3年前
Kubernetes 入门必备云原生发展简史
作者|张磊阿里云容器平台高级技术专家,CNCF官方大使“未来的软件一定是生长于云上的”这是云原生理念的最核心假设。而所谓“云原生”,实际上就是在定义一条能够让应用最大程度利用云的能力、发挥云的价值的最佳路径。在这条路径上,脱离了“应用”这个载体,“云原生”就无从谈起;容器技术,则是将这个理念落地、将软件交付的革命持续进行下去的重要手段之一。云原生