【问题标题】:How do I connect Cloud Composer Airflow DAG to a VPN如何将 Cloud Composer Airflow DAG 连接到 VPN
【发布时间】:2020-11-02 20:31:43
【问题描述】:

如何允许 Cloud Composer Airflow DAG 通过 VPN 网关连接到 REST API?集群连接到相应的 VPC。

kube-proxy 可以访问 API,但容器不能。

我已经通过 SSH 连接到 kube-proxy 和容器并尝试了 traceroute。容器的 traceroute 以 kube-proxy 结束。 kube-proxy 在到达目的地之前有 4 个跃点。

我已经从 kube-proxy 中转储了 iptables,它们没有指定任何关于使用容器对 VPC 子网进行 NAT 的内容。

VPC 子网也不会显示在容器中,这是设计使然。

一些阅读材料: https://www.stackrox.com/post/2020/01/kubernetes-networking-demystified/

EDIT1:更多信息: 假设 VPN 将 VPC 连接到远程 10.200.0.0 网络。
VPC 有多个子网。主要范围是例如10.10.0.0/20。对于每个 Kubernetes 集群,我们还有两个子网,一个用于每个 pod (10.16.0.0/14),另一个用于服务 (10.20.0.0/20)。网关是 10.10.0.1。
每个 pod 又有自己的范围,其中 pod_1 是 10.16.0.0/14,pod_2 是 10.16.1.0/14,pod_3 是 10.16.3.0/14 等等。
其中一个 kube-proxy 有多个网络适配器。它使用 eth0 驻留在 10.10.0.0 网络中,并有一个到 10.16.0.0 的 cbr0 网桥。通过所述 kube-proxy 通过桥接,Airflow 的工作人员正在连接到网络。一名工人,例如10.16.0.1 只有一个网络适配器。

kube-proxy 可以访问 10.200.0.0 网络。 Airflow 工作人员不能。

我们如何让 worker 访问 10.200.0.0 网络?我们需要更改 kube-proxy 的 iptables 吗?

【问题讨论】:

  • VPN是否部署在当前VPC中?还是您执行对等操作以达到它?
  • @guillaumeblaquiere 它部署在当前的 VPC 中,带有 Google Cloud Classic VPN。
  • 您是否看到请求已到达 VPN 的另一端?大多数时候,当我设置 VPN 时,我会忘记返回的路......
  • 嗨@guillaumeblaquiere,我编辑了我的初始帖子以进一步解释网络。我们的 VPN 确实按预期工作,并且可以从我们可以访问和使用 API 的任何其他 VM 工作。现在我们想在 DAG 中部署我们的代码,以便它自动运行。
  • 嗯,如果您的连接正常,如果您没有特殊的防火墙规则,如果子网在同一个 VPC 中,它应该可以工作...您是否配置了 NAT?

标签: networking google-cloud-platform airflow google-kubernetes-engine


【解决方案1】:

一种可能的解决方案是将包从 kube 虚拟接口转发到节点的真实接口。例如。将以下规则添加到 ip 表中:

iptables -A FORWARD -i cbr0 -o eth0 -d 10.200.0.0/25 -j ACCEPT
iptables -A FORWARD -i eth0 -o cbr0 -s 10.200.0.0/25 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 2021-01-27
    • 1970-01-01
    • 2023-04-06
    • 2019-09-19
    • 2022-07-05
    • 2017-03-17
    • 2019-05-02
    相关资源
    最近更新 更多