簡體   English   中英

一次連接到在不同 Kubernetes 集群上運行的服務

[英]Connect to services running on different Kubernetes clusters at once

我在cluster1上運行db1 ,在 cluster2 上cluster2 db2 它們無法從外部訪問,因此要在開發/調試時連接到 db,我使用端口轉發。

您一次只能將一個集群設置為當前/默認上下文,因此您一次可以端口轉發一個數據庫。 因此,我沒有從本地計算機一次連接到一個集群,而是啟動了 2 個 docker 容器,每個容器都指向不同的集群,因此我可以將兩個數據庫連接端口轉發,然后將容器端口 map 轉發到不同的主機端口,我最終可以通過客戶端訪問我的數據庫。

$ docker run -d --name cluster1 -p 3306:3306 IMAGE
$ docker run -d --name cluster2 -p 3307:3306 IMAGE

在每個容器內,我正在做

$ kubectl port-forward db-0 3306

在主機上,我試圖連接到localhost和端口號 3306-3307。 我正進入(狀態:

Server not running on the provided host and port.

我還嘗試了-p 3306:3306docker run命令,我還嘗試--expose 3306 ,然后使用容器ZA12A3079E14CED46ECED46ECCEN4CED46EBED46EBACER PORT OISENT docker inspect

有什么我想念的嗎? 我很想知道是否有任何替代方式來歸檔我正在嘗試做的事情。 謝謝。

正如評論中提到的OP,我的建議奏效了,所以我決定將其發布為完整解釋的答案。


kubectl 默認綁定到本地接口,因此只能使用 localhost ip (127.0.0.1) 訪問。

$ kubectl port-forward <podname> 8080:8080 &
Forwarding from 127.0.0.1:8080 -> 8080

$ ss -lnt | grep 8080
State      Recv-Q Send-Q  Local Address:Port        Peer Address:Port
LISTEN     0      128         127.0.0.1:8080                   *:*

要從容器外部訪問它,您需要使用kubectl port-forward --address 0.0.0.0 這將綁定到所有接口。

$ kubectl port-forward <podname> 8080:8080 --address 0.0.0.0 &
Forwarding from 0.0.0.0:8080 -> 8080

$ ss -lnt | grep 8080
State      Recv-Q Send-Q  Local Address:Port        Peer Address:Port
LISTEN     0      128                 *:8080                   *:*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM