【问题标题】:exposing CockroachDB on Kubernetes to public IP将 Kubernetes 上的 CockroachDB 暴露给公共 IP
【发布时间】:2018-06-10 19:14:30
【问题描述】:

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

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

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

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

type: NodePort

我将这些行添加到我的 nginx-controller 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

【问题讨论】:

    标签: kubernetes cockroachdb


    【解决方案1】:

    我不知道在技术上是否应该通过 nginx 实例代理 CockroachDB,但您的设置因另一个原因而失败。在规则部分指定 servicePort 时,您告诉 k8s 哪个端口公开给服务。默认情况下,映射本身发生在端口 80/443,而不是您想要的端口。所以你应该试着在你的情况下询问端口 80。

    【讨论】:

      【解决方案2】:

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

      您可以通过稍微修改 CockroachDB 配置文件来使端口转发工作。将the invocation of the Cockroach binary--host 标志的名称改为--advertise-host。这样,该进程将在 localhost 和其主机名上进行侦听,这将使端口转发工作。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        • 2019-09-06
        • 2019-11-21
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多