gpt4 book ai didi

java - 如何打开 Openshift - 端口 9111(grpc 应用程序)

转载 作者:行者123 更新时间:2023-12-02 08:50:47 24 4
gpt4 key购买 nike

我有 grpc 应用程序(客户端和服务器),它在本地主机上运行良好,但我在 MiniShift 中遇到问题。每个应用程序在不同的 Pod 中运行。问题是客户端无法连接到服务器:

java.net.ConnectException: finishConnect(..) failed: Connection refused
at io.grpc.netty.shaded.io.netty.channel.unix.Errors.throwConnectException(Errors.java:124) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.unix.Socket.finishConnect(Socket.java:243) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]
at io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[grpc-netty-shaded-1.28.0.jar!/:1.28.0]

在 java.lang.Thread.run(Thread.java:748) [na:1.8.0_242]

我尝试了 Pod 之间的连接,但仅打开了端口 80 和 443。其余端口返回连接被拒绝。

如何打开端口 9111(我的 grpc java 应用程序正在运行)?谢谢

最佳答案

我需要创建一个 NodePort 类型的服务

NodePort 是一种在每个集群计算机上打开端口的服务类型,并且可以将流量(TCP/UDP)重定向到您的应用程序。为此,您需要使用 system:admin 获得管理权限,或者授予您选择的用户...例如:

oc adm policy add-cluster-role-to-user cluster-admin matko

不幸的是,Openshift 基于 Kubernetes,而 Kubernetes 默认情况下只允许节点端口在 30000-32767 范围内。

您的应用程序仍会在 9111 中监听,但要从集群外部进行访问,我们只有上面写的端口。

找到应用程序服务并编辑:

oc edit svc mysql

然后,将类型更改为NodePort并选择一个端口 - 或获取一个随机端口:

apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
name: mysql
spec:
type: NodePort
ports:
- port: 3036
nodePort: 30036
name: http
selector:
name: mysql

仅用于说明一次,切勿将数据库暴露在互联网上。

关于java - 如何打开 Openshift - 端口 9111(grpc 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60792753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com