[英]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.