一、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 触发器)。
- 提供对多个编程语言的支持。
- 高度可定制化,适合私有云环境。
-
开源协议: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