主页 topics 什么是 Knative? 什么是 Knative?
Knative 使无服务器工作负载能够在 Kubernetes 集群上运行,并能够更轻松、更快速地通过 Kubernetes 来构建和编排容器。
黑色和蓝色背景
什么是 Knative?

Knative(读作 Kay-NAY-tive)是 Kubernetes 容器编排平台的扩展,通过该扩展,无服务器工作负载能够在 Kubernetes 集群上运行,它还提供了工具和实用程序,可以简化在 Kubernetes 中构建、部署和管理容器化应用的过程,在体验上更加接近于 Kubernetes(因此名字中的 K 就代表了“Kubernetes”,加上表示原生的 native)。

        

与 Kubernetes 一样,Knative 也是开源软件。   它最初是由 Google 与 IBM、Pivotal、Red Hat、SAP 和其他近 50 家公司合作开发的。 Knative 开源项目现在由云原生计算基金会(简称 CNCF)托管。   

为什么 Kubernetes 需要 Knative

Kubernetes 可自动执行和调度容器的部署、管理和扩展,容器是一种轻量级、可执行的应用组件,这些组件将源代码与在任何环境中运行代码所需的所有操作系统 (OS) 库和依赖项相结合。  

容器允许应用组件共享单个操作系统实例的资源,就像虚拟机 (VM) 允许应用共享单个物理计算机的资源一样。 容器比虚拟机更小、资源效率更高,更适合敏捷和 DevOps 开发方法的增量发布周期,容器已成为现代云原生应用事实上的计算单元。 使用容器的公司还报告了其他益处,包括提高应用质量、更高水平的创新等等。 

下载完整报告:企业中的容器 (PDF, 1.4 MB)

随着云原生开发日益盛行,容器在组织中激增,Kubernetes 的容器编排功能(包括调度、负载平衡、运行状况监控等)使这种激增更容易管理。     然而,Kubernetes 是一个复杂的工具,需要开发人员在 Kubernetes 之外使用不同的工具执行或模板化许多重复性任务——从存储库中提取应用源代码、围绕代码构建和供应容器映像、配置网络连接。           将 Kubernetes 管理的容器整合到自动持续集成/持续交付 (CI/DC) 管道中需要特殊工具和自定义编码。

Knative 通过在 Kubernetes 中自动执行这些任务的工具避免了这种复杂性。 开发人员可以在单个 YAML 清单文件中定义容器的内容和配置,剩下的由 Knative 完成,即创建容器并执行网络编程以设置路由、入口、负载平衡等。    (Knative 还提供了一个命令行界面,即 Knative CLI,使开发人员无需编辑 YAML 文件即可访问 Knative 功能。)

实现容器的无服务器化

无服务器计算是一种云原生执行模型,它使应用更易于开发,且能够更加经济高效地运行。     无服务器计算模型

 
  • 按需提供计算资源,根据请求透明地扩展,不再发出请求时将缩小为零;

  • 将所有基础架构管理任务(包括扩展、调度、修补、供应等)卸载至云提供商,使开发人员能够将时间和精力集中在开发和创新上;

  • 使云客户只需为正在使用的资源付费,而从不会为空闲容量付费。

如果没有将 Kubernetes 与特定云提供商的无服务器平台集成的专用软件,Kubernetes 就无法独自运行无服务器应用。     Knative 使任何容器都能够在任何 Kubernetes 集群上作为无服务器工作负载运行——无论容器是围绕无服务器功能还是其他应用代码(例如,微服务)构建的,这通过抽象代码并处理网络路由、事件触发器和自动缩放来实现。        

Knative 的工作原理:Knative 组件

Knative 位于 Kubernetes 之上,并添加了三个主要组件,即原语:Build、Serving 和 Eventing。       

Build


 Knative Build 组件可自动执行将源代码转换为容器的过程。 此过程通常涉及多个步骤,包括:

  • 从代码库中拉取源代码,例如 GitHub  
  • 安装运行代码所需的底层依赖项,如环境变量和软件库
  • 构建容器映像
  •  
  • 将容器映像放入 Kubernetes(和其他开发人员)可以找到的注册表中。 

Knative 在其 Build 过程中使用了 Kubernetes API 和其他工具。 开发人员可以创建单个清单(通常是 YAML 文件),指定所有变量——源代码的位置、所需的依赖项等,Knative 使用清单来自动执行容器构建。   

Serving


Serving 组件将容器作为可扩展的 Knative 服务部署和运行。 Serving 组件提供以下重要功能:

  • 配置用于定义和维护服务的状态。  它还提供版本管理:每次对配置进行修改,都会创建一个新版本的服务,并保存以前的版本。

  • 智能服务路由让开发人员能够将流量路由到不同版本的服务。   假设您已经创建了一个新版本的服务,希望在迁移所有用户之前将其部署到一部分用户。 智能服务路由支持将一定比例的用户请求路由到新服务,同时将其余请求路由到以前的版本;随着您对新服务越来越有信心,就可以将更多流量路由到新服务。  

  • 自动缩放。 Knative 既可以将服务扩展到数千个实例,也可以将它们缩小到零——也就是说,根本没有容器的实例,这对于支持无服务器应用至关重要。   

Knative Serving 从 Kubernetes 生态系统中的另一个应用 Istio 借用了智能服务路由。 Istio 是 Kubernetes 的开源服务网格。  Istio 还提供服务请求的身份验证、服务之间安全通信的自动流量加密,以及有关微服务和无服务器功能操作的详细指标,开发人员和管理员可以使用这些指标来优化基础架构。   (有关 Knative 如何使用 Istio 的更多详细信息,请阅读“Istio 和 Knative:扩展 Kubernetes 以让开发人员获得新体验。”)

        

Eventing


Knative 的 Eventing 组件启用不同的事件来触发它们基于容器的服务和功能。  Knative 将这些事件排队并传送到适当的容器,因此无需为该功能编写脚本或实现中间件。   Knative 还处理通道(开发人员可以从中选择的事件队列)和总线(将事件传递给容器的消息传递平台)。 这让开发人员能够设置提要,提要可将事件连接到容器要执行的操作。

Knative 事件源使开发人员可以更轻松地创建与第三方事件生成器的连接。  Knative 的 Eventing 组件将自动创建与事件生成器的连接,并路由生成的事件。 无需了解如何以编程方式执行此操作,所有工作都由 Knative 完成。

Knative 用例

总的来说,对于想要简化容器化应用开发或将容器的使用提升到一个新水平的 Kubernetes 用户,Knative 提供了几个用例。

      

简化 Kubernetes。 通过消除重复的构建和配置任务,Knative 让使用 Kubernetes 的开发人员更有效率。  任何努力管理越来越多的 Kubernetes 集群的开发团队都非常适合使用 Knative。 

加速完成无服务器化。  手动设置和管理无服务器环境是一项非常艰巨的任务。  Knative 使组织能够快速设置无服务器工作负载。   就开发人员而言,他们只是在构建一个容器 — Knative 在幕后将它作为无服务器功能运行。  

支持敏捷和 DevOps 生命周期。 通过使开发人员能够更快地创建新的容器和容器版本,Knative 可以更轻松地以小的、快速的、迭代的步骤部署容器化应用,作为敏捷或 DevOps 工作流程的一部分。  Knative 服务还可以轻松集成到自动化 CI/CD 管道中,无需特殊软件或自定义编程。

让新功能发布变得平滑。 向客户推出新版本可能会暴露可能影响业务流程的软件问题。 Knative 的配置和路由功能让开发人员能够向一部分用户公开新的容器修订版,然后随着开发者不断解决问题而逐渐增加受众,如果需要,也可以快速回滚到旧版本。

   

让开发人员专注于编码和创新。 DevOps 可以为开发人员赋能,让他们能够管理自己的环境。 但归根结底,开发人员希望专注于构建无错误的软件和创新的功能,而不是为触发事件或管理容器可扩展性配置消息总线队列。   Knativelets 让开发人员能够花更多时间做他们最擅长的事情。

相关解决方案
Red Hat OpenShift on IBM Cloud

借助 Red Hat OpenShift on IBM Cloud,OpenShift 开发人员可以快速安全地在 Kubernetes 集群中容器化和部署企业工作负载。

探索 Red Hat OpenShift
IBM Cloud Satellite

使用一组通用云服务(包括工具链、数据库和 AI),跨任何云供应商的本地、边缘计算和公有云环境一致地部署和运行应用。

探索 IBM Cloud Satellite
IBM Cloud Code Engine

IBM Cloud Code Engine 是一个完全管理的无服务器平台,支持在完全管理的容器运行时中运行容器、应用代码或批处理作业。

探索 IBM Cloud Code Engine
资源 企业中的容器

最新的 IBM 研究显示,采用容器和 Kubernetes 的势头十分强劲。

什么是无服务器?

无服务器是一种云应用开发和执行模型,开发人员无需管理服务器或为空闲的云基础架构付费即可构建和运行代码。

面向混合云的灵活多变、安全永续的 IT

容器是混合云战略的一部分,让您可以随时随地构建和管理工作负载。

采取下一步行动

借助 Red Hat OpenShift on IBM Cloud,OpenShift 开发人员可以快速安全地在 Kubernetes 集群中容器化和部署企业工作负载。 只需点击一下,即可为您的容器化应用部署高度可用、完全管理的 Kubernetes 集群。由于 IBM 负责管理 OpenShift Container Platform (OCP),因此您将有更多时间来专注于核心任务。

探索 Red Hat OpenShift on IBM Cloud