Kubernetes:允许 pod 出口网络流量

Kubernetes: Allow pod egress network traffic

背景

刚刚将我的新 Kubernetes 集群部署到 Google 云。它是一个私有集群——只能从内部网络获得。我从 bastion 机器连接这个集群。使用我的 bastion 主机,我可以管理我的集群。

我的集群配置:

问题

我的 pods 似乎没有网络可以离开 pod。例如:

$ curl google.com 

Return 错误 - 无法连接。所以我用 SSH 登录了 pod 并试图找出问题所在。

我能想到的两个方案:

  1. 防火墙默认阻止所有出口流量?我试图通过允许出口的新防火墙规则来允许它。 它没有解决问题。 (其中 10.56.0.0/14 是我的 pods 范围)

  2. 我的网络没有 "default gateway" 允许访问互联网。我检查了 "routers" 区域,它似乎在那里:

问题

如何解决问题,让我的pods可以自由上网?

找到缺失的部分。

In the Kubernetes Engine Private Cluster model, your nodes have access to the rest of your VPC private deployments, including private access to Google managed services such as gcr.io, Google Cloud Storage and Google BigQuery. Access to the internet isn’t possible unless you set up additional mechanisms such as a NAT gateway.

source.

添加 NAT 解决了问题!