Openshift OKD与其他端口(Teamspeak)

时间:2018-12-07 00:28:26

标签: openshift teamspeak okd

我需要在Openshift(OKD 3.11)上创建Teamspeak-Pod的帮助。 我的问题是在部署了Pod之后,我不知道如何为端口9887、10011和30033提供外部访问权限。

外部应用程序只能访问8080、8443和443。

有人知道我应该怎么做才能获得外部访问吗?我认为我必须对防火墙和端口转发做一些事情。但是我找不到任何东西。

谢谢,帮忙...

1 个答案:

答案 0 :(得分:0)

默认情况下,pod只能在集群内通信,因此您将无法将外部流量路由到它们。

执行此操作的一种方法是将服务配置为NodePort。这会将这些端口映射到所有节点上30000-32767范围内的端口。例如:

apiVersion: v1
kind: Service
metadata:
  name: teamspeak
  labels:
    name: teamspeak
spec:
  type: NodePort
  ports:
  - name: 9887-tcp
    port: 9887
    nodePort: 31694
    protocol: TCP
  - name: 10011-tcp
    port: 10011
    nodePort: 30906
    protocol: TCP
  - name: 30033-tcp
    port: 30033
    nodePort: 32316
    protocol: TCP
  selector:
    name: teamspeak

如果您运行oc edit service teamspeak或应用程序的任何服务,并将类型更改为NodePort,Openshift将自动在上述范围内分配端口。

在将服务设置为NodePort之后,您需要将对这些端口的请求转发到Openshift分配的新端口(30000-32767范围端口),因此,它们去往9887的请求不再是在我们的示例中为30036。

参考:https://docs.openshift.com/container-platform/3.6/dev_guide/expose_service/expose_internal_ip_nodeport.html

或者,您可以将服务定义为类型LoadBalancer,该服务不仅会将Pod暴露给外部流量,而且还会根据配置在Pod中分配请求。例如,

apiVersion: v1
kind: Service
metadata:
  name: egress-2 
spec:
  ports:
  - name: db
    port: 3306
  - name: additional-port
    port: 9887
  - name: another-one
    port: 10011
  loadBalancerIP:
  type: LoadBalancer 
  selector:
    name: mysql

参考:https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_load_balancer.html