【问题标题】:How to allow outbound requests from a Google Cloud Run cluster on GKE如何在 GKE 上允许来自 Google Cloud Run 集群的出站请求
【发布时间】:2019-09-14 19:34:17
【问题描述】:

启用 Cloud Run 的集群默认禁用来自任何 pod 的出站网络流量

按照文档使用 Cloud Run 创建集群后,可以检查来自集群中 pod 内部的所有请求,不仅来自 Knative 服务 pod,而且实际上来自任何 pod,都将返回 404。不清楚哪个配置设置了这一点,但很明显,它是通过创建启用了 Cloud Run 的集群来实现的。

因此,例如,我们无法在此集群上安装 helm。事实上,我们无法安装任何需要来自 pod 的外部请求的东西。

重现步骤:

1 - 按照 Cloud Run 设置 official documentation

2 - 在集群中启动一个简单的 alpine pod: kubectl run -it --rm --restart=Never alpine --image=alpine sh

3 - 执行任何外部请求,例如:wget www.google.com

Cloud Run 还记录了这种行为并解释了如何enable outbound traffic

虽然,我按照这些步骤操作,但仍然无法启用流量。也许我做错了什么,或者它真的没有按应有的方式工作。

更新

https://stackoverflow.com/a/55861559/3165889 中所述,这发生在 Cloud Run 使用的当前 Istio 版本上,但应在 1.1 版本中进行更改,默认情况下将为所有出站请求启用出口。

【问题讨论】:

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


    【解决方案1】:

    这在 Cloud Run on GKE 设置文档中有记录: https://cloud.google.com/run/docs/gke/setup#enabling_outbound_network_access

    这很快就不需要了,因为它会在默认情况下通过迁移到 Istio 1.1 启用,其中出站流量策略默认允许任何出口流量。

    【讨论】:

    • 感谢分享!我已经尝试按照记录编辑 ConfigMap。虽然,在再次运行kubectl run -it --rm --restart=Never alpine --image=alpine sh 之后,我仍然没有启用出站流量。唯一对我有用的实际上是使用默认命名空间上的标签禁用 istio-injection。
    • 另一个注意事项,但这是另一个主题,是我的 pod 在上述命令之后没有被删除。只有高山容器被杀死。所以 istio-sidecar 容器让 pod 保持活跃。
    • 听起来是个新问题。
    • 如果它解决了您发布的问题,请不要忘记接受答案。
    • 感谢您的建议。但它真的没有。正如我在您在描述中的回答之前提到的那样:“Cloud Run 还记录了这种行为并解释了如何启用出站流量。虽然,我遵循了这些步骤,但仍然无法启用流量”。我还从其他人那里听说,他们无法通过官方文档使其正常工作。真正有帮助的是完全禁用 istio 注入。我将提供有关如何更改 ConfigMap 的更多反馈,也许您可​​以尝试帮助我。更新后我会尽快联系您。
    【解决方案2】:

    一种可能的解决方案是在默认命名空间上禁用 istio-sidecar: kubectl label namespace default istio-injection=disabled

    更多详情:https://gitlab.com/groups/gitlab-org/-/epics/1202#note_164285838

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 2020-05-20
      • 2021-09-06
      • 2019-12-04
      • 2016-07-14
      • 2020-10-13
      • 2020-06-24
      • 2019-10-02
      • 2019-10-29
      相关资源
      最近更新 更多