使用TCP服务时无法访问内部端点

时间:2020-02-14 17:33:48

标签: kubernetes nginx-ingress

几天以来,我遇到了一个被阻止的问题。尝试了很多东西,但没有任何效果。

我有一个k8s集群,其中有一个运行Corda(https://docs.corda.net/docker-image.html)的吊舱。该pod公开了一个RPC端点(10201),该端点是我希望能够使用corda-shell工具从群集外部(我的笔记本电脑)访问的端点。

所以我创建了一个入口(使用ingress-nginx)并添加了一个如下所示的配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-tcp-services
  namespace: {{ .Release.Namespace }}
data:
  10201: {{ .Release.Namespace }}/{{ .Release.Name }}-corda-node:10201

corda pod的service.yaml看起来像这样:

apiVersion: v1
kind: Service
metadata:
  name: {{ include "corda-node.fullname" . }}
  labels:
{{ include "corda-node.labels" . | indent 4 }}
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
    - port: 10200
      targetPort: p2p
      protocol: TCP
      name: p2p
    - port: 10201
      targetPort: rpc
      protocol: TCP
      name: rpc
    - port: 10202
      targetPort: rpcadmin
      protocol: TCP
      name: rpcadmin
  selector:
    app.kubernetes.io/name: {{ include "corda-node.name" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}

但是到目前为止,无论我尝试什么,都无法从外部连接到它。 从群集中的另一个pod /容器,它可以正常工作,就像我将端口转发到本地容器时一样。

注意:我可以从外部连接到群集中的其他服务。实际上,此Corda Pod带有一个可以在8080上公开API的小车,我可以访问它。

我可以看到入口暴露了端口'10201',因此我想它考虑了我的tcp-services,但似乎无法将请求转发到corda pod。

如果我尝试做telnet public-ip-of-the-cluter 10201,那我就超时了。 运行corda-shell工具时也是如此...

据我所知,我在入口控制器窗格中看不到任何相关日志。

我使用各种'kubectl describe xxx'命令创建了一个small github repo,以便为您提供我所做的概述。

如果您需要更多信息,请问我。我真的为此感到挣扎,很可能是我在某处做蠢事...

谢谢!

编辑:

我将入口的日志放在---v = 3上,启动时可以看到它:

I0215 09:30:32.081819 6 controller.go:333]搜索端点 TCP端口号为10201的服务 “鲑鱼蝗/鲑鱼蝗corda节点-corda节点”
││I0215 09:30:32.081836 6 endpoints.go:74]获取端点 用于服务“鲑鱼蝗/鲑鱼蝗corda节点-corda节点”和 端口&ServicePort {名称:rpc,协议:TCP,端口:10201,目标端口:{1 0 rpc},NodePort:0,}││I0215 09:30:32.081849 6 Endpoints.go:117]找到服务的端点 “鲑鱼蝗/鲑鱼蝗corda节点-corda节点”:[{10.96.1.13 10201 &ObjectReference {种类:荚,名称空间:鲑鱼蝗,名称:鲑鱼蝗-corda-node-corda- │

但是当我尝试通过corda-tools-shell连接到它时,没有任何活动。

编辑2:

我们发现了问题所在,入口-> dns解决了cloudflare代理,该代理未处理1xxxx端口...

2 个答案:

答案 0 :(得分:1)

我们发现了问题所在,入口-> dns解决了cloudflare代理,该代理未处理1xxxx端口...

答案 1 :(得分:0)

入口日志中是否有任何传入请求? Ingress可能正在寻找可能无法正常工作的http标头Corda RPC