使用入口(Kubernetes)路由服务时无法访问 perforce 服务器

Failed to access perforce server when using ingress(Kubernetes) to route the service

我在使用入口路由服务时得到 "partner is not a Perforce client/server",但我能够直接查询 Kubernetes 集群中的 perforce 服务器。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-notls
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: perforce.domain.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: p4-server
          servicePort: 80

p4 服务

apiVersion: v1
kind: Service
metadata: 
  name: p4-server
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 1666
      nodePort: 30166
      name: p4-server

  selector: 
    run: p4-server

如果我在集群中:

$ p4 -p p4-server:80 info       
User name: root
Client name: platform-3101934619-wtxs5
Client host: platform-3101934619-wtxs5
Client unknown.
Current directory: /
Peer address: 10.4.0.218:49924
Client address: 10.4.0.218
Server address: p4-server-1400441787-fcmd9:1666
Server root: /codelingo
Server date: 2017/10/04 02:19:17 +0000 UTC
Server uptime: 380:53:52
Server version: P4D/LINUX26X86_64/2017.1/1511680 (2017/05/05)
Server license: none
Case Handling: sensitive

p4 日志:

Perforce server info:
    2017/10/04 02:19:17 pid 23038 root@platform-3101934619-wtxs5 10.4.0.218 [p4/2017.1/LINUX26X86_64/1511680] 'user-info'

通过入口尝试失败:

$ p4 -p perforce.domain.com:80 info 
(hangs)

p4 日志:

Perforce server error:
    Date 2017/10/04 02:18:30:
    Pid 23012
    Connection from 10.4.0.1:38622 broken.
    RpcTransport: partner is not a Perforce client/server.
    RpcTransport: partner is not a Perforce client/server.
    RpcTransport: partner is not a Perforce client/server.

Peer address: 10.4.0.218:49924

看起来很像双向协议,这意味着客户端和服务器希望能够不受限制地相互访问,ala(非被动模式)ftp

http: paths: - path: /*

我不相信 http: 节是一个准确的陈述,因为我非常非常怀疑 Perforce 在客户端和服务器之间使用 http。关于教授 Ingress 关于 TCP 的讨论正在进行中,但目前我认为你已经有了一个 NodePort for :1666

创建一个 GCE tcp 负载均衡器(它实际上只是一个防火墙,让您的集群远离疯狂的互联网)并将其 1666 指向您的每个节点上的端口 30166簇。目前尚不清楚 Perforce 是否需要进一步改进,但从 "establishing tcp/ip connectivity between outsiders and your in-cluster P4" 的角度来看,我认为可以做到