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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【实验】基于双向LSTM和注意力机制的文本分类

目录 1 数据 2 模型构建 2.1 注意力打分函数 2.1.1 加性模型 2.1.2 点积模型 2.2 注意力分布计算 2.3 加权平均 2.4 完整注意力机制的实现 2.4 模型汇总 3 模型训练 3.1 使用加性注意力模型 3.2 使用点积注意力模型 4 模型评价 4.1 使用加性注意力模型 4.2 使用点…

Tongweb7049M4有关SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱的处理方案(by lqw)

前提条件:Tongweb7049M4已在http通道里配置了https(如何配置https可以参考这个帖子:东方通TongWEB添加Https证书,开启SSL) 遇到客户在配置了https后,扫描漏洞提示: 有关SSL/TLS 服务器瞬时 Dif…

浩辰CAD教程004:柱梁板

文章目录 柱梁板标准柱角柱构造柱柱齐墙边绘制梁绘制楼板 柱梁板 标准柱 绘制标准柱: ①:点选插入柱子②:沿着一根轴线布置柱子③:指定的矩形区域内的轴线交点插入柱子 替换现有柱子:选择替换之后的柱子形状&#x…

VScode 配置 debug环境

首先请阅读官方文档 Debug python 在vscode 中安装好对应的python 插件 运行程序不存在输入参数的时候 当运行python脚本不存在输入参数的时候,可以使用右上角的直接开始debug 然后开始调试即可。 当需要配置输入参数的时候 在当前项目下 .vscode目录 中 添加…

【时时三省】(C语言基础)结构体传参

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 结构体传参 struct S有一个int data 它有一千个元素 然后struct S 创建了一个s给它初始化了 如果想把s的赋值打印 可以把s直接传给Printf 1 是传结构体的方式 也可以穿s的地址给print 2 …

PCL点云库入门——PCL库可视化之CloudViewer类简单点云信息显示

1、前言 可视化(visualization)涉及运用计算机图形学和图像处理技术,将数据转换成图像并在屏幕上展示,同时支持交互式处理。在PCL库中,一系列强大的可视化工具可供使用,其中较为流行的包括CloudViewer和PCL…

人工智能技术的深度解析与推广【人工智能的应用场景】

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

Source Insight的使用经验汇总

01-Add All"和“Add Tree”有何区别? 在 Source Insight 中,“Add All”和“Add Tree”是两种向项目(Project)中添加文件的操作选项,它们的区别在于处理文件和目录的方式不同: 1. Add All 范围&am…

检查读取数据寄存器输出的多扇出

为使第二寄存器被 RAM 原语吸收,来自存储器阵列的数据输出位的扇出必须为 1 。这在下图中进行了说明。 检查地址 / 读取数据寄存器上的复位信号 不应复位存储器阵列。只有 RAM 的输出可以容许复位。复位必须是同步的,以便将输出寄存器推断到 RAM 基元…

信创改造-Spring Boot 项目部署至 TongWeb

打 war 包参考:https://blog.csdn.net/z1353095373/article/details/144330999

趣味编程:猜拳小游戏

1.简介 这个系列的第一篇以猜拳小游戏开始,这是源于我们生活的灵感,在忙碌的时代中,我们每个人都在为自己的生活各自忙碌着,奔赴着自己所走向的那条路上,即使遍体鳞伤。 但是,生活虽然很苦,也不…

微服务-01

1.认识微服务 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项目…

【Linux———基础IO】

每一滴眼泪,每一次心碎,什么爱能无疚无悔.......................................................................... 文章目录 前言 一、【认识文件I/O】 1.1、【回顾C语言文件I/O】 1.2、【操作系统文件I/O】 1.2.1、【open函数】 1、【open函数的三…

机器视觉LED面光源 成像效果显著

在机器视觉系统中,光源作为不可或缺的一部分,合适的光源能够提高检测物成像效果,增强检测效果。因此光源的选择至关重要,针对不同的检测对象,不同形状的光源应运而生。每种光源都有其适用的场景应用,选对光源&#xff…

HBase分布式安装配置(Zookeeper+HBase)

HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制…

【2024 Dec 超实时】编辑安装llama.cpp并运行llama

首先讲一下环境 这是2024 年12月,llama.cpp 的编译需要cmake 呜呜呜 网上教程都是make 跑的。反正我现在装的时候make已经不再适用了,因为工具的版本,捣鼓了很久。 ubuntu 18 conda env内置安装。 以下是可以完美编译llama.cpp的测试工具版…

go-zero(十二)消息队列

go zero 消息队列 在微服务架构中,消息队列主要通过异步通信实现服务间的解耦,使得各个服务可以独立发展和扩展。 go-zero中使用的队列组件go-queue,是gozero官方实现的基于Kafka和Beanstalkd 的消息队列框架,我们使用kafka作为演示。 一、…

vue绕过rules自定义编写动态校验

今天犯了个低级错误,虽然走了很多弯路,但这个过程还是值得记录一下 例子如下,有两个输入框: 第一个是套餐选择下拉框,可以下拉选择三个内容 第二个要根据上面的套餐选择三个选项来决定怎么显示,使用v-if&…

ABAQUS进行焊接仿真分析(含子程序)

0 前言 焊接技术作为现代制造业中的重要连接工艺,广泛应用于汽车、船舶、航空航天、能源等多个行业。焊接接头的质量和性能直接影响到结构件的安全性、可靠性和使用寿命。因此,在焊接过程中如何有效预测和优化焊接过程中的热效应、应力变化以及材料变形等问题,成为了焊接研…

【efinance一个2k星的库】

efinance 是一个可以快速获取基金、股票、债券、期货数据的 Python 库,回测以及量化交易的好帮手 但没有等比复权的,不用。 import efinance as ef ef.stock.get_quote_history(510880,fqt2)