+
80
-

Knative与kubernetes有啥区别不同?

Knative与kubernetes有啥区别不同?


网友回复

+
0
-

什么是Knative?

Knative是Google2018的Google Cloud Next大会上发布的一款基于kubernetes的Serverless框架。

knative的目的是在kubernetes之上提供一个简单、一致的层,以解决在开发人员和平台之间创建更牢固的边界,使得开发人员可以专注他们的业务逻辑。

knative是建立在kubernetes和Istio平台之上的,使用了kubernetes提供的容器管理组件(deployment、service、Pod、ConfigMap等)以及Istio提供的网络管理组件(Ingress、LB);

Knative中有两个重要的组件,分别是为其提供流量的Serving(服务)组件以及确保应用程序能够轻松消费事件的Eventing组件;

部署、升级和路由。

应用部署应该是全部部署或者全部不部署吗?

knative支持渐进式交付,并不是所有的HTTP请求都会到达生产环境系统中的一个软件版本上,而是所有的HTTP请求都会到达整个分布式系统上,由该软件的多个版本共同响应,在系统中可以同时运行多个版本,并在这些版本之间分配流量,这意味着部署可以按请求而不是实例的粒度进行;

自动扩/缩容

系统中的流量是不固定的,有时没有流量,有时候流量过大,当没有流量时,系统的部分资源是浪费的,当流量过大时,系统就会承受过大的压力。Knative使用Knative Pod自动缩放器(KPA)进行扩/缩容,它是一种基于请求指标的自动缩放器,已与Knative的路由、缓冲和指标组件深度集成。自动缩放器无法解决所有问题,但是可以解决大部分流量的问题。

什么是Serving?

Serving模块提供了一组特定的对象,包括Service(服务)、Configuration(配置)、Revision(修订版本)、Route(路由)。Knative通过kubernetes CRD(自定义资源)的方式实现了这些对象。

在kubernetes创建一个应用的时候需要定义什么?

APP->Deployment->Service->ConfigMap->Secrets甚至我们还需要定义一个Ingress;但是在Knative当中,一个Service就可以搞定。这里的Service不是kubernetes的Service,而是Knative中的service,可以简写为kvc,在资源规范里可以看见;

[root@knative-k8s-master-139 ~]# kubectl api-resources | grep "knative"services kservice,ksvc serving.knative.dev/v1 true Service

创建一个Service(kservice)的时候会自动生成一个Configuration,基于Configuration创建Revision,再创建Route,客户端请求的流量也是由Route发给Revision;

我知道答案,我要回答