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.rhkb.cn/news/489149.html

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

相关文章

通俗易懂的 Nginx 反向代理 配置

通俗易懂的 Nginx 反向代理 配置 首先 root 与 alias 的区别 root 是直接拼接 root location location /i/ {root /data/w3; }当请求 /i/top.gif ,/data/w3/i/top.gif 会被返回。 alias 是用 alias 替换 location location /i/ {alias /data/w3/images/; }当请…

HiveQL命令(一)- 数据库操作

文章目录 前言一、数据库操作1. 创建数据库1.1 语法及解释1.2 创建数据库示例 2. 查看数据库2.1 查看所有数据库2.2 查看数据库信息2.2.1 语法及解释2.2.2 查看数据库信息示例 3. 切换数据库3.1 语法3.2 示例 4. 修改数据库4.1 语法4.2 示例 5. 删除数据库5.1 语法及解释5.2 示…

Ubuntu22.04安装docker desktop遇到的bug

1. 确认已启用 KVM 虚拟化 如果加载了模块,输出应该如下图。说明 Intel CPU 的 KVM 模块已开启。 否则在VMware开启宿主机虚拟化功能: 2. 下一步操作: Ubuntu | Docker Docs 3. 启动Docker桌面后发现账户登陆不上去: Sign in | …

FPGA实现GTP光口数据回环传输,基于Aurora 8b/10b编解码架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案 3、工程详细设计方案工程设计原理框图用户数据发送模块基于GTP高速接口的数据回环传输架构GTP IP 简介GTP 基本结构GTP 发送和接收…

(二)多智能体强化学习

目录 前言 一、多智能体强化学习的概念 二、多智能体面临的问题 三、现有算法简介 总结 前言 基于上一篇文章对于强化学习基础概念的介绍,本篇文章针对多智能体强化学习进行介绍和总结,帮助大家了解多智能体的基本概念以及算法,方便大家…

【Linux网络编程】传输协议UDP

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…

汽车车牌识别数据集,支持YOLO,COCO,VOC格式的标注,8493张图片,可识别多种环境下的车牌

汽车车牌识别数据集,支持YOLO,COCO,VOC格式的标注,8493张图片,可识别多种环境下的车牌 数据集分割 训练组82% 6994图片 有效集12% 999图片 测试集6% 500图片 预处理 自动…

流网络复习笔记

所以这里的19是118-019 <s , w> 1/3就是容量是3&#xff0c;流量是1 残留网络就是两个相对箭头上都是剩余对应方向还能同行的流量 所以s->w 3-1 2, w->s 1

Mac m2电脑上安装单机Hadoop(伪集群)

1. 引言 本教程旨在介绍在Mac 电脑上安装Hadoop 2. 前提条件 2.1 安装JDK Mac电脑上安装Hadoop&#xff0c;必须首先安装JDK&#xff0c;并配置环境变量&#xff08;此处不做详细描述&#xff09; 2.2 配置ssh环境 关闭防火墙 在Mac下配置ssh环境&#xff0c;防止后面启…

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…

2000-2022年各省产业结构高级化、产业结构合理化指数(两种方法)(含原始数据+计算过程+计算结果)

2000-2022年各省产业结构高级化、产业结构合理化指数&#xff08;两种方法&#xff09;&#xff08;含原始数据计算过程计算结果&#xff09; 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;统计年鉴、各省年鉴、人口和就业年鉴 3、指标&#xff1a;GDP、第一产业增加…

神经网络基础-初识神经网络

人工神经网络&#xff08; Artificial Neural Network&#xff0c; 简写为ANN&#xff09;也简称为神经网络&#xff08;NN&#xff09;&#xff0c;是一种模仿生物神经网络结构和功能的计算模型。人脑可以看做是一个生物神经网络&#xff0c;由众多的神经元连接而成。各个神经…

Mac安装brew的终极方法

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"按回车后&#xff0c;根据提示操作&#xff1a; 输入镜像序号&#xff08;1-5都可以&#xff09;输入Y&#xff0c;回车等待brew安装完成即可。 M系列芯片亲测有效&#x…

vscode借助插件调试OpenFoam的正确的.vscode配置文件

正确的备份文件位置&#xff1a; /home/jie/桌面/理解openfoam/正确的调试爆轰单进程案例/mydebugblastFoam 调试爆轰案例流体 并且工作区和用户区都是openfoam-7版本 问题&#xff1a;F5以debug模式启动后不停在断点 解决方法&#xff1a; 这里备份一下.vsode正确的配置&…

MATLAB2021B APP seriallist 串口通信

文章目录 前言一、项目需要二、使用步骤1.查找串口填写到查找列表2.发送函数3. 接收函数4.检测串口按钮5.选择串口号 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…

TIM输入捕获---STM

一、简介 IC输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存在CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…

Linux驱动开发(14):PWM子系统–pwm波形输出实验

PWM子系统用于管理PWM波的输出&#xff0c;与我们之前学习的其他子系统类似,PWM具体实现代码由芯片厂商提供并默认编译进内核&#xff0c; 而我们可以使用内核&#xff08;pwm子系统&#xff09;提供的一些接口函数来实现具体的功能&#xff0c;例如使用PWM波控制显示屏的背光、…

C++在关键嵌入式软件领域逐步取代 Ada 的演进历程

第一章&#xff1a;引言 1.1 Ada 与 C在嵌入式系统中的角色 在嵌入式系统开发领域的漫长演进历程中&#xff0c;Ada 与 C宛如两颗璀璨而又各具特色的星辰&#xff0c;交替影响着该领域的发展轨迹。它们不仅代表了两种不同的编程哲学&#xff0c;也反映了不同时期对软件可靠性…

商业化大前端在性能优化领域的探索与实践

导读&#xff1a;在业务飞速发展的过程中&#xff0c;用户体验是必不可少的一个环节&#xff0c;而页面性能是直接影响用户体验的重要因素。当页面加载时间过长、交互操作不流畅时&#xff0c;意味着业务可能会出现转化率降低、用户流失等业务问题。在过去一年&#xff0c;为了…

基于wifipumpkin3的AP伪造

一、软硬件需求 利用wifipumpkin-3进行AP伪造需要kali系统&#xff0c;还需要一张支持在kali的环境下能够支持AP伪造的无线网卡&#xff0c;如果是针对特定的无线网的话&#xff0c;再来第二张网卡的话更好用来转发流量更好。对于wifipumpkin-3的安装使用可以分为两种方式&…