Kubeless 是 Kubernetes 原生的 Serverless 框架。
本文将介绍 Kubeless 架构设计。
Kubeless 有三个核心概念,分别是:
函数表示的是要被执行的代码。除了代码,它还包括运行时的依赖项以及构建指令等元数据信息。函数有独立的生命周期。函数支持以下方法:
触发器表示的是关联到函数的事件源。当事件源中发生事件时,Kubeless 将确保最多调用一次关联的函数。触发器可以与单个函数关联,也可以与多个函数关联,具体取决于事件源类型。它们与函数的生命周期是脱钩的。触发器支持以下方法:
目前 Kubeless 官方支持5种触发器:HTTP Trigger、CronJob Trigger、Kafka Trigger、NATS Trigger、AWS Kinesis Trigger。
安装 Kubeless 的时候,默认安装了 HTTP Trigger 和 CronJob Trigger,其他触发器如果有需要,需要自行安装。
此外,用户还可以自定义触发器。
运行时表示函数被执行时的语言和特定的运行环境。
可以通过 kubeless get-server-config 命令查看当前支持的运行时列表。
$ kubeless get-server-config
INFO[0000] Current Server Config:
INFO[0000] Supported Runtimes are: ballerina0.981.0, dotnetcore2.0, dotnetcore2.1, dotnetcore2.2, dotnetcore3.1, go1.13, go1.14, java1.8, java11, nodejs6, nodejs8, nodejs10, nodejs12, php7.2, php7.3, python2.7, python3.4, python3.6, python3.7, ruby2.3, ruby2.4, ruby2.5, ruby2.6, jvm1.8, nodejs_distroless8, nodejsCE8, vertx1.8
每种运行时都封装在一个容器镜像中。这些镜像的引用被注入到 Kubeless 的配置中。
此外,除了 Kubeless 默认支持的运行时外,用户还可以自定义运行时。
Kubeless 利用 Kuberbetes 的多个概念来支持在 Kubernetes 之上部署函数。详细说明如下:
使用 Kubernetes CRD 和 CRD controller 构成了 Kubeless 的核心设计宗旨。
对函数和触发器使用单独的 CRD 可以将关注点清楚地分开。
使用单独的 CRD controller 可使代码保持解耦和模块化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。