谷歌Cloud Run解密:如何把无服务器和按需Kubernetes结合起来

 

 

谷歌的新Cloud Run服务是基于Knative构建的无服务器平台——该运行时环境为无服务器工作负载和Functions Framework扩展了Kubernetes。但与其他无服务器功能(你通常会将专门编写的代码作为功能运行并由事件触发)不同,Cloud Run允许你将现有代码打包到Docker容器中。

 

该容器可以在完全托管的无服务器Cloud Run环境中运行,但由于使用Knative,它也可以在Google Kubernetes Engine上运行,因此你可以向现有的Kubernetes集群添加按需的、根据使用付费的代码。

你在部署容器时决定在何处运行容器(而不是在打包容器时),因为许多客户要求提供相同的无服务器功能,但一些看重简单性,一些看重更多灵活性。

“Cloud Run on GKE让开发人员在GKE上的托管运维基础设施上获得完全相同的体验。开发人员可以获取所编写的代码,并在门户网站或Gcloud命令行中获得同样的体验,并定位他们想要的目的地。你可以使用相同的工具,获得相同的体验,可以了解API以及用户界面的工作方式,并将工作负载迁移到任何Knative兼容的集群上。“

想法是改进和简化开发人员体验,可以提供无服务器和GKE部署的混合以供不同的开发人员使用。

 

 

“客户告诉我们他们喜欢无服务器的想法,喜欢托管的基础设施,希望解决运维问题。但他们希望能够运行任意工作负载。他们希望能够使用专有软件或旧软件(如15年前的Java二进制文件),而仍能获得无服务器的所有好处。“

Cloud Run提供Docker和无服务器的组合。“Docker是打包的标准化格式,双方都有生态系统。“

在哪里运行Cloud Run

可以部署到Cloud Run的代码需要是一个无状态HTTP容器(用于侦听配置为(但不应该是硬编码)8080的端口上的请求),在收到请求后的四分钟内启动HTTP服务器,在请求超时内响应,并为64位Linux编译。

“你的容器不应该依赖本地的状态。”谷歌无服务器团队的Steren Gianni解释道,“你可以使用一致的存储,如数据库和云存储,但在容器内,你只能依赖临时状态。下次调用容器时,你创建的内容不一定存在。“这些限制已经在容器运行时契约中指定。

如果你的代码没有在容器中,则以常规方式构建并将其放入容器注册表中。

通过粘贴容器注册表的URL将容器部署到Cloud Run,你得到的是HTTPS URL。通过调用带有Python脚本的LibreOffice(Java二进制文件),安装字体并使用Flask将Word文档转换为PDF,谷歌演示了带有Python脚本的Cloud Run。一个2Gb的容器在7秒内通过会议室Wi-Fi部署,并花了10秒钟启动,但随后在一分钟内处理了一千个PFD。

这是一个稳定的HTTPS URL——如果要将其用于网站或API端点或移动后端或Webhook,则可以向因特网公开。或者你可以在内部使用它来将单体重构为可独立扩展的微服务。

 

 

完全托管的Cloud Run服务是最简单的选择。“你只需要给我们一个容器,其他一切我们来管。我们部署,设置HTTPS,设置端点,设置负载均衡,设置路由,设置扩展。不需要调整参数。这不是一个复杂的编排系统,这是一个非常易于使用的开发人员友好产品。“

Cloud Run根据使用付费,每100毫秒收费一次。

在Cloud Run中,容器运行在谷歌去年开源的gVisor沙箱之上,作为默认Kubernetes runc运行时的可选替代。这确实限制了Cloud Run可以运行的内容,因为它不支持所有Linux系统调用,但在实践中这不是个大问题。“你可能会碰到这种情况,但实际上,只要运行的是无状态的HTTP容器,问题通常很快就能修复。“如果你的代码在gVisor中确实存在问题,则Cloud Run on GKE不会使用容器沙箱。

Cloud Run on GKE具有相同的自动缩放功能。

因为Cloud Run是基于Knative构建的——它使用提供必要抽象的Kubernetes自定义资源定义,你可以先将现有应用程序容器化并自行运行,然后将其移至GKE以作为Kubernetes部署的一部分运行(无需重新打包)。你只需在填写要运行的容器的URL时选择GKE集群作为Cloud Run控制台中的位置。

如果你在Google云外部的其他Kubernetes集群上使用Knative,则可以向其添加Functions Framework,以便能够将容器或无服务器代码迁移到Cloud Run。“通过Knative示例和参考API,任何实施Knative的云提供商都能够获得相同的好处。“

Cloud Run可以利用Kubernetes的生态系统。Cloud Run可与Stackdriver集成以进行监控和记录,你也可以使用Datadog进行监控,或使用NodeSource的N | Solid运行时以获取Node.js代码的实时性能指标和自定义通知。

如果你正在尝试使用Cloud Run on GKE,那么值得注意的是,你无法在测试版服务中禁用Cloud Run on GKE——要阻止它运行,你必须删除集群,所以选择一个不怎么重要的集群来试。如果你没有现成的应用程序,StackBlitz正致力于集成,让你可以使用其一键式系统创建新的应用程序、GitHub repo和Cloud Run端点,为开始编码和测试做好准备。

现在,Cloud Run仅在美国地区提供服务,但谷歌表示它将很快进入欧洲地区。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值