使用 Knative 的无服务器工作负载 ¶
发布日期:2019-04-10 , 修订日期:2024-01-17
使用 Knative 的无服务器工作负载¶
作者:Mark Chmarny,Google 云开源软件团队负责人
现在,Kubernetes 应该是您部署的默认目标。是的,仍然存在 Kubernetes 不是最佳选择的情况,但这些情况在现代工作负载中所占比例越来越小。
Kubernetes 的主要价值在于它极大地抽象了大部分基础设施管理方面的痛苦。几乎所有主要云服务提供商 (CSP) 的广泛支持也意味着您的工作负载是可移植的。再加上 Kubernetes 相关工具的活跃生态系统,意味着运营人员(负责管理 Kubernetes 的人员)的体验现在非常流畅。
但是,在 Kubernetes 之上构建解决方案的开发人员的体验如何呢?
尽管有些人可能会告诉你,但 Kubernetes 还没有成为当今的应用程序服务器。首先,在 Kubernetes 上开发、部署和管理服务的过程仍然过于复杂。是的,有很多用于日志记录、监控、集成等的开源项目,但是,即使您将这些项目完美地组合在一起,在 Kubernetes 上进行开发的体验仍然很脆弱,并且需要大量的劳动。
更糟糕的是,函数作为代码开发的原子单位越来越流行,这进一步增加了整体复杂性。通常会在两个分离的表面区域创建不同的开发模式:一个用于函数 (FaaS),另一个用于应用程序 (PaaS)。
结果是,如今的开发人员被迫担心基础设施相关的问题:例如,镜像构建、注册表发布、部署服务、负载均衡、日志记录、监控和扩展。但是,他们真正想要做的是编写代码。
介绍 Knative

本周在旧金山的 Google Cloud Next 上,Google 宣布了 GKE 无服务器附加组件的早期预览版 (g.co/serverlessaddon)。Google 还开源了 Knative(kay-nay-tiv),这是为无服务器附加组件提供支持的项目 (github.com/knative)。
Knative 实现了 Google 的许多经验教训。该开源项目已经获得了 Pivotal、IBM、Red Hat 和 SAP 等公司的贡献,并与开源函数即服务框架社区(如 OpenWhisk、riff 和 Kyma)进行合作,这些社区要么重新定位到 Knative,要么从 Knative 项目中使用一个或多个组件。

Knative 帮助开发人员在 Kubernetes 上构建、部署和管理现代无服务器工作负载。
它提供了一组构建块,使开发人员能够在 Kubernetes 上构建现代、以源代码为中心和基于容器的工作负载。
Knative 文档提供了有关 如何在托管 Kubernetes 产品(如 Google Cloud Platform 或 IBM)上安装 Knative以及在本地 Kubernetes 安装(如 Pivotal 提供的安装)上安装 Knative 的说明。最后,Knative 存储库还包括 示例和操作说明,可以帮助您开始在 Kubernetes 上进行开发。
Knative 概述
Knative 基于明确分离关注点的原则。它允许开发人员和运营人员通过以自定义资源定义 (CRD) 的形式定义基本对象,来推断工作负载开发、部署和管理,这些定义扩展了 Kubernetes 中找到的对象模型。

- 配置 - 是您服务的预期状态,包括代码和配置
- 版本 - 代表您代码和配置的不可变时间点快照
- 路由 - 将流量分配到服务的版本或版本
- 服务 - 是上述所有对象的组合精简版本,用于支持简单的用例
除了这些对象之外,Knative 还定义了事件的基本对象……您知道,因为是无服务器。Knative 解耦了事件生产者和消费者,并实现了 CNCF CloudEvents (v0.1) 来简化事件处理。

- 事件源 - 代表事件的生产者(例如 GitHub)
- 事件类型 - 描述不同事件源支持的事件类型(例如,上述 GitHub 源的 Webhook)
- 事件消费者 - 代表您操作的目标(即 Knative 定义的任何路由)
- 事件馈送 - 是连接事件类型和操作的绑定或配置
Knative 对象模型的函数实现意味着 Knative 既易于上手,又足够强大,能够随着解决方案复杂性的增加来应对更高级的用例。
总结
我希望这篇介绍能让你了解 Knative 的价值,以及 Knative 对象如何简化 Kubernetes 上的开发,无论你是从事应用程序还是函数开发。
在接下来的几周里,我将介绍 Knative 的每一种关键使用模式(镜像推送、蓝绿部署模型、源代码到 URL 等)。在每篇文章中,我还将提供示例代码来演示该模式,并允许你在 Knative 上重现它们。我非常激动能与你分享 Knative,希望你能回来了解更多信息。