【问题标题】:Can GCP's Cloud Run be used for non-HTTP services?GCP 的 Cloud Run 可以用于非 HTTP 服务吗?
【发布时间】:2020-11-16 06:33:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-cloud-run


    【解决方案1】:

    技术上“不”,Cloud Run 不能用于非 HTTP 服务。请参阅 Cloud Run 的container runtime contract

    但也“有点”:

    1. Cloud Run 服务的 URL 可以保持“私有”(默认情况下),这意味着除了某些特定身份之外,任何人都可以调用 Cloud Run 服务。见this page to learn more)
    2. 容器必须监听某个端口上的请求,并且它在请求处理之外没有 CPU。但是,很容易将二进制文件包装到轻量级 HTTP 服务器中。例如,请参阅使用 very small Go HTTP sevrer 调用任意 shell 脚本的 Shell sample

    【讨论】:

    • 谢谢,但为了清楚起见,Cloud Run 只接受 HTTP 请求。正确的?我对此有点怀疑,因为我认为 Cloud Run 是 GKE 的托管版本,因此,我希望它支持任何协议。既然您说 Cloud Run 在请求处理之外没有 CPU,这打破了我的所有理解。
    • 我的意思是 Cloud Run 的用例是什么?我宁愿使用 Cloud Functions!
    • @Mehran 阅读此链接以更好地了解 Cloud Run:cloud.google.com/run/docs/reference/container-contract
    • Cloud Run 与 Cloud Functions:Coud Run 允许您使用任何语言或添加任何二进制文件,每个实例一次可以有多个请求(并发),您可以添加自己的自定义域。
    • Cloud Run 不是 GKE 的托管版本。 GKE 是 Kubernetes 的托管版本。 Cloud Run 是 Knative 的完全托管版本。
    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 2022-01-24
    • 2022-01-27
    • 2021-01-05
    • 2021-04-14
    • 2021-04-25
    • 2020-08-19
    • 2020-09-05
    相关资源
    最近更新 更多