CNCF云原生生态版图-分类指南(三)- 运行时

CNCF云原生生态版图-分类指南(三)- 运行时

  • CNCF云原生生态版图-分类指南
    • 三、运行时(Runtime)
      • (一)云原生存储(Cloud Native Storage)
        • 1. 是什么?
        • 2. 解决什么问题?
        • 3. 如何解决问题?
        • 4. 使用的技术
        • 5. 项目和产品整体介绍
      • (二)容器运行时(Container Runtime)
        • 1. 是什么?
        • 2. 解决什么问题?
        • 3. 如何解决问题?
        • 4. 使用的技术
        • 5. 项目和产品整体介绍
      • (三)云原生网络(Cloud Native Network)
        • 1. 是什么?
        • 2. 解决什么问题?
        • 3. 如何解决问题?
        • 4. 使用的技术
        • 5. 项目和产品整体介绍
      • (四)小结
  • 链接

CNCF云原生生态版图-分类指南

三、运行时(Runtime)

在这里插入图片描述

运行时层包含容器在云原生环境中运行所需的一切。包括用于启动容器的代码,称为容器运行时;使持久存储可用于容器的工具;以及管理容器环境网络的 VPN。

但请注意,不能将这些资源与上面讨论的 Provisioning 层处理的网络和存储工作混淆。那些专注于让容器平台运行。该类别中的工具用于启动和停止容器,帮助它们存储数据,并支持它们相互通信。

(一)云原生存储(Cloud Native Storage)

1. 是什么?

存储是存储应用的持久性数据的位置,通常称为持久卷。为了可靠地运行,应用程序需要能够轻松访问存储。通常,当说持久数据时,指的是存储数据库、消息或任何其他信息,并且希望在应用程序重新启动时不会消失。

2. 解决什么问题?

云原生架构具有流畅、灵活且富有弹性的特点,使得容器重启时数据的持久化变得具有挑战性。容器化应用程序为了扩缩容或自我修复,通常会被不断创建和删除,也可能随着时间的推移改变运行的物理位置。这些原因促使云原生环境下的存储必须以独立节点的形式提供。存在如下几个重大挑战:

  • 要存储数据,就需要硬件,而且磁盘与任何其他硬件一样,受基础结构限制,这是我们面临的第一个重大挑战。
  • 然后是实际的存储接口,数据中心之间的存储接口可能存在较大差异(在旧世界中,每个基础设施都有自己的存储解决方案和自己的接口),这使得数据中心难以具备可移植性。
  • 最后,手动资源调配和自动扩展不兼容,因此,为了从云的弹性中受益,必须自动调配存储资源。

云原生存储就是专门为这些新的云原生挑战量身定制的。

3. 如何解决问题?

云原生存储分类中的工具能提供如下的能力:

  1. 为容器提供云原生存储能力。
  2. 标准化容器和存储接口。
  3. 通过备份和恢复提供数据保护。

云原生存储通过使用云原生兼容的容器存储接口和可以自动配置的存储,来消除人力瓶颈,以实现自动扩展和自我修复。

4. 使用的技术

云原生存储的实现主要依赖于容器存储接口 (CSI) ,该接口提供了一组标准 API,为容器提供文件和块存储。该类别中有许多工具,包括开源和供应商提供的工具,它们利用 CSI 为容器提供按需存储。

此外,还有一些技术旨在解决其他云原生存储挑战。Minio 提供了与 S31 兼容的对象存储 API。Velero 等工具有助于简化备份和恢复 Kubernetes 集群本身以及应用程序使用的持久数据的过程。

5. 项目和产品整体介绍

属于云原生存储分类的项目和产品共有 72 个,其中 CNCF 项目有 12 个。这些项目和产品的关键字有:

  • Persistent volume 持久卷
  • CSI 容器存储接口
  • Storage API 存储 API
  • Backup and restore 备份和还原

CNCF 项目如下表所示:

项目CNCF 项目阶段说明
Rook已毕业Rook 将分布式存储系统转变为自我管理、自我扩展、自我修复的存储服务
CubeFS孵化中一款新一代云原生开源存储系统,支持 S3、HDFS2 和 POSIX3 等访问协议
Longhorn孵化中为 Kubernetes 等容器编排平台提供可靠的、持久化的存储解决方案。它允许容器在不同的节点之间迁移时,仍然能够访问和使用之前存储的数据
Carina沙盒一个标准的 kubernetes CSI 插件
Curve已存档一个高性能、轻量级运维、云原生的开源分布式存储系统
HwameiStor沙盒一款 Kubernetes 原生的容器附加存储 (CAS4) 解决方案,将 HDD、SSD 和 NVMe 磁盘形成本地存储资源池进行统一管理,使用 CSI 架构提供分布式的本地数据卷服务,为有状态的云原生应用或组件提供数据持久化能力
K8up沙盒通过与 Kubernetes 紧密集成,为容器化应用提供了可靠的备份和恢复功能,确保应用数据在灾难事件或数据丢失场景下能够得到有效的保护和恢复
Kanister沙盒用于在 Kubernetes 环境下处理复杂的数据操作任务,如备份、恢复、迁移和数据处理等
OpenEBS沙盒提供了灵活的存储选项,能够让用户在容器编排平台中轻松地管理和使用存储资源
ORAS沙盒一个专注于将 OCI5(Open Container Initiative)注册表用作存储的项目
Piraeus Datastore沙盒一个云原生存储系统,可为 Kubernetes 本地持久卷提供动态配置、资源管理和高可用性
Vineyard沙盒用于在数据密集型应用场景中高效地管理和共享数据。它能够跨越不同的计算框架(如 Spark、Pandas 等)和存储系统(如分布式文件系统、对象存储等),为数据的高效处理提供支持

(二)容器运行时(Container Runtime)

1. 是什么?

如容器注册表中所述,容器是一组用于执行(或启动)应用程序的计算约束6。容器化应用程序认为它们正在自己的专用计算机上运行,并且不知道它们正在与其他进程共享资源(类似于虚拟机)。

容器运行时是执行容器化应用程序的软件。如果没有运行时,容器镜像就无法运行起来,它就只是指定容器化应用程序配置的静态文件。运行时将在容器中启动应用程序,并为其提供所需的资源。

2. 解决什么问题?

容器镜像(具有应用程序规范的文件)必须以标准化、安全和隔离的方式启动。标准化是因为需要在标准的操作规则下,保证容器能够在任何地方运行。安全是因为不希望任何不应该访问它的人访问。隔离是不希望应用程序影响其他应用程序或受其他应用程序影响(例如,同地部署应用程序(co-located application7)崩溃,不会相互影响),隔离起到基础的保护作用。此外,还需要为应用程序提供 CPU、存储和内存等资源。

3. 如何解决问题?

容器运行时以标准化的方式在所有环境中启动应用程序,并设置安全边界。该类工具在安全边界设置上会有所不同,比如 CRI-O 或 gVisor 等运行时就大大强化了其安全边界。运行时还要为容器设置资源限制,如果不加限制,应用程序就会按需消耗资源,这可能会造成从其他应用程序抢夺资源的现象,因此最好在运行容器时对使用资源进行限制。

4. 使用的技术

并不是所有的容器运行时工具都采用相同的方式实现。Containerd(著名的 Docker 产品的一部分)和 CRI-O 是标准的容器运行时实现。还有一些工具将容器的使用扩展到其他技术,例如 Kata,它支持将容器作为 VM 运行。其他工具旨在解决与容器相关的特定问题,例如 gVisor,它在容器和操作系统之间提供额外的安全层。

5. 项目和产品整体介绍

属于容器运行时分类的项目和产品共有 20 个,其中 CNCF 项目有 10 个。这些项目和产品的关键字有:

  • Container 容器
  • MicroVM 微型虚拟机

CNCF 项目如下表所示:

项目CNCF 项目阶段说明
containerd已毕业行业标准的容器运行时,强调简单性、健壮性和可移植性
CRI-O已毕业适用于 Kubernetes 的轻量级容器运行时
Inclavare Containers沙盒一种基于硬件安全增强技术的容器解决方案。它主要专注于利用硬件的可信执行环境(TEE,如英特尔 SGX)来提供容器化应用的安全隔离和隐私保护
Krustlet已存档一个用于在 Kubernetes 集群中运行 WebAssembly(Wasm)应用程序的工具
Kuasar沙盒聚焦于提升容器运行的性能、安全性和资源利用效率
Lima沙盒用于在本地环境轻松地运行 Linux 虚拟机,并且这些虚拟机能够很好地支持容器运行时(如 Docker、containerd)
rkt已存档一种轻量级、安全且遵循开放标准的容器技术
Virtual Kubelet沙盒一种伪装成 kubelet 的开源 Kubernetes kubelet 实现
WasmEdge Runtime沙盒将云原生和无服务器应用程序范例引入边缘计算
youki沙盒Rust 中 OCI 运行时规范的实现,类似于 runc8

(三)云原生网络(Cloud Native Network)

1. 是什么?

容器通过云原生网络相互通信以及与基础设施层通信。分布式应用程序具有多个组件,这些组件将网络用于不同的目的。此类别中的工具在现有网络之上创建一个专门用于应用通信的虚拟网络,称为重叠网(overlay network)。

2. 解决什么问题?

虽然通常将容器中运行的代码称为应用程序,但现实情况是,大多数容器只包含大型应用程序的一小部分特定功能。现代应用程序(如 Netflix 或 Gmail)由许多更小的组件组成,每个组件都在自己的容器中运行。为了允许所有这些独立的部分作为一个内聚的应用程序运行,容器需要各自相互通信。此类别中的工具提供专用通信网络。

在容器之间流动的数据和消息可能包含敏感或私有数据。由于云原生网络使用软件来控制、检查和修改数据流,因此管理、保护和隔离容器之间的连接要容易得多。云原生网络的可编程性(programmable)和声明式(declarative)支持通过扩展容器网络和网络策略(例如防火墙和访问规则),以允许应用程序连接到在容器网络外部运行的虚拟机或服务。

3. 如何解决问题?

此类别中的项目和产品使用容器网络接口 (CNI)(一个 CNCF 项目)为容器化应用程序提供网络功能。其中一些工具,如 Flannel,相当简约,为容器提供最基本的连接。其他工具(如 NSX-T)提供完整的软件定义网络层,为每个 Kubernetes 命名空间创建一个隔离的虚拟网络。

容器网络至少需要为每个 Pod 分配 一个IP 地址(这是容器化应用程序在 Kubernetes 中运行的位置),以允许其他进程访问它。

4. 使用的技术

该分类下项目和产品的多样性和创新性,在很大程度上是源自于 CNI(类似于上面提到的 storage 和 Container Storage Interface)。CNI 标准化了网络层为 Pod 提供功能的方式。 为 K8S 环境选择合适的容器网络至关重要,有许多工具可供选择。Weave Net、Antrea、Calico 和 Flannel 都提供了有效的开源网络层。它们的功能差异很大,最终应根据特定需求来进行选择。

许多供应商使用软件定义网络 (SDN) 工具支持和扩展 Kubernetes 网络,提供对网络流量的更多洞察,来更好的实施网络策略,乃至将容器网络和策略扩展到更广泛的数据中心。

5. 项目和产品整体介绍

属于云原生网络分类的项目和产品共有 27 个,其中 CNCF 项目有 10 个。这些项目和产品的关键字有:

  • SDN 软件定义网络
  • Network Overlay 网络叠加

CNCF 项目如下表所示:

项目CNCF 项目阶段说明
Cilium已毕业用于提供、保护和观察工作负载之间的网络连接,由革命性的内核技术 eBPF 提供支持
Container Network Interface (CNI)孵化中一种容器网络规范。它定义了容器运行时和网络插件之间的标准接口,目的是为了让容器能够无缝地连接到各种不同的网络环境,同时也方便网络插件开发者创建能够兼容多种容器运行时的网络解决方案
Antrea沙盒为容器提供网络连接、网络策略实施以及服务发现等功能,旨在简化容器网络的管理并提升网络性能和安全性
CNI-Genie沙盒一个用于容器网络接口(CNI)的多网络插件解决方案。它允许在同一个 Kubernetes 集群中同时使用多个网络插件,为容器提供灵活的网络配置选择,以满足复杂多样的网络需求
FabEdge已存档一个专为边缘计算场景设计的开源 Kubernetes 容器网络解决方案
Kube-OVN沙盒将 SDN 的能力和云原生结合, 提供丰富的功能,极致的性能以及良好的可运维性
kube-vip沙盒一个用于 Kubernetes 集群的虚拟 IP(VIP)管理工具。它主要解决在 Kubernetes 集群中为服务提供高可用的网络访问入口的问题,确保在集群节点故障或网络变化等情况下,服务的 IP 地址始终保持可用
Network Service Mesh沙盒一种用于在云原生环境中管理和交付网络服务的技术。它以服务网格的概念应用于网络服务,将网络功能(如负载均衡、防火墙、加密等)抽象为可管理的网络服务,并通过一个分布式的网状架构来提供、发现和消费这些服务
Spiderpool沙盒一个 Kubernetes 的 underlay9 和 RDMA10 网络解决方案, 它能运行在裸金属、虚拟机和公有云上
Submariner沙盒用于在多个 Kubernetes 集群之间建立安全的网络连接,实现跨集群的服务发现和通

(四)小结

云原生运行时提供了容器在云原生环境中运行所需的所有工具:

  • 云原生存储使应用程序能够轻松快速地访问可靠运行所需的数据。
  • 容器运行时,用于创建和启动执行应用程序代码的容器。
  • 云原生网络为容器化应用程序提供通信连接。

链接

  • CNCF Landscape
  • CNCF LANDSCAPE GUIDE

  1. Amazon S3(Simple Storage Service)是亚马逊公司提供的一种对象存储服务。它允许用户在网络上的任何位置存储和检索任意数量的数据。这些数据被存储为对象,对象可以是文件、图像、视频等各种格式的数据。 ↩︎

  2. HDFS(Hadoop Distributed File System)是一个分布式文件系统,是 Apache Hadoop 项目的核心子项目。它被设计用来在普通硬件构成的集群上存储大规模数据集,并且能够提供高吞吐量的数据访问。例如,像互联网公司存储海量的用户日志数据、搜索引擎存储网页索引等场景都会用到 HDFS。 ↩︎

  3. POSIX(Portable Operating System Interface)是一套 IEEE(电气和电子工程师协会)定义的标准。它的目的是为了在不同的操作系统之间提供一个统一的应用程序接口(API)规范,使得应用程序源代码在经过适当的编译后,可以在多种符合 POSIX 标准的操作系统上运行,提高操作系统之间应用程序的可移植性。 ↩︎

  4. 容器附加存储(Container - Attached Storage,CAS)是一种专门为容器化环境设计的存储方式。它紧密依附于容器,主要用于满足容器对存储的动态、灵活和高性能的需求。与传统存储方式不同,CAS 能够更好地适应容器的生命周期,从容器的创建、运行到销毁的全过程提供适配的存储服务。 ↩︎

  5. Open Container Initiative(OCI)是一个开源的、独立于厂商的容器规范组织。它的成立是为了建立开放的容器标准,确保容器技术在不同的操作系统和云平台之间具有更好的互操作性和兼容性。 ↩︎

  6. 在计算机科学和相关领域,计算约束是指对计算资源(如 CPU、GPU、内存、存储等)的限制或条件。这些约束可以是硬件本身的物理限制,也可以是由软件、系统配置、用户需求或其他因素施加的限制。 ↩︎

  7. “co - located application” 指的是同地部署的应用程序。它是一种软件部署策略,即多个应用程序或应用程序的组件被放置在相同的物理位置或接近的位置,这个位置可以是同一台服务器、同一个数据中心的服务器集群,或者是同一云计算区域内的资源池。 ↩︎

  8. runc 是一个轻量级的、符合 OCI(Open Container Initiative)标准的容器运行时工具。它主要用于创建和运行容器,是容器运行的底层实现之一,在容器生态系统中起着至关重要的作用。例如,在 Kubernetes 等容器编排平台中,runc 常常被用作默认的容器运行时来启动和管理容器。 ↩︎

  9. 在网络和计算机系统领域,“underlay” 通常指底层基础设施或基础网络。它是构建上层网络或应用的基础,提供物理连接、基本的网络拓扑和传输功能等。 ↩︎

  10. RDMA(Remote Direct Memory Access)即远程直接内存访问,是一种用于计算机之间高速数据传输的技术。它允许计算机在不经过操作系统内核的情况下,直接从一个计算机的内存访问另一个计算机的内存,从而实现低延迟、高带宽的数据传输,主要应用于高性能计算、存储系统和数据中心网络等领域。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVC基础——市场管理系统(三)Clean Architecture

文章目录 项目地址五、Clean Architecture5.1 user cage driven5.1.1创建CoreBusiness 5.2 创建UseCases5.2.1 创建CategoriesUseCases1. 创建VeiwCategoriesUseCase获取所有Cagegory 5.2.2. 实现ICategoryRepository接口3. 实现获取所有Category的方法4. 实现获取一个Cagegory…

手机上和电脑上都能观看的翻页电子书是如何制作的?

想知道手机上和电脑上都能观看的翻页电子书是都是如何制作的? 想知道这样的电子书是怎样呈现出来的? 那收藏这篇文章,我来跟大家说说该如何实现。 操作方法 一、登录FLBOOK 二、开始制作,有多种创建方式,分别是&…

Java 实现给pdf文件指定位置盖章功能

Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…

ASP.NET Core API + MySql

环境 数据库: mysql8.0 后端: vs2022 ASP.NET Core API .net 8 前端: Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 创建项目 添加资源包 AutoMapper Microsoft.EntityFrameworkCore.Tools 8.0.0 Pomelo.EntityFramew…

Bananna Pi开源社区联合矽昌通信打造开源的低成本Wifi5路由器

香蕉派 BPI-Wifi5 路由器采用矽昌SF19A2890S2芯片方案设计。它是一款高性能无线路由器,适用于小微企业、家庭和其他网络环境。Banana Pi开源社区提供整体解决方案。所有代码开源,用户可以在上面自由开发自己的应用。 Banana Pi wifi5 路由器github代码: …

item2 for macos

安装Item2 brew install iterm2 查看终端类型 cat /etc/shells Mac OS X 10.15 已经将默认的shell从Bash换成了zsh,所以不用安装,10.15以前的可以使用下面的命令进行安装 brew install zsh 安装Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…

Pytest-Bdd-Playwright 系列教程(14):Docstring 参数

Pytest-Bdd-Playwright 系列教程(14):Docstring 参数 前言一、什么是docstring?二、基本语法三、主要特点四、实际例子五、注意事项六、使用建议总结 前言 在自动化测试的过程中,我们经常需要处理复杂的测试数据或需要输入多行文…

手机租赁系统开发指南一站式服务流程解析

内容概要 手机租赁系统的开发是一个复杂但有趣的过程,像搭建乐高一样,只要找到合适的模块,就能打造出一个宾至如归的租赁平台。在这部分,我们将对开发流程的整体结构进行简要概述,并指出每个环节的重要性。 首先&…

OpenAI 正式赋予 ChatGPT 通过视频实时与用户互动的能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

EasyExcel设置表头上面的那种大标题(前端传递来的大标题)

1、首先得先引用easyExcel的版本依赖&#xff0c;我那 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency> 2、然后得弄直接的实体类&#xff0c;&…

纯血鸿蒙崛起,原生Android挑战?两大操作系统巅峰对决,智能设备未来谁主沉浮?

鸿蒙HarmonyOS和原生Android系统虽然在一些方面相似&#xff0c;但在架构、设计理念、API、开发工具等方面存在一些差异。鸿蒙系统的目标是跨设备、分布式的操作系统&#xff0c;强调多设备协同和资源共享&#xff0c;而Android则主要集中在智能手机和移动设备领域。 下面将从…

计算机网络:传输层、应用层、网络安全、视频/音频/无线网络、下一代因特网

目录 &#xff08;五&#xff09;传输层 1&#xff0e;传输层寻址与端口 2&#xff0e;无连接服务与面向连接服务 3. 传输连接的建立与释放 4. UDP 的优点 5. UDP 和 TCP 报文段报头格式 6. TCP 的流量控制 7&#xff0e;TCP 的拥塞控制 8. TCP 传送连接的管理 &#…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 边缘提取&#xff08;涉及语义分割&#xff09;&#xff1a; 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分&#xff0c;暗到亮为正 求边缘的幅度&#xff1a;sobel&#xff0c;Canny算子 图像分高频分量和低…

智能技术引领未来:自动图像标注的创新应用与发展

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 概述算法原理核心逻辑效果演示使用方式参考文献 参考文献&#xff1a;需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获…

C语言-排序

常见的排序算法分为以下四种&#xff0c;插入排序&#xff0c;选择排序&#xff0c;交换排序&#xff0c;归并排序。 一、插入排序 (一)直接插入排序 直接插入排序&#xff0c;将一段数组看做被分成已排序序列和未排序序列&#xff0c;排序过程是从未排序序列的元素开始&…

【Java笔记】LinkedList 底层结构

一、LinkedList 的全面说明 LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复)&#xff0c;包括null线程不安全&#xff0c;没有实现同步 二、LinkedList 的底层操作机制 三、LinkedList的增删改查案例 public class LinkedListCRUD { public stati…

网管平台(基础篇):路由器的介绍与管理

路由器简介 路由器&#xff08;Router&#xff09;是一种计算机网络设备&#xff0c;它的主要作用是将数据通过打包&#xff0c;并按照一定的路径选择算法&#xff0c;将网络传送至目的地。路由器能够连接两个或更多个网络&#xff0c;并根据信道的情况自动选择和设定路由&…

排序算法(2):选择排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 选择排序 选择排序每次从待排序序列中选出最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;或最大&#xff09;元素…

Tongweb8命令行使用收集(by lqw)

文章目录 声明对应版本修改thanos用户密码部署应用到默认实例节点相关操作新增节点(一般一个服务器ip只能装一个节点)启动节点(需确认节点没有运行)停止节点删除节点节点新增应用节点查看应用节点启动应用节点停止应用节点卸载应用(谨慎操作,卸载后应用就没有了,建议备份后…