在Kubernetes上做无服务器的5种方法

称其为“ 无服务器 ”,称其为“事件驱动的计算”或称其为“功能即服务(FaaS)”,其思想是相同的:动态分配资源以运行单个功能,本质上是微服务 ,这些功能在响应中被调用事件。 无服务器计算平台允许应用程序开发人员专注于应用程序,而不是基础架构及其所有管理细节。

大多数云提供商都提供了某种无服务器平台,但是您可以仅使用两种要素来构建自己的平台。 其中之一就是Kubernetes ,它是一种容器编排系统,已成为构建组件化,弹性应用程序的标准平台。 第二个是用于在Kubernetes中构建无服务器应用程序模式的众多系统中的任何一个。

[ 同样在InfoWorld上:对不起,Linux。 Kubernetes现在是重要的操作系统 ]

Kubernetes的大多数无服务器框架都具有以下共同特征:

  • 在本地或远程部署到任何支持Kubernetes的环境,包括OpenShift之类的环境。
  • 支持以任何语言编写的运行代码,并在框架中预先打包了一些常见的运行时。
  • 通过多种事件(HTTP端点,队列消息或其他挂钩)触发代码执行。

在Kubernetes上构建无服务器的主要优势之一是可以更好地控制基础平台。 许多无服务器产品限制了它们运行的​​功能的行为,有时使某些类型的应用程序不切实际。 使用Kubernetes,您可以创建满足您需求的无服务器平台,将基础架构留给Kubernetes运营商,让开发人员专注于编写基本代码。

这是将无服务器功能带入Kubernetes的五个主要项目。

裂变

Fission由Managed-Kubernetes公司Platform 9创建和维护。 其成名的主要主张是,您只需提供定义文件,即可创建FaaS应用程序而不必构建容器。

Fission可以安装或不安装Helm图表,并且可以安装在两个版本中。 有一个完整版本的消息队列和InfluxDB支持日志记录,以及一个精简版的基本功能服务。 前者是为生产部署而设计的,而后者则是为了弄湿你的脚。

要将代码添加到Fission部署中,请使用基于YAML的规范文件。 Fission的命令行工具使您可以为函数以及用于触发其入口点的路由创建YAML文件。 spec文件还允许您为代码提供环境变量,辅助容器,卷和Kubernetes污点/容差控件

Fission还提供“ 工作流程” 。 通过Helm图表安装,工作流将一个功能的输出传递给另一功能。 函数甚至不必使用相同的语言。 请注意,尽管工作流系统支持许多常见的原始二进制类型以降低开销(例如,整数或通用字节流),但这会以性能为代价,因为每个函数的输出都呈现为交换格式。

最初与FaaS关联的缺点之一是,第一次调用函数时,启动与之关联的容器会有明显的延迟。 Fission使容器保持预热状态,以最大程度地减少函数首次运行时的延迟。

Fission为开发人员和管理员提供了其他便利。 可以将服务部署到没有外部Internet访问的群集中,并且可以根据需要将代码热重新加载到群集中。 还可以记录并重放功能活动,以帮助调试。

Fission项目可在高度自由的Apache许可下获得,因此可以根据需要自由地进行重做。

[ 同样在InfoWorld上:使Kubernetes更好的11种工具 ]

基尼特语

Knative最初由Google创建,用于在Kubernetes上运行无服务器应用程序,而Knative则专注于生产中无服务器部署所共有的模式。 但是,Knative需要直接专业知识来管理许多Kubernetes组件才能有效使用。

除了Kubernetes,Knative还需要路由系统或服务网格(例如Istio),但也可以使用其他选项(例如AmbassadorGloo) 。 这意味着需要做更多的工作,但是该项目提供了在各种云服务和Kubernetes环境(包括普通Kubernetes)中使用每个选项的详细指南。

Knative主要通过利用或扩展现有的Kubernetes工具和功能来工作。 应用或功能通过YAML文件进行配置,并作为您构建的Docker容器交付。 添加,修改或删除定义是通过kubectl命令行应用程序完成的。 有关Knative应用的指标,请使用Grafana。 缩放可以使用Knative自己的自动缩放器来完成,也可以使用任何其他与Kubernetes兼容的缩放器(包括自定义编写的缩放器)来完成。

Knative正在大力开发中,其许多专用工具仍处于粗糙状态。 其中包括knctl (专门用于Knative的CLI),如果您只想专注于Knative,则可以避免使用Kubernetes的其他工具来管理Knative的麻烦。 和ko ,它是通过消除容器构建步骤在Knative上构建Go应用的工具。

无核

Kubeless由Bitnami创建,Bitnami是通用Web应用程序堆栈的便捷安装程序的开发人员。 Kubeless使用Kubernetes的本地自定义资源定义来处理函数,因此Kubernetes隐喻和Kubeless功能之间的抽象程度略有下降。

平台附带了最常见的语言运行时:.NET,Java,Python,Node.js,PHP,Ruby,Go,甚至是用于云原生开发的新型Ballerina语言 。 运行时只是Docker映像,尽管Kubeless具有使用Dockerfiles构建自定义运行时的特定打包格式

[ 同样在InfoWorld上:使Kubernetes更容易的11种工具 ]

另一个便捷的Kubeless功能是其CLI,该命令与AWS Lambda CLI相同。 如果您想从AWS Lambda迁移而又想保留一些现有的管理脚本,或者不必学习全新的命令集,这将非常方便。

Kubeless还用作Serverless Framework的插件, Serverless Framework是用于在各种体系结构上构建无服务器应用程序的系统。 如果您已经使用了Serverless或Kubeless,那么添加其中之一将比使用其他功能更容易。

OpenFaaS

OpenFaaS的目标是“简化无服务器功能”。 简单来说,开发人员的意思是“没有比部署Docker容器困难得多”。

OpenFaaS可以部署到Kubernetes或Docker Swarm集群(用于本地测试或低需求使用)。 您可以使用OpenFaaS CLI将Docker映像构建,推送和部署到集群中以运行功能。 现有的模板提供了预制的方式来部署用Go,Python,Node.js,.NET,Ruby,Java或PHP 7编写的应用程序,尽管您始终可以自己滚动。 OpenFaaS CLI还为您提供了管理集群中机密的方法,而内置的Web UI允许您创建和管理新功能。

OpenFaaS的另一个版本OpenFaaS Cloud重新打包了OpenFaaS,为多个开发人员提供功能,包括与Git集成(包括GitHub和GitLab的自托管版本),CI / CD,机密管理,HTTPS,以及将事件馈送到Slack和其他服务器的功能。下沉。 OpenFaas Cloud可作为免费的开源产品获得,并且具有托管版本,当前可以免费使用。

[ 通过InfoWorld Daily新闻通讯了解软件开发,云计算,数据分析和机器学习方面的最新发展 ]

OpenWhisk

Apache OpenWhisk被称为通用无服务器平台。 Kubernetes只是可用于在OpenWhisk中运行容器的几个选项之一,因为OpenWhisk还支持Mesos和Docker Compose。 尽管如此,Kubernetes是首选,因为它具有用于应用程序部署的工具,尤其是Helm图表。 IBM Cloud Functions基于OpenWhisk项目,因此也可以使用OpenWhisk CLI命令。

与大多数其他无服务器Kubernetes框架不同,OpenWhisk是用Scala语言而不是Go(Kubernetes和Docker都用Go编写)编写的。 仅当您想对OpenWhisk进行黑客攻击并且只有Go的使用经验时,这才可能成为问题。

大多数流行的应用程序运行时选项都预包装有OpenWhisk:Java,Node.js,Python,Ruby,PHP和.NET。 此外,还包括许多深奥和前沿的选项:Scala,Ballerina,Swift和Rust。 运行时只是Docker容器,因此很容易提供您自己的容器。

一种方便的OpenWhisk部署功能是“压缩操作”。 使用代码包的清单文件将代码和辅助文件的.zip存档指向OpenWhisk,OpenWhisk将从中创建一个动作。 OpenWhisk CLI还包括将代码目录树转换为此类归档文件的工具。 服务包目录使您可以轻松地将应用程序插入常见的第三方产品中,例如GitHub,Slack,Apache Kafka或Jira。

From: https://www.infoworld.com/article/3510472/5-ways-to-do-serverless-on-kubernetes.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值