我是kubernetes领域的新手,很抱歉,如果我在这里找不到任何明显的内容。
我在GKE中运行Prometheus,它必须抓取暴露在GCE中安装的端点的指标,GCE中的主机位于VPN的后面,我不确定这是否是一个问题,因为两者都在Google云中。我在这里可以做些什么,以确保kubernetes中的prometheus可以连接到GCE中的主机,并从中提取指标。
编辑:添加了配置和错误消息
Prometheus scrape_config
- job_name: 'cassandra-metrics'
static_configs:
- targets:
- <ip>:<port>
尝试抓取时出错
net_conntrack_dialer_conn_failed_total{dialer_name="cassandra-metrics",reason="timeout"} 4675
答案 0 :(得分:2)
请记住,GCP默认网络是全球性的,因此无论您在哪个区域部署资源,它们始终可以使用内部IP或外部IP相互访问(请注意,如果您是使用外部IP进行通信将通过入口/出口流量收费,并设置必要的防火墙规则。
如果使用不同的VPC或网络,则需要设置VPC Peering,这将允许两个VPC之间进行通信,例如,您在一个VPC中拥有GCE实例,而在另一个VPC中拥有GKE集群。
我试图复制您的方案,在默认网络中部署的GKE群集和计算实例,并应用了防火墙规则以允许进入网络中所有实例的流量(不使用网络标签)。
我在GKE中使用此yaml file进行了一次busybox部署,登录到一个pod中, kubectl get pods ,然后使用 kubectl exec -ti $ podname sh ,最后使用这些工具来测试连接:traceroute和ping。
这两个资源之间的连接成功,请注意,我没有使用选项 -I 而不是将UDP协议用于traceroute。代表“使用ICMP ECHO进行探测”。
VPN(云VPN,专用互连或直接对等)背后的实例不会影响GKE群集无法访问它的事实,除非像我之前提到的那样,这两种资源都位于单独/不同的网络上。