繁体   English   中英

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

[英]Execute command from java application to kubernetes pod

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

[是否] 在一个 pod 中运行的 java 应用程序可以在另一个 pod 上执行命令吗?

不可以。您需要为第二个应用程序创建一个网络接口并对它进行 gRPC 或 HTTP 调用,或者将两个程序构建到同一个映像中,以便您可以将第二个程序作为普通子进程启动。

一般情况下,容器都是如此。 尝试在非 Kubernetes Docker 容器(推荐用于实验和开发)中运行这两个部分或在同一个 Kubernetes pod 中运行两个容器(不推荐)时,您会遇到同样的问题。

(有一个“但是”涉及使用 Kubernetes API,但这是一个相当复杂的设置,它涉及应用程序中特定于 Kubernetes 的代码,它需要在 Z30136395F0187979241983 中设置服务帐户和权限。特别是对于您的应用程序的核心数据流。)

我想您可以使用将svcName.service.ns.cluster.local解析为 ClusterIP 的服务或 kube-dns 与 pod 通信,并使用另一个 websocket 到该 pod 来监听您的命令等。

无法帮助您 java sockets 或详细的代码结构,但我很确定这会有所帮助。

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-port 到 node-port 的连接或

集群IP。 这是推荐的!

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

它创建了一个可用于内部流量的服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM