无法从 GKE 连接到 GCE
unable to connect from GKE to GCE
我是 kubernetes 的新手 space,如果我在这里遗漏了任何明显的内容,抱歉。
我在 GKE 中有 Prometheus 运行,它必须抓取挂载在 GCE 中的端点上公开的指标,GCE 中的主机在 VPN 后面,我不确定这是否是个问题,因为两者在 Google 云端。我可以在这里做些什么来确保 kubernetes 中的 prometheus 可以连接到 GCE 中的主机并从中抓取指标。
编辑:添加了配置和错误消息
普罗米修斯scrape_config
- job_name: 'cassandra-metrics'
static_configs:
- targets:
- <ip>:<port>
尝试抓取时出错
net_conntrack_dialer_conn_failed_total{dialer_name="cassandra-metrics",reason="timeout"} 4675
请记住,GCP 默认网络是全球网络,因此无论您将资源部署在哪个区域,它们始终能够使用内部 IP 或外部 IP 相互访问(请记住,如果您正在使用外部 IP 进行通信,您将按 ingress/egress 流量收费并设置必要的防火墙规则)。
如果您使用不同的 VPC 或网络,您需要设置 VPC Peering,这将允许两个 VPC 之间的通信,例如,您在一个 VPC 中有您的 GCE 实例,在另一个 VPC 中有您的 GKE 集群。
我尝试复制您的场景,一个 GKE 集群和一个部署在默认网络中的计算实例,应用防火墙规则以允许进入网络中所有实例的流量(未使用网络标签)。
我在 GKE 中使用 yaml file 部署了 busybox,登录到一个 pod,kubectl get pods 然后使用 kubectl exec -ti $podname sh,最后使用这些工具来测试连接:traceroute 和 ping。
两个资源之间的连接成功,请注意,我没有使用 UDP 协议进行跟踪路由,而是使用了 -I 选项,它代表 "use ICMP ECHO for probes".
VPN(云 VPN、专用互连或直接对等)后面的实例不会影响 GKE 集群无法访问它的事实,除非像我之前提到的那样,两种资源都在 separate/different 网络。
我是 kubernetes 的新手 space,如果我在这里遗漏了任何明显的内容,抱歉。
我在 GKE 中有 Prometheus 运行,它必须抓取挂载在 GCE 中的端点上公开的指标,GCE 中的主机在 VPN 后面,我不确定这是否是个问题,因为两者在 Google 云端。我可以在这里做些什么来确保 kubernetes 中的 prometheus 可以连接到 GCE 中的主机并从中抓取指标。
编辑:添加了配置和错误消息
普罗米修斯scrape_config
- job_name: 'cassandra-metrics'
static_configs:
- targets:
- <ip>:<port>
尝试抓取时出错
net_conntrack_dialer_conn_failed_total{dialer_name="cassandra-metrics",reason="timeout"} 4675
请记住,GCP 默认网络是全球网络,因此无论您将资源部署在哪个区域,它们始终能够使用内部 IP 或外部 IP 相互访问(请记住,如果您正在使用外部 IP 进行通信,您将按 ingress/egress 流量收费并设置必要的防火墙规则)。
如果您使用不同的 VPC 或网络,您需要设置 VPC Peering,这将允许两个 VPC 之间的通信,例如,您在一个 VPC 中有您的 GCE 实例,在另一个 VPC 中有您的 GKE 集群。
我尝试复制您的场景,一个 GKE 集群和一个部署在默认网络中的计算实例,应用防火墙规则以允许进入网络中所有实例的流量(未使用网络标签)。
我在 GKE 中使用 yaml file 部署了 busybox,登录到一个 pod,kubectl get pods 然后使用 kubectl exec -ti $podname sh,最后使用这些工具来测试连接:traceroute 和 ping。
两个资源之间的连接成功,请注意,我没有使用 UDP 协议进行跟踪路由,而是使用了 -I 选项,它代表 "use ICMP ECHO for probes".
VPN(云 VPN、专用互连或直接对等)后面的实例不会影响 GKE 集群无法访问它的事实,除非像我之前提到的那样,两种资源都在 separate/different 网络。