将Kubernetes上的蟑螂暴露于公共IP

将Kubernetes上的蟑螂暴露于公共IP,kubernetes,cockroachdb,Kubernetes,Cockroachdb,我在Google Kubernetes引擎上的Kubernetes集群中运行了一个蟑螂数据库实例。我正在尝试公开端口26257,以便可以从本地计算机连接到它 如中所述,端口转发到pod将不起作用 我有一个nginx入口控制器,用于将我的域名路径映射到服务,因此我尝试使用它: 我将db cockroachdb公共服务从ClusterIP更改为NodePort: type: NodePort 我在我的nginx控制器YAML中添加了以下行: -name: postgresql nodePort:

我在Google Kubernetes引擎上的Kubernetes集群中运行了一个蟑螂数据库实例。我正在尝试公开端口26257,以便可以从本地计算机连接到它

如中所述,端口转发到pod将不起作用

我有一个nginx入口控制器,用于将我的域名路径映射到服务,因此我尝试使用它:

我将db cockroachdb公共服务从ClusterIP更改为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中的默认配置切换为使用
--播发主机
,而不是
--主机
,因此端口转发现在默认工作