在 nginx 入口中打开 TCP 连接

问题描述 投票:0回答:1

我在通过 nginx-ingress 打开 TCP 连接时遇到问题。

所以我的目标是我想在使用 Nginx-Ingress 的 Kubernetes 集群上的端口 9000 上打开 Clickhouse TCP 连接。

到目前为止,我可以在 nginx-controller 上打开 9000 TCP 端口连接,但是,我仍然无法使用 tcp 协议访问 Clickhouse 服务器。我仍然相信这是由 nginx/ingress 端引起的。

Clikhouse 安装工作正常,

port-forward
http
8123 端口上的协议已通过入口成功打开

以下是有关我的集群上的服务的一些信息:

kubectl -n ingress-nginx get svc                                                     
NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                                    
ingress-nginx-controller             LoadBalancer   an.internal.ipx  an.external.ip   80:31714/TCP,443:31594/TCP,9000:32033/TCP   
ingress-nginx-controller-admission   ClusterIP      an.internal.ipy  <none>           443/TCP                          

我该怎么做?

我只在我的

values.yaml
头盔部署中执行此操作

# values.yaml
ingress-nginx:
  tcp:
    9000: "test-clickhouse-operator/clickhouse-test-chi-speed:9000"
....
....

换句话说,我在命名空间

test-clickhouse-operator
中安装了一个 clickhouse,服务名称为
clickhouse-test-chi-speed

kubectl -n test-clickhouse-operator get svc
NAME                            TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                         
chi-test-chi-speed-simple-0-0   ClusterIP      None             <none>           9000/TCP,8123/TCP,9009/TCP      
clickhouse-operator-metrics     ClusterIP      an.internal.ipxx <none>           8888/TCP,9999/TCP              
clickhouse-test-chi-speed       LoadBalancer   an.internal.ipyy an.external.ipyy 8123:31889/TCP,9000:32457/TCP

注意:集群外部无法访问

an.external.ipyy

最后,这是我的域名入口:

# ingress-subdomain-clickhouse-native.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-test-clickhouse-native
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: clickhousenative.staging.mydomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: clickhouse-test-chi-speed
            port:
              number: 9000

当我尝试通过浏览器点击此clickhousenative.staging.mydomain.com时,它将返回:

Port 9000 is for clickhouse-client program
You must use port 8123 for HTTP.

但是,当我用

clickhouse-client -h clickhousenative.staging.mydomain.com
击打时,它失败了。

伙计们,我错过了什么步骤吗?任何建议也会有所帮助,因为我现在没有任何可以遵循的资源,无论如何感谢您的帮助。

kubernetes-ingress nginx-ingress clickhouse
1个回答
0
投票

您需要允许 nginx 入口控制器的 TCP 端口公开和平衡,请查看文档中的示例 https://kubernetes.github.io/ingress-nginx/user-guide/exusing-tcp-udp-services/

© www.soinside.com 2019 - 2024. All rights reserved.