我正在尝试从群集内部建立到我的数据库的连接,这些数据库位于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为例,连接到其他数据库也遇到相同的问题。
答案 0 :(得分:1)
解决了这个问题,这是我对GCP运作方式的理解。
要解决此问题,我必须添加一个防火墙规则,该规则允许来自内部GKE网络的所有传入流量。就我而言,这是10.52.0.0/24
地址范围。
希望它对某人有帮助。