公开可从群集内部访问的外部服务

时间:2020-01-19 13:10:54

标签: networking kubernetes google-kubernetes-engine

我正在尝试从群集内部建立到我的数据库的连接,这些数据库位于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的广告连播。我的代码中的所有库都会因超时而失败,因此这似乎是一种路由问题。

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

1 个答案:

答案 0 :(得分:1)

解决了这个问题,这是我对GCP运作方式的理解。

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

希望它对某人有帮助。