簡體   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