亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在運行時使用應用程序主機和端口

如何在運行時使用應用程序主機和端口

Go
弒天下 2023-08-14 14:26:19
我在 k8s 中有兩個不同的應用程序需要讀取數據,例如AppA,AppB它們都部署在同一個集群上這里的部分tricky是我需要將兩個應用程序部署到任何集群并知道要連接的主機和端口,我不想使用硬編碼值。例如應用程序A從應用程序B讀取數據應用程序B是具有 REST API 的 Web 應用程序,因此應用程序A需要像http://10.26.131.136:9090/api/app/getconfig一樣調用App A 知道服務路徑:就像api/app/getconfigApp 一樣B,但它如何知道appB 的主機和端口?我無法使用它硬編碼,如果我使用它,這是可行的,type:LoadBalacer但這是硬編碼的主機和端口,我需要以某種方式在運行時確定它,也許使用 serviceName 等?
查看完整描述

4 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

注意:Kube-DNS 命名約定為service.namespace.svc.cluster-domain.tld,默認集群域為cluster.local

因此,只要服務位于同一集群中,您就可以將您的應用程序稱為 ..svc。然后,您需要通過發出以下命令來檢查應用程序正在偵聽的端口:

kubectl -n <namespace> get svc

記下服務標識符和問題:

kubectl -n <namespace> get svc <identifier> -o yaml

這將列出服務清單,您可以在其中查看應用程序正在偵聽哪個端口。


查看完整回答
反對 回復 2023-08-14
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

如果同一個集群上有 2 個應用程序,那么它們可以通過 kubernetes 內置的 DNS 相互引用。


如果AppA需要引用AppB,那么只要你為AppB定義了一個Service,就可以用 來引用它<service>.<namespace>。在您的情況下,如果 AppB 在默認命名空間中運行,您可以調用AppB.default/api/app/getconfig.


端口部分可以通過您的服務定義進行管理。下面我使用端口 80,因此我不必在請求中手動指定端口


apiVersion: v1

kind: Service

metadata:

  name: AppB

spec:

  ports:

  - name: "80"

    port: 80

    targetPort: 9090

  selector:

    select: AppB

更多信息:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/


查看完整回答
反對 回復 2023-08-14
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

如果你想讓它如此寬容(從任何集群到任何集群),那么你需要一個 DNS,在App B.

我會考慮在某個地方進行硬編碼。通過將其硬編碼為 one ConfigMap,您可以獲得一些漂亮的實現。


查看完整回答
反對 回復 2023-08-14
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

為您的應用程序 B 定義一個服務。然后您可以使用以下 url 從其他 pod 訪問它:your-service-name : port /api/app/getconfig



查看完整回答
反對 回復 2023-08-14
  • 4 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號