-
我依賴了其它的服務:執行在本地的程式碼可以直接透過PodIP,ClusterIP甚至是Kubernetes叢集內的DNS地址訪問到部署在叢集中的其它應用,如下圖左;
-
其它的服務依賴了我:執行在Kubernetes叢集中的其它應用可以在不做任何改變的情況下訪問我到執行的本地的程式碼,如下圖右。
-
本地網路與Kubernetes叢集網路直接的連通問題;
-
在本地實現Kubernetes中內部服務的DNS解析;
-
如果將對叢集中其它Pod訪問的流量轉移到本地。
$ ktctl -namespace=default
# -swap-deployment指定需要替換的標的Deployment
# -expose 指定本地服務執行的埠
ktctl -swap-deployment c-deployment -expose=8080
-
在本地執行的命令列工具ktctl
-
執行在叢集中的SSH/DNS代理容器
# 將對本地2222埠轉發到kt-porxy實體的22埠
$ kubectl port-forward deployments/kt-proxy 2222:22
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
# ssh -D [本地網絡卡地址:]本地埠 name@ip -p對映到kt-proxy的22埠的本地埠
ssh -D 2000 root@127.0.0.1 -p2222
# export http_proxy=socks5://127.0.0.1:ssh動態埠轉發的代理埠
export http_proxy=socks5://127.0.0.1:2000
# export http_proxy=socks5://127.0.0.1:ssh動態埠轉發的代理埠
export http_proxy=socks5://127.0.0.1:2000
sshuttle --dns --to-ns 172.16.1.36 -e 'ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null' -r root@127.0.0.1:2222 172.16.1.0/16 172.19.1.0/16 -vv
# ssh -R 8080:localhost:8080 root@127.0.0.1 -p2222
ssh -R 8080:localhost:8080 root@127.0.0.1 -p2222