Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 无法在同一VPC上连接GKE和GCE?_Kubernetes_Google Cloud Platform_Google Compute Engine_Google Kubernetes Engine_Vpc - Fatal编程技术网

Kubernetes 无法在同一VPC上连接GKE和GCE?

Kubernetes 无法在同一VPC上连接GKE和GCE?,kubernetes,google-cloud-platform,google-compute-engine,google-kubernetes-engine,vpc,Kubernetes,Google Cloud Platform,Google Compute Engine,Google Kubernetes Engine,Vpc,我不熟悉谷歌云平台和以下环境: 我有一个作为MongoDB服务器运行的计算引擎VM和一个作为Docker的NodeJS服务器运行的计算引擎VM。然后,NodeJS应用程序通过默认的VPC内部IP连接到Mongo。现在,我正在尝试将NodeJS应用程序迁移到googlekubernetes引擎,但在将NodeJS应用程序Docker映像部署到集群时,我无法连接到MongoDB服务器 GCE和GKE等所有服务均位于同一地区(us-east-1) 我通过SSH访问kubernetes群集节点,部署一个

我不熟悉谷歌云平台和以下环境:

我有一个作为MongoDB服务器运行的计算引擎VM和一个作为Docker的NodeJS服务器运行的计算引擎VM。然后,NodeJS应用程序通过默认的VPC内部IP连接到Mongo。现在,我正在尝试将NodeJS应用程序迁移到googlekubernetes引擎,但在将NodeJS应用程序Docker映像部署到集群时,我无法连接到MongoDB服务器

GCE和GKE等所有服务均位于同一地区(us-east-1)

我通过SSH访问kubernetes群集节点,部署一个简单的MongoDB Docker映像,并尝试通过命令行连接到远程MongoDB服务器,但问题是相同的,在尝试连接时超时

我还检查了GCP上的防火墙设置,以及MongoDB服务器上的
bindIp
设置,它没有对此进行阻止


有人知道会发生什么吗?非常感谢。

默认情况下,GKE集群中的容器应该能够通过内部IP访问同一VPC的GCE虚拟机。这就像你从GKE容器访问互联网(如google.com),GKE和VPC知道如何路由流量。问题必须与其他配置(防火墙或您的应用程序)有关

你可以做一个测试,在GCE虚拟机中启动一个简单的HTTP服务器,比如说内部IP是
10.138.0.5

python -m SimpleHTTPServer 8080
然后创建一个GKE容器并尝试访问该服务:

kubectl run my-client -it --image=tutum/curl --generator=run-pod/v1 -- curl http://10.138.0.5:8080

在我的例子中,从GKE到GCE VM的流量被Google防火墙阻止,即使两者在同一个网络中(默认)

我必须在集群详细信息中列出集群pod网络的白名单:

Pod地址范围10.8.0.0/14


私有集群也可以使用内部负载平衡器来接受来自VPC网络的流量。据我所知,Hi@JohnHanley,本文档介绍了来自GKE集群的传入流量,我的问题是来自同一VPC上的GKE集群到GCE实例的传出流量。VPC IP地址在私有范围内(RFC1918)。这意味着,任何想直接使用TCP/IP访问这些地址的人都需要在同一个VPC或对等的VPC中。公共资源不能访问私有地址。当您创建私有GKE群集时,Google会创建一个VPC,然后与您的VPC对等,从而允许GKE VPC和您的VPC之间的私有地址连接。访问要使用VPC专用IP地址访问Kubernetes群集,必须创建专用群集并分配内部负载均衡器。问题不是从GCE访问GKE,而是相反。我没有发现文档中说“要访问VPC中的专用IP地址,Kubernetes群集必须是专用的”。我将尝试此测试并给出反馈。完成。必须在MongoDB服务器防火墙规则中添加Pod地址范围。非常感谢各位。