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

时间:2017-10-04 02:36:31

标签: kubernetes perforce google-compute-engine

当使用ingress路由服务时,我得到“伙伴不是Perforce客户端/服务器”,但我能够直接查询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 log:

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 log:

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.

1 个答案:

答案 0 :(得分:1)

  

同行地址:10.4.0.218:49924

看起来像一个双向协议,意味着客户端和服务器期望彼此无拘束地访问,ala(非被动模式)ftp

http: paths: - path: /*

我不相信http:节是一个准确的陈述,因为我怀疑超级,超级认真,Perforce在客户端和服务器之间说http。目前正在围绕关于TCP的Ingress教学进行讨论,但目前我认为你已经通过已经NodePort获得了大部分内容:1666

创建一个GCE tcp 负载均衡器(实际上只是一个防火墙,可以使远程Internet远离您的群集)并将其1666指向群集中每个节点上的端口30166。目前还不清楚是否需要在Perforce周围发生任何事情,但是从“建立外部人与你的集群内P4之间的tcp / ip连接”这一观点来看,我认为会做到这一点