微服务架构spring boot 原理其他技术相关

IBM、谷歌等一票大佬共同研发的Knative,究竟是什么?

2019-01-16  本文已影响1337人  讯方智汇云校

Knative是什么?

要了解这个问题,你必须先了解什么是Kubernetes?以及Kubernetes最大的问题是什么?

什么是Kubernetes?

Kubernetes是一个开源的,用于 用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

但是问题来了!Kubernetes有一个最大的槽点就是入门门槛略高,而Knative正是为了解决这个问题来的。

开发人员希望专注于开发应用程序,而不是解决部署和操作问题。

Knative不仅通过提供简化工作流程的工具来解决这些问题,而且还为您的Kubernetes集群带来了非服务器工作负载的强大功能。

什么是Kubernetes?

Knative是当今云原生态领域发展最快的开源项目之一,是由IBM,谷歌和其他一些行业领导企业的工程师共同开发的。

从本质上讲,Knative是一个安装在Kubernetes之上的平台,它实质上将非服务器和运行非服务器工作负载的功能带到了Kubernetes上。此外,它还提供了许多实用程序,使开发者可以使用Kubernetes上的云原生应用程序感受真正的原生。

Knative的三个主要组成部分包括:Build,Serve和Event

这三个组件实际上称为基元,它们是组成了Knative的构建块。它们本质上允许Knative在Kubernetes中运行非服务器工作负载。但是,此外,Knative还提供端点和工具,方便开发者进行工作。

Build :构建系统

先来聊聊Build,每个开发人员在将他们的应用程序推送到Kubernetes时需要做什么呢?

首先,开发者需要从代码开始,对吧?所以每个开发人员都有代码 - 你可以想象它可能是在GitHub上托管的。

(注:微软新年大手笔:GitHub可免费创建无限量私人储存库)

接下来我们要做的就是把代码转换成容器,如Kubernetes、Docker或者你可能使用的任何容器技术。 这个过程可能像Docker构建一样非常简单,或者根据构建的复杂程度,可能需要执行一系列步骤,最终创建一个容器映像。

所以,一旦创建了云注册表,就需要将其推送到云注册表中。类似于Docker Hub或者其它私人映像注册中心。想要Kubernetes找到并部署它,为此,你可能想要创建一些常用的manifest yaml files。根据部署的复杂程度,您可能需要创建多个manifest yaml files来进行部署。

你可以想象,对于需要在Kubernetes上进行迭代开发的开发人员来说,这些步骤非常多,并且可能非常繁琐。使用Knative可以整合所有过程,所以从源代码管理、复杂的、自定义的程序构建,都有很多模板可以使用。

因此,使用Knative Build,可以在群集内完成所有这些操作。因为所有这些步骤都可以简化为单个清单部署,这使得开发人员进行迭代开发变得更加容易,并且开发应用程序也变得更加灵活。

Serving :服务系统

Serve在这里非常重要,它实际上是一种带有内置Istio的组件。Istio提供了许多功能 ,例如流量管理、智能路由、自动缩放和缩放到零等,这是一个非常酷的概念。但实际上,对于非服务器应用程序,开发者希望的是可以扩展到1000个数据包,并且当没有人访问时,将其恢复为0。

那么,让我们看看Knative Serve 是如何工作的。首先,在启动一个传统的microservice或function后,该服务指向并管理两个不同的事物:1)Route 2)Config。

事实上,每次你进行推送Knative Serve都会保存该条款。

所以,假设我们已经完成了应用更新,我们已经获得了两个版本,其中一各是新版本,而Config实际上将管理这两个版本。

使用Istio流量管理功能,实际上可以通过Route管理所有流量,并将它们路由到新旧两个版本中的一个或多个中,我们可以这么假设,如所有流量的10%被路由到版本2,90%停留在版本1上。这样一来,我们就可以计划进行阶段性的展示,甚至做一些A/B测试。

所以,Knative Serve为我们提供了快照,提供了智能的、可拓展的路由。所有非常酷的功能。

Build和Serve可以解决大部分开发者在Kuberntes进行CI/CD和部署microservice时遇到的问题。

Event :事件系统

Event系统,是最近发布的项目之一,虽然正在开发,但有一些功能以及可以使用了。它主要用于调用应用。

除了我们熟悉的正常应用调用之外,serverless 最重要的是基于事件的触发机制,也就是说当某件事发生时,就触发某个特定的函数。

事件概念的出现,让函数和具体的调用方能够解耦。函数部署出来不用关心谁会调用它,而事件源触发也不用关心谁会处理它。

随着这个功能得到更多开发,变得更加健壮,我们将看到许多选项和机会来利用Knative Eventing。

上一篇 下一篇

猜你喜欢

热点阅读