我需要在Openshift(OKD 3.11)上创建Teamspeak-Pod的帮助。 我的问题是在部署了Pod之后,我不知道如何为端口9887、10011和30033提供外部访问权限。
外部应用程序只能访问8080、8443和443。
有人知道我应该怎么做才能获得外部访问吗?我认为我必须对防火墙和端口转发做一些事情。但是我找不到任何东西。
谢谢,帮忙...
答案 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。
或者,您可以将服务定义为类型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