簡體   English   中英

將流量從 Kubernetes pod 轉發到本地服務器

[英]Forward traffic from Kubernetes pod to local server

如何將來自遠程 Kubernetes pod 的流量轉發到本地計算機上運行的服務器? 目的是測試遠程服務器調用在我的本地機器上運行的服務。 我使用kubectl port-forward將流量從本地服務轉發到遠程服務,但我需要反過來做。

此解決方案適用於 minikube,用於在本地運行 Kubernetes,因此這可能不適用於我。

可能有一種“更多的 K8s”方式,但如果你找不到更好的方法,這里有一個想法 - 使用 ssh。

具體來說,在 pod 上設置並公開 SSH,以便可以從本地計算機訪問它。 然后只需在您的機器上使用 ssh 來創建遠程 ssh 隧道

例如ssh -R 8080:localhost:80 <exposed-pod-ssh>會將 pod 的 localhost:8080 轉發到本地機器端口 80。

這是一個非常煩人的任務。

手頭沒有什么特別的,您需要將端口從調制解調器重定向到您的機器。 大多數人都有非固定的公共 ip,所以你需要找到你的公共 ip 地址(你不能搜索“我的 ip 是什么”)並希望它在你的測試之間不會改變。 使用您的公共 ip 地址,您可以嘗試直接從 pod 訪問,例如:

kubectl exec -ti alpine-pod -- curl 150.136.143.228:8080

一些集群不會讓 pod go 從自己的外部運行,因此,最好創建一個沒有選擇器的服務,然后添加指向您的 ip 的端點

apiVersion: v1
kind: Service
metadata:
  name: to-my-home
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

然后,添加端點

apiVersion: v1
kind: Endpoints
metadata:
  name: to-my-home
subsets:
  - addresses:
      - ip: 150.136.143.228
    ports:
      - port: 8080

現在,如果您在該服務的同一個命名空間中,您可以這樣做:

kubectl exec -ti alpine-pod -- curl to-my-home

一個更好、更簡單的解決方案是使用vagrant sharehttps://www.vagrantup.com/docs/share ,但您需要一些步驟:

  1. 安裝管理程序(VirtualBox、Libvirt、HyperV、VMWare)
  2. 安裝Vagrant
  3. https://app.vagrantup.com上創建並記帳
  4. 開機使用vagrant分享
  5. 獲取命令返回時顯示的 URL 並在 pod/service 上使用,端口始終為 80

例子:

vagrant init debian/buster64
vagrant login
vagrant up
vagrant share

您可以為此使用網狀 vpn。 https://tailscale.com/這樣的東西

暫無
暫無

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

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