将Kubernetes上的蟑螂暴露于公共IP
我在Google Kubernetes引擎上的Kubernetes集群中运行了一个蟑螂数据库实例。我正在尝试公开端口26257,以便可以从本地计算机连接到它 如中所述,端口转发到pod将不起作用 我有一个nginx入口控制器,用于将我的域名路径映射到服务,因此我尝试使用它: 我将db cockroachdb公共服务从ClusterIP更改为NodePort:将Kubernetes上的蟑螂暴露于公共IP,kubernetes,cockroachdb,Kubernetes,Cockroachdb,我在Google Kubernetes引擎上的Kubernetes集群中运行了一个蟑螂数据库实例。我正在尝试公开端口26257,以便可以从本地计算机连接到它 如中所述,端口转发到pod将不起作用 我有一个nginx入口控制器,用于将我的域名路径映射到服务,因此我尝试使用它: 我将db cockroachdb公共服务从ClusterIP更改为NodePort: type: NodePort 我在我的nginx控制器YAML中添加了以下行: -name: postgresql nodePort:
type: NodePort
我在我的nginx控制器YAML中添加了以下行:
-name: postgresql
nodePort: 30472
port: 26257
protocol: TCP
targetPort: 26257
我的入口YAML有以下几行:
- host: db.mydomain.com
http:
paths:
- path: /
backend:
serviceName: db-cockroachdb-public
servicePort: 26257
但是,我无法连接到数据库-连接被拒绝。我还尝试在nginx控制器中禁用SSL重定向,但仍然不起作用
我还尝试了ConfigMap,但它没有做任何事情:
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md
我不知道通过nginx实例代理蟑螂数据库在技术上是否可行,但您的设置失败还有另一个原因。在规则部分中指定servicePort时,您会告诉k8s哪个端口公开给该服务。默认情况下,映射本身发生在端口80/443,而不是您所需的端口。因此,在您的情况下,您应该尝试询问端口80。我不知道通过nginx实例代理蟑螂数据库在技术上是否可行,但您的设置由于另一个原因失败。在规则部分中指定servicePort时,您会告诉k8s哪个端口公开给该服务。默认情况下,映射本身发生在端口80/443,而不是您所需的端口。因此,在您的情况下,您应该尝试询问端口80。有几种方法可以解决此问题。大多数都与更改入口配置或连接到服务的方式有关,我不打算详细介绍。另一种选择是使端口转发工作,以消除对入口机器的需要 您可以通过稍微修改CockroachDB配置文件来实现端口转发。将中的
--host
标志的名称改为--advision host
。这样,进程将在本地主机上以及主机名上侦听,这将使端口转发工作
编辑:为了跟进这一点,我已将CockroachDB repo中的默认配置切换为使用
--播发主机
,而不是--主机
,因此端口转发现在默认工作。有几种方法可以解决此问题。大多数都与更改入口配置或连接到服务的方式有关,我不打算详细介绍。另一种选择是使端口转发工作,以消除对入口机器的需要
您可以通过稍微修改CockroachDB配置文件来实现端口转发。将中的--host
标志的名称改为--advision host
。这样,进程将在本地主机上以及主机名上侦听,这将使端口转发工作
编辑:为了跟进这一点,我已经将CockroachDB repo中的默认配置切换为使用--播发主机
,而不是--主机
,因此端口转发现在默认工作