# 如何在GCE访问GKE中的TCP服务

# 问题描述

在GKE需要部署service,它是以TCP端口对外暴露服务的,而不是HTTP协议。而GCE不中集群内,所以无法直接访问。

# 解决方案

我们以PostgreSQL为例,假设要在GKE中安装PostgreSQL,而在GCE中的Linux VM可以访问。首先,需要把PostgreSQL暴露出来,可以通过NodePort类型的服务,也可以通过LoadBalancer类型的服务。用LoadBalancer的方式更合适,然后就可以通过它外部IP访问服务了:ExternalIP:5432

因为IP是会变动的,所以可以创建一个Cloud DNS的方式来绑定。

在GKE的集群中,我们基本都会安装Nginx-Ingress,而它的服务就是LoadBalancer的类型,所以可以通过Ingress-Controller的方式来访问PostgreSQL,关键是让Nginx可以做端口转发。通过配置Ingress的TCP ConfigMap就可以,具体可参加:把H2数据库从jar包部署到Kubernetes,并解决Ingress不支持TCP的问题 (opens new window)

过程中的连接问题,要检查NetworkPolicy和Firewall等。

上次更新: 2023/8/18 23:39:36