我一直在搜索web以使用java应用程序在kubernetes pod中执行命令。结果是模糊的,因此我想知道是否有一种方法让运行在一个pod中的java应用程序在另一个pod上执行命令?
m1m5dgzv1#
我想你可以通过一个服务或kube-dns与pod通信 svcName.service.ns.cluster.local 作为clusterip,使用另一个websocket来监听你的命令等。无法帮助您使用java套接字或详细的代码结构,但我非常肯定这会有所帮助。edit1:服务yaml文件的示例。poda服务:
svcName.service.ns.cluster.local
apiVersion: v1 kind: Service metadata: name: svc-nodeport-httpd spec: type: NodePort ports: - port: 3050 targetPort: 80 nodePort: 31000 selector: app: apache_webserver
它创建了一个pod端口到节点端口的连接或集群。这是建议!
apiVersion: v1 kind: Service metadata: name: "myapp-service" namespace: "namespace" spec: ports: - name: appPort port: 8065 protocol: TCP targetPort: http selector: app: "myapp" type: ClusterIP
它创建了一个可用于内部通信的服务。
myzjeezk2#
[是否]有一种方法可以让运行在一个pod中的java应用程序在另一个pod上执行命令?不需要。您需要创建到第二个应用程序的网络接口,并对其进行grpc或http调用,或者将两个程序构建到同一个映像中,以便可以作为普通子进程启动第二个程序。一般来说,容器也是如此。尝试在非kubernetes docker容器中运行这两个部分(建议用于实验和开发)或在同一kubernetes pod中运行两个容器(不建议)会遇到相同的问题。(有一个“但是”涉及使用kubernetes api,但这是一个相当复杂的设置,它涉及应用程序中的kubernetes特定代码,并且需要在kubernetes部署中设置服务帐户和权限。我会避免这种情况,特别是对于应用程序的核心数据流。)
2条答案
按热度按时间m1m5dgzv1#
我想你可以通过一个服务或kube-dns与pod通信
svcName.service.ns.cluster.local
作为clusterip,使用另一个websocket来监听你的命令等。无法帮助您使用java套接字或详细的代码结构,但我非常肯定这会有所帮助。
edit1:服务yaml文件的示例。
poda服务:
它创建了一个pod端口到节点端口的连接或
集群。这是建议!
它创建了一个可用于内部通信的服务。
myzjeezk2#
[是否]有一种方法可以让运行在一个pod中的java应用程序在另一个pod上执行命令?
不需要。您需要创建到第二个应用程序的网络接口,并对其进行grpc或http调用,或者将两个程序构建到同一个映像中,以便可以作为普通子进程启动第二个程序。
一般来说,容器也是如此。尝试在非kubernetes docker容器中运行这两个部分(建议用于实验和开发)或在同一kubernetes pod中运行两个容器(不建议)会遇到相同的问题。
(有一个“但是”涉及使用kubernetes api,但这是一个相当复杂的设置,它涉及应用程序中的kubernetes特定代码,并且需要在kubernetes部署中设置服务帐户和权限。我会避免这种情况,特别是对于应用程序的核心数据流。)