从java应用程序执行命令到kubernetes pod

zengzsys  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(337)

我一直在搜索web以使用java应用程序在kubernetes pod中执行命令。结果是模糊的,因此我想知道是否有一种方法让运行在一个pod中的java应用程序在另一个pod上执行命令?

m1m5dgzv

m1m5dgzv1#

我想你可以通过一个服务或kube-dns与pod通信 svcName.service.ns.cluster.local 作为clusterip,使用另一个websocket来监听你的命令等。
无法帮助您使用java套接字或详细的代码结构,但我非常肯定这会有所帮助。
edit1:服务yaml文件的示例。
poda服务:

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

它创建了一个可用于内部通信的服务。

myzjeezk

myzjeezk2#

[是否]有一种方法可以让运行在一个pod中的java应用程序在另一个pod上执行命令?
不需要。您需要创建到第二个应用程序的网络接口,并对其进行grpc或http调用,或者将两个程序构建到同一个映像中,以便可以作为普通子进程启动第二个程序。
一般来说,容器也是如此。尝试在非kubernetes docker容器中运行这两个部分(建议用于实验和开发)或在同一kubernetes pod中运行两个容器(不建议)会遇到相同的问题。
(有一个“但是”涉及使用kubernetes api,但这是一个相当复杂的设置,它涉及应用程序中的kubernetes特定代码,并且需要在kubernetes部署中设置服务帐户和权限。我会避免这种情况,特别是对于应用程序的核心数据流。)

相关问题