GKE共享VPC中服务之间的通信

时间:2018-08-06 19:24:05

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

我为我的项目设置了此配置:

https://cloud.google.com/vpc/images/shared-vpc/shared-vpc-example-two-tier.svg

一切都在Google Kubernetes Engine下运行。

  • 第1层服务项目中具有子网10.0.4.0/22的NodeJS服务

必须连接到

    具有子网的Tier 2服务项目中的
  • NodeJS API: 172.16.4.0/22,该部署在内部LB后面:

kubectl describe svc gateway-node-api  --namespace master

Name:                     gateway-node-api
Namespace:                master
Labels:                   app=node-api
                          chart=node-api-0.1.2
                          heritage=Tiller
                          release=gateway-node-api
Annotations:              cloud.google.com/load-balancer-type=Internal
Selector:                 app=node-api,release=gateway-node-api
Type:                     LoadBalancer
IP:                       172.16.23.21
LoadBalancer Ingress:     172.16.4.5
Port:                     http  3000/TCP
TargetPort:               http/TCP
NodePort:                 http  31386/TCP
Endpoints:                172.20.2.30:3000
Session Affinity:         None
External Traffic Policy:  Cluster

在1层NodeJS服务中使用172.16.4.5:3000无法连接到2层NodeJS API。

我可能错过了什么?

1 个答案:

答案 0 :(得分:1)

发现我的问题,我对防火墙规则文档的阅读不足:

https://cloud.google.com/vpc/docs/firewalls

配置共享VPC之后,我创建了一条规则,适用于所有传入请求的所有网络:

shared-network-allow-ssh-icmp    shared-network  INGRESS    1000      icmp,tcp:22,tcp:80

认识到我还需要应用一条规则,当从一级服务的子网收到请求时,所有tcp端口上的网络所有实例都可以访问:

service1-allow-tcp               shared-network  INGRESS    1000      tcp:1-65535