使外部服务可从群集内部访问

问题描述 投票:0回答:1

我正在尝试从群集内部建立到我在GKE群集之外的数据库的连接。

我已经阅读了各种教程,包括https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services和多个SO问题,尽管问题仍然存在。

这是一个示例配置,我正在尝试通过该配置设置kafka连接性:

---
kind: Endpoints
apiVersion: v1
metadata:
  name: kafka
subsets:
  - addresses:
      - ip: 10.132.0.5
    ports:
      - port: 9092

---
kind: Service
apiVersion: v1
metadata:
  name: kafka
spec:
  type: ClusterIP
  ports:
  - port: 9092
    targetPort: 9092

我能够通过直接从节点VM本身通过nc 10.132.0.5 9092连接来获得某种响应,但是如果我创建一个Pod,例如通过kubectl run -it --rm --restart=Never alpine --image=alpine sh,则无法使用nc kafka 9092从Pod内部进行连接。 。我的代码中的所有库都因超时而失败,因此这似乎是某种路由问题。

以Kafka为例,连接到其他数据库也遇到相同的问题。

networking kubernetes google-kubernetes-engine
1个回答
1
投票

已解决,问题在我对GCP运作方式的理解之内。

为了解决该问题,我必须添加一个防火墙规则,该规则允许来自内部GKE网络的所有传入流量。就我而言,这是10.52.0.0/24地址范围。

希望它可以帮助某人。

© www.soinside.com 2019 - 2024. All rights reserved.