GCP 的 Cloud Run 可以用于非 HTTP 服务吗?

Meh*_*ran 4 google-cloud-platform google-kubernetes-engine google-cloud-run

我是 GCP 的新手,并试图对其进行正面和反面。到目前为止,我已经体验过 GKE 和 Cloud Run。

在 GKE 中,我可以在我喜欢的任何端口下为任何类型的服务创建工作负载(部署)并为其分配资源。然后我可以创建一个负载均衡器并打开从 pod 到 Internet 的端口。负载均衡器有一个 IP,我可以用它来访问底层 pod。

另一方面,当我创建一个可以运行的服务时,我会给它一个 docker 镜像和一个端口,一旦服务启动并运行,它就会公开一个 HTTPS URL!我在 Cloud Run 中指定的端口是 docker 的内部端口,如果我想访问 URL,我必须通过端口 80 来完成。

这是否意味着 Cloud Run 仅适用于端口 80 下的 HTTP 服务?或者也许我错过了什么?

Ste*_*ren 5

从技术上讲“不”,Cloud Run 不能用于非 HTTP 服务。请参阅 Cloud Run 的容器运行时合同

但也“有点”:

  1. Cloud Run 服务的 URL 可以保持“私有”(默认情况下是这样),这意味着除了某些特定身份之外,不允许任何人调用 Cloud Run 服务。请参阅此页面以了解更多信息
  2. 容器必须侦听某个端口上的请求,并且它在请求处理之外没有 CPU。但是,将二进制文件包装到轻量级 HTTP 服务器中非常容易。例如,请参阅使用非常小的 Go HTTP sevrer来调用任意 shell 脚本的Shell 示例

  • 谢谢,但需要明确的是,Cloud Run 仅接受 HTTP 请求。正确的?我对此有点怀疑,因为我认为 Cloud Run 是 GKE 的托管版本,因此,我希望它支持任何协议。现在你说 Cloud Run 在请求处理之外没有 CPU,这打破了我的所有理解。 (2认同)