我已经使用GKE服务在Google Cloud上创建了Kubernetes集群。
GCP环境具有一个VPC,该VPC使用VPN连接到本地网络。 GKE群集是在同一VPC的子网(例如subnet1)中创建的。子网1中的VM能够通过其内部(专用)IP地址与本地终结点计算机进行通信。整个子网的IP地址范围(10.189.10.128/26)已在本地防火墙中列入白名单。
GKE Pod使用分配给它们的辅助IP地址中的IP地址(10.189.32.0/21)。我在其中一个Pod中执行了exec,并尝试访问内部部署网络,但无法获得响应。当我检查网络日志时,我发现源ip是Pod的IP(10.189.37.18),该IP用于与本地终结点(10.204.180.164)进行通信。我希望Pod应该在哪里使用节点的IP地址与本地端点进行通信。
已经为Pods完成了部署,并且该部署作为ClusterIP服务公开。该服务已附加到GKE入口。
答案 0 :(得分:0)
我发现IP伪装应用于GKE群集,因此当您的Pod一起聊天时,他们看到的是真实IP,但是如果一个Pod与互联网上的资源交谈,则会使用节点IP。
此规则在GKE上的默认配置为:10.0.0.0/8 因此,该范围内的任何IP均被视为内部IP,并将使用Pod的IP进行通信。
希望此范围可以轻松更改:
apiVersion: v1
data:
config: |
nonMasqueradeCIDRs:
- 10.149.80.0/21 <-- this IP range will now be considered as external and use nodes' IP
resyncInterval: 60s
kind: ConfigMap
metadata:
name: ip-masq-agent
namespace: kube-system