WEBKT

K8s Serverless 选型指南:除了 Knative,这几个框架也值得关注

29 0 0 0

为啥要考虑 Knative 之外的选择?

K8s Serverless 框架巡礼

选型建议

总结

在 Kubernetes (K8s) 上玩转 Serverless,Knative 绝对是明星选手。但如果想换换口味,或者 Knative 在某些场景下不太给力,还有哪些选择呢?别急,这就来盘点一下 K8s 上那些同样能打的 Serverless 框架,帮你找到最适合自己的那一款。

为啥要考虑 Knative 之外的选择?

Knative 确实很棒,但它也不是万能的。有时候,你可能需要更轻量级的方案,或者 Knative 的某些特性对你来说是“过度设计”。再或者,你就是想多了解一些,技多不压身嘛!

K8s Serverless 框架巡礼

  1. OpenFaaS

    • 特点: 轻量级、易于上手,对开发者友好。支持多种编程语言,可以通过 Docker 镜像部署函数。

    • 优势: 学习曲线平缓,社区活跃,有丰富的示例和教程。适合快速构建简单的 Serverless 应用。

    • 适用场景: 事件驱动型应用、API 网关、简单的数据处理任务。

    • 官方网站: https://www.openfaas.com/

    • 快速上手: OpenFaaS 提供了 faas-cli 命令行工具,可以方便地创建、部署和管理函数。例如,使用 Python 创建一个简单的 HTTP 函数:

      faas-cli new --lang python my-http-function
      

      然后在 my-http-function.yml 中配置函数的资源限制、环境变量等。

    • 避坑指南: 默认情况下,OpenFaaS 使用 Docker Hub 作为镜像仓库。如果你的网络环境不稳定,可以考虑配置私有镜像仓库。

  2. Kubeless

    • 特点: K8s 原生 Serverless 框架,直接利用 K8s 的 API 对象来管理函数。支持多种触发器,如 HTTP、消息队列等。

    • 优势: 与 K8s 集成度高,可以充分利用 K8s 的资源管理和调度能力。适合构建复杂的 Serverless 应用。

    • 适用场景: 需要精细化资源控制的场景、与 K8s 生态系统深度集成的应用。

    • 项目状态: 需要注意的是,Kubeless 项目已经进入维护模式,不再积极开发新功能。不过,对于已经在使用 Kubeless 的团队来说,它仍然是一个可靠的选择。

    • 快速上手: Kubeless 使用 CRD (Custom Resource Definition) 来定义函数。你可以创建一个 YAML 文件来描述函数,然后使用 kubectl apply 命令部署它。

      apiVersion: kubeless.io/v1beta1
      kind: Function
      metadata:
      name: my-function
      spec:
      handler: my-module.my_function
      runtime: python3.7
      function: |
      def my_function(event, context):
      return "Hello, world!"
    • 避坑指南: 由于 Kubeless 已经进入维护模式,建议关注社区的动态,或者考虑迁移到其他更活跃的 Serverless 框架。

  3. Fission

    • 特点: 专注于快速迭代和开发效率。支持多种编程语言,可以通过 HTTP 或事件触发函数。

    • 优势: 提供了强大的 CLI 工具和 Web UI,方便开发者管理和调试函数。支持 Canary 发布和蓝绿部署等高级特性。

    • 适用场景: 需要快速迭代的场景、对开发效率要求高的团队。

    • 官方网站: https://fission.io/

    • 快速上手: Fission 使用 fission 命令行工具来创建和部署函数。你可以使用 fission function create 命令创建一个新的函数,然后使用 fission route create 命令将函数绑定到 HTTP 路由。

      fission function create --name my-function --env python3.7 --code main.py
      fission route create --method GET --url /hello --function my-function
    • 避坑指南: Fission 的 Web UI 功能强大,但有时候可能会出现一些小 bug。建议多关注社区的 issue,及时更新到最新版本。

  4. riff

    • 特点: 基于 K8s 的事件驱动型 Serverless 框架。使用 Spring Cloud Stream 构建函数,支持多种消息中间件。

    • 优势: 利用 Spring Cloud Stream 的强大功能,可以方便地构建复杂的事件驱动型应用。适合 Java 开发者。

    • 适用场景: 事件驱动型应用、流式数据处理、微服务架构。

    • 项目状态: riff 项目的活跃度相对较低,需要有一定的 Spring Cloud 基础才能上手。

    • 快速上手: riff 使用 riff 命令行工具来创建和部署函数。你需要编写一个 Spring Cloud Stream 应用,然后使用 riff function create 命令将其部署到 K8s 集群。

      riff function create --name my-function --artifact my-function.jar --handler com.example.MyFunction
      
    • 避坑指南: riff 对 Spring Cloud Stream 的依赖较强,需要熟悉 Spring Cloud 的相关概念和配置。

选型建议

  • 快速上手,简单应用: OpenFaaS
  • K8s 原生,深度集成: Kubeless (需注意项目状态)
  • 快速迭代,开发效率: Fission
  • 事件驱动,Spring Cloud: riff

当然,选择哪个框架最终还是要看你的具体需求和团队的技术栈。建议先了解每个框架的特点,然后根据自己的情况进行评估和测试。

总结

Knative 之外,K8s 上还有很多优秀的 Serverless 框架可供选择。OpenFaaS 轻量易用,Kubeless 与 K8s 集成度高,Fission 注重开发效率,riff 则擅长事件驱动。希望这份指南能帮助你找到最适合自己的 K8s Serverless 解决方案!

Serverless 小能手 KubernetesServerlessKnative

评论点评

打赏赞助
sponsor

感谢您的支持让我们更好的前行

分享

QRcode

https://www.webkt.com/article/10168