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