首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Kubernetes上的CockroachDB暴露给公网IP

问将Kubernetes上的CockroachDB暴露给公网IP
EN

Stack Overflow用户
提问于 2017-12-31 05:18:54
回答 2查看 667关注 0票数 0

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

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

我有一个nginx-ingress控制器,用于从我的域名路径映射到服务,所以我尝试使用它:

我将我的db-cockroachdb public服务从ClusterIP更改为NodePort:

代码语言:javascript
复制
type: NodePort

我将这些行添加到我的nginx-controller YAML中:

代码语言:javascript
复制
-name: postgresql

nodePort: 30472

port: 26257

protocol: TCP

targetPort: 26257

下面这几行是我的入口YAML:

代码语言:javascript
复制
- host: db.mydomain.com
  http:
    paths:
    - path: /
      backend:
        serviceName: db-cockroachdb-public
        servicePort: 26257

但是,我无法连接到数据库-连接被拒绝。我还尝试在nginx控制器中禁用SSL重定向,但仍然不起作用。

我也尝试了一个ConfigMap,但它没有任何作用:

代码语言:javascript
复制
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-02 23:39:12

有几种方法可以解决这个问题。大多数都与更改入口配置或如何连接到服务有关,我不会深入讨论这些内容。另一种选择是使端口转发工作,以消除对入口机器的需要。

您可以通过稍微修改CockroachDB配置文件来使端口转发工作。将the invocation of the Cockroach binary中的--host标志的名称改为--advertise-host。这样,除了监听主机的主机名之外,该进程还将监听localhost,这将使端口转发工作。

编辑:为了跟进这一点,我已经将CockroachDB代码库中的默认配置切换为使用--advertise-host而不是--host,因此端口转发现在默认工作。

票数 2
EN

Stack Overflow用户

发布于 2018-01-02 07:44:47

我不知道在技术上它是否可以通过nginx实例代理一个CockroachDB,但是你的安装失败还有另一个原因。在规则部分中指定servicePort时,您将告诉k8s向服务公开哪个端口。默认情况下,映射本身会发生到端口80/443,而不是您想要的端口。因此,在本例中,您应该尝试只询问端口80。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48037973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档