ServerLess架构

mtain 2025年02月05日 13次浏览

一、Serverless架构介绍

Serverless 提供了一种高效、经济的方式来构建应用,特别适合需要快速响应和弹性扩展的场景。尽管存在一些挑战,但其优势使
其成为现代云开发的重要组成部分。

  • 优点:
    ◦ 成本效益:按需付费,适合短期或波动性负载
    ◦ 快速部署:减少服务器管理,专注于代码开发
    ◦ 弹性扩展:自动处理负载变化,无需预配置

  • 缺点:
    ◦ 冷启动延迟:影响响应速度
    ◦ 供应商锁定:依赖特定平台,迁移困难
    ◦ 安全挑战:需谨慎管理资源和权限
    ◦ 开发体验限制:调试和日志可能不够方便

  • 适用场景:
    ◦ 事件驱动的任务(如文件处理、API后端)
    ◦ 短暂运行的任务,避免持续成本

  • 不适用场景:
    ◦ 持续运行的长任务或需要低延迟的应用
    ◦ 需要高度控制和定制化环境的情况

二、开源的ServerLess平台

内容为AI整理

1. OpenFaaS

  • 简介:OpenFaaS 是一个轻量级的 Serverless 平台,基于 Docker 和 Kubernetes 构建。它允许你将任何容器镜像作为无
    服务器函数运行。
  • 特点
    • 支持多种编程语言(Python、Node.js、Go 等)。
    • 提供 CLI 工具和 Web UI。
    • 易于部署在私有 Kubernetes 集群中。
  • 官网https://openfaas.com/
  • 开源协议:MIT

2. Kubeless

  • 简介:Kubeless 是一个 Kubernetes 原生的 Serverless 平台,专注于简化在 Kubernetes 上运行无服务器函数的过程。

  • 特点

    • 支持事件驱动架构(如 Kubernetes 事件、HTTP 触发器)。
    • 提供对多个编程语言的支持。
    • 高度可定制化,适合私有云环境。
  • 官网https://kubeless.io/

  • 开源协议:Apache 2.0


3. Apache OpenWhisk

  • 简介:OpenWhisk 是 Apache 软件基金会旗下的 Serverless 平台,支持多种后端(如 Docker、Kubernetes)。
  • 特点
    • 支持事件驱动架构和 HTTP 触发器。
    • 提供强大的扩展能力,适用于大规模应用。
    • 开源且高度可定制化。
  • 官网https://openwhisk.apache.org/
  • 开源协议:Apache 2.0

4. Serverless Framework

  • 简介:Serverless Framework 是一个流行的工具,支持跨平台的 Serverless 开发(包括 AWS Lambda、Google Cloud
    Functions、阿里云等)。它也支持私有化部署。
  • 特点
    • 提供丰富的插件生态系统。
    • 支持多语言和多框架。
    • 可以与 Kubernetes 集成,用于私有化部署。
  • 官网https://serverless.com/
  • 开源协议:MIT

5. Nuclio

  • 简介:Nuclio 是一个高性能的 Serverless 平台,专注于实时数据处理和机器学习推理。
  • 特点
    • 支持多种编程语言(Python、Go、Java 等)。
    • 提供高吞吐量和低延迟的函数执行。
    • 可以部署在私有云或 Kubernetes 集群中。
  • 官网https://nuclio.io/
  • 开源协议:Apache 2.0

6. Fission

  • 简介:Fission 是一个基于 Kubernetes 的 Serverless 平台,专注于快速函数部署和执行。
  • 特点
    • 支持多种编程语言(Python、Node.js、Go 等)。
    • 提供 HTTP 触发器和消息队列触发器。
    • 易于集成到现有 Kubernetes 集群中。
  • 官网https://fission.io/
  • 开源协议:Apache 2.0

7. Knative

  • 简介:Knative 是一个由 Google 主导的开源项目,用于构建和部署 Serverless 应用程序。它基于 Kubernetes,提供了
    一个现代化的应用运行环境。
  • 特点
    • 支持无服务器函数和容器化应用。
    • 提供自动扩缩容和事件驱动架构。
    • 高度可扩展,适合私有云环境。
  • 官网https://knative.dev/
  • 开源协议:Apache 2.0

8. Tanzu Serverless

  • 简介:Tanzu Serverless 是 VMware 的一个无服务器平台,基于 Kubernetes 构建,支持私有化部署。
  • 特点
    • 提供事件驱动和函数即服务(FaaS)能力。
    • 高度集成 Tanzu 平台生态系统。
  • 官网https://tanzu.vmware.com/serverless
  • 开源协议:EPL-2.0

9. Edgeless

  • 简介:Edgeless 是一个轻量级的 Serverless 框架,专注于边缘计算和私有化部署。
  • 特点
    • 支持多种触发器(HTTP、定时任务等)。
    • 提供高安全性和低延迟。
  • 官网https://edgelessservers.org/
  • 开源协议:Apache 2.0

三、Apache OpenWhisk部署

openWhisk_deploy.sh

#!/bin/bash
# 参考文章:https://zhuanlan.zhihu.com/p/668166355

sudo apt-get update
mkdir ~/openwhisk
cd ~/openwhisk
# 安装docker
apt install -y docker.io
# 修改Docker镜像与cgroup驱动
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn"
    ],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 安装KIND
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# 安装Kubectl
curl -LO https://dl.k8s.io/release/v1.24.3/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 安装helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash


# 安装OpenWhisk部署工具 wskdeploy
wget https://github.com/apache/openwhisk-wskdeploy/releases/download/1.2.0/openwhisk_wskdeploy-1.2.0-linux-amd64.tgz
tar zxvf openwhisk_wskdeploy-1.2.0-linux-amd64.tgz
sudo mv ./wskdeploy /usr/bin/
# 安装OpenWhisk的命令行工具 wsk
wget https://github.com/apache/openwhisk-cli/releases/download/1.2.0/OpenWhisk_CLI-1.2.0-linux-amd64.tgz
tar zxvf OpenWhisk_CLI-1.2.0-linux-amd64.tgz
sudo mv ./wsk /usr/bin/

# 下载OpenWhisk部署
git clone https://github.com/apache/openwhisk-deploy-kube.git
cd openwhisk-deploy-kube
# 启动K8s集群
sudo kind create cluster --wait=120s --config=./deploy/kind/kind-cluster.yaml
# 部署OpenWhisk
sudo helm install owdev ./helm/openwhisk -n openwhisk --create-namespace -f ./deploy/kind/mycluster.yaml

sudo wsk property set --apihost localhost:31001
sudo wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP

部署服务操作命令

# 查看install的pod
sudo kubectl get pods -n openwhisk |grep install-packages

# 查看pod详情
sudo kubectl describe po owdev-install-packages-2frgf -n openwhisk

# 卸载owdev
sudo helm uninstall owdev -n openwhisk

因镜像无法拉取,未能正常运行openwhisk