谷歌新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。

扫一扫,分享到微信

网友观点

微信公众号

微信公众号