如何允许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网络。气流工人不能。
我们如何让工作人员访问10.200.0.0网络?我们需要更改kube-proxy的iptables吗?
一种可能的解决方案是将包从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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句