使用入口(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" 的角度来看,我认为可以做到
我在使用入口路由服务时得到 "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" 的角度来看,我认为可以做到