【问题标题】:unable to connect from GKE to GCE无法从 GKE 连接到 GCE
【发布时间】:2019-06-11 01:31:57
【问题描述】:

我是 Kubernetes 领域的新手,如果我在这里遗漏了任何明显的东西,请见谅。

我在 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

【问题讨论】:

  • 如何抓取指标?
  • 这里是 scrape_config - job_name: 'cassandra' static_configs: - targets: - &lt;ip&gt;:&lt;port&gt;,我在 prometheus 指标页面 net_conntrack_dialer_conn_failed_total{dialer_name="cassandra-metrics",reason="timeout"} 4675 中看到了超时消息
  • 我没有看到任何不应该工作的东西,即使是在 VPN 之后,但防火墙规则会有点棘手
  • 创建了防火墙规则以允许从所有子网进入主机的流量,但仍然无法抓取指标。 Kuberentes 集群和主机在 GCP 中位于不同的可用区,不确定这是否是一个问题。
  • 不应该,防火墙规则应该在2个网络/项目中以允许入口和出口

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


【解决方案1】:

请记住,GCP 默认网络是全球性的,因此无论您将资源部署在哪个区域,它们始终能够使用内部 IP 或外部 IP 相互访问(请记住,如果您是使用外部 IP 进行通信将按入口/出口流量收费,并设置必要的防火墙规则。

如果您使用不同的 VPC 或网络,则需要设置 VPC Peering,这将允许两个 VPC 之间进行通信,例如,您的 GCE 实例在一个 VPC 中,而您的 GKE 集群在另一个 VPC 中。

我尝试复制您的场景,一个 GKE 集群和一个部署在默认网络中的计算实例,应用防火墙规则以允许进入网络中的所有实例的流量(不使用网络标签)。

我在 GKE 中使用 yaml file 部署了busybox,登录到一个 pod,kubectl get pods 然后使用 kubectl exec -ti $podname sh ,最后用这些工具来测试连接:traceroute和ping。

两个资源之间的连接成功,请注意,我没有使用 UDP 协议进行 traceroute,而是使用了选项 -I,它代表 “使用 ICMP ECHO 进行探测”。强>

VPN(Cloud VPN、专用互连或直接对等互连)后面的实例不会影响 GKE 集群无法访问它的事实,除非像我之前提到的那样,这两个资源都位于不同/不同的网络上。

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 2018-11-18
    • 2015-06-03
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多