文档章节

国内在Minikube上搭建Knative及示例演示

xiaomin0322
 xiaomin0322
发布于 07/11 17:51
字数 1197
阅读 35
收藏 0

1. 什么是Serverless?什么是Mnative?
什么是 Severless, 下面是 CNCF 对 Serverless 架构给出的定义:

“Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment”

从定义中可以看出 Serverless 架构应该下面的几个特点:

构建及运行应用的基础设施环境
无需进行服务的状态管理
足够细粒度的部署模式
可扩展且按使用量付费
上面的几个特点,除去足够细粒度的部署模式外,Kubernetes 都能够提供非常好的支持。幸运的是,不管是为了让 Kubernetes 完整支持 Serverless 架构,还是 Google 在 cloud 上更加吸引开发者,Google 在Google Cloud Next 2018 上,发布了 Knative,并将其称为 : “ 基于 Kubernetes 的平台,用来构建、部署和管理现代 Serverless 架构 ”。Knative的主要角色如下图中所描述:

Knative 致力于提供可重用的“通用模式和最佳实践组合”的实现,目前可用的组件包括:

Build: Cloud-native source to container orchestration
Eventing: Management and delivery of events
Serving:Request-driven compute that can scale to zero
1.1 Build 构建系统
Knative 的构建工作都是被设计于在 Kubernetes 中进行,和整个 Kubernetes 生态结合更紧密;另外,它旨在提供一个通用的标准化构建组件,使其可以在广泛的场景内得以使用。正如官方文档中的说 Build 构建系统,更多是为了定义标准化、可移植、可重用、性能高效的构建方法。Knative 提供了 Build CRD 对象,让用户可以通过 yaml 文件定义构建过程。一个典型的 Build 配置文件如下:

apiVersion: build.knative.dev/v1alpha1
kind: Build
metadata:
  name: kaniko-build
spec:
  serviceAccountName: build-bot
  source:
    git:
      url: https://github.com/my-user/my-repo
      revision: master
  template:
    name: kaniko
    arguments:
    - name: IMAGE
      value: us.gcr.io/my-project/my-app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.2 Serving:服务系统
Serving 的核心功能是让应用运行起来以提供服务。其提供的基本功能包括:

自动化启动和销毁容器
根据名字生成网络访问相关的 Service、ingress 等对象
监控应用的请求,并自动扩缩容
支持蓝绿发布、回滚功能,方便应用方法流程
Knative Serving 功能是基于 Kubernetes 和 Istio 开发的,它使用 Kubernetes 来管理容器(deployment、pod),Istio 来管理网络路由(VirtualService、DestinationRule)。
下面这张图介绍了 Knative Serving 各组件之间的关系。


1.3. Eventing:事件系统
Knative 定义了很多事件相关的概念。介绍一下:

EventSource:事件源,能够产生事件的外部系统。
Feed:把某种类型的 EventType 和 EventSource 和对应的 Channel 绑定到一起。
Channel:对消息实现的一层抽象,后端可以使用 kafka、RabbitMQ、Google PubSub 作为具体的实现。channel name 类似于消息集群中的topic,可以用来解耦事件源和函数。事件发生后 sink 到某个 channel 中,然后 channel 中的数据会被后端的函数消费。
Subscription:把 channel 和后端的函数绑定的一起,一个 channel 可以绑定到多个 Knative Service。
目前支持的事件源有三个:github(比如 merge 事件,push 事件等),Kubernetes(events),Google PubSub(消息系统),后面还会不断接入更多的事件源。

1.4 Auto-scaling
Auto-scaling 其实本质上是用于提高云上使用资源的弹性、提供按照使用量计费的能力,以提供给用户高性价比的云服务,其有以下两个特点:

Request-driving:根据请求量动态伸缩,目前通过统计系统当前并发请求量、和配置中的基准值比较,做出伸缩决策。
Scale to zero:无流量时完全释放资源,有请求时重新唤醒。
Knative Serving 中抽象了一系列用于定义和控制应用行为的资源对象,称为Kubernetes Custom Resource Definitions (CRDs)。

Service:app/function生命周期管理
Route:路由管理
Configuration:定义了期望的运行状态
Revision: 某一时刻 code + configuration ,Revision 是不可变对象,修改代码或配置生成新的 Revision
4者间的交互如下图示:

Revision 生命周期有三种运行状态:
Active:Revision 启动,可以处理请求
Reserve:一段时间未请求为 0 后,Revision 被标记为 Reserve 状态,并释放占用的资源、伸缩至零
Retired: Revision 废弃,不再收到请求
其具体的 auto-scaling 的过程,这里就不介绍了,可以自行了解。
--------------------- 

本文转载自:https://blog.csdn.net/java060515/article/details/84388101 

xiaomin0322
粉丝 146
博文 3936
码字总数 199458
作品 0
上海
架构师
私信 提问
阿里云Kubernetes容器服务上体验Knative

概述 Knative Serving是一种可缩放至零、请求驱动的计算运行环境,构建在 Kubernetes 和 Istio 之上,支持为 serverless 应用、函数提供部署与服务。Knative Serving的目标是为Kubernetes提供...

阿里云云栖社区
01/31
0
0
Kubernetes 入门:运行无状态服务

本文以 ANOYI-BLOG 这个博客系统为例,演示在 Kubernetes 集群中运行无状态服务,以及相关命令的用法介绍。 先决条件 确保 kubernetes 集群处于运行状态 【Kubernetes 环境搭建 - MacOS】 输...

Anoyi
2018/05/09
0
0
Istio-0.8.0在Minikube环境中快速启动Bookinfo示例

Istio-0.8.0在Minikube环境中快速启动Bookinfo示例 之前发表了从零开始应用Istio--入门示例,使用的istio版本比较低,在0.8.0版本下发现很多命令不一样了,所以总结一下,重新跑一下Bookinfo. 一...

ganity
2018/07/26
0
0
附002.Minikube介绍及使用

  一 Minikube介绍      1.1 概述      1.2 Minkube功能      1.3 架构示意      二 Minikube安装      2.1 前置条件      2.2 正式安装      三 使用Minkube...

SEOwhywhy
06/18
117
2
如何在Mac中创建MiniKube

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/forezp。 https://blog.csdn.net/forezp/article/details/82563153 转载请标明出处...

方志朋
2018/09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部