K8S集群內(nèi)Pod如何與本地網(wǎng)絡(luò)打通實現(xiàn)debug
前言
大家都知道,在沒有K8S集群時,我們能直接連接測試環(huán)境服務(wù)實現(xiàn)debug。隨著K8S到來,我們無法直接連接業(yè)務(wù)服務(wù)dubug,K8S Pod 分配的IP地址是集群內(nèi)部網(wǎng)絡(luò),集群外部網(wǎng)絡(luò)是無法直接訪問到Pod,那有什么好的解決方法能直接連接Pod?下面介紹下開源 Telepresence。
Telepresence 簡介
Telepresence 是一種開源工具,可讓您在本地運行單個服務(wù),同時將該服務(wù)連接到遠程 Kubernetes 集群。這使開發(fā) multi-service 應(yīng)用程序的開發(fā)人員能夠:
- 對單個服務(wù)進行快速本地開發(fā),即使該服務(wù)依賴于集群中的其他服務(wù)。對您的服務(wù)進行更改并保存,您可以立即看到正在運行的新服務(wù)。
- 使用本地安裝的任何工具來 測試/調(diào)試/編輯 您的服務(wù)。例如,您可以使用調(diào)試器或 IDE!
- 讓您的本地開發(fā)機器像 Kubernetes 集群的一部分一樣運行。如果您的機器上有一個應(yīng)用程序要針對集群中的服務(wù)運行——這很容易做到。
開源地址: https://github.com/telepresenceio/telepresence
Telepresence 如何運行
Telepresence 在 Kubernetes 集群中運行的 pod 中部署雙向網(wǎng)絡(luò)代理。此 pod 將數(shù)據(jù)從您的 Kubernetes 環(huán)境(例如 TCP 連接、環(huán)境變量、卷)代理到本地進程。本地進程的網(wǎng)絡(luò)被透明覆蓋,以便 DNS 調(diào)用和 TCP 連接通過代理路由到遠程 Kubernetes 集群。
這種方法給出:
- 您的本地服務(wù)可以完全訪問遠程集群中的其他服務(wù)
- 您的本地服務(wù)對 Kubernetes environment、secrets和 ConfigMap 的完全訪問權(quán)限
- 您的遠程服務(wù)可以完全訪問您的本地服務(wù)
Telepresence 支持的運行平臺
- Mac OS X
- Linux
Telepresence 安裝
可使用 Homebrew、apt 或 dnf 安裝
Telepresence 使用報告
Telepresence 收集有關(guān)其用戶的一些基本信息,以便它可以發(fā)送重要的客戶通知,例如新版本可用性和安全公告。我們還使用這些信息匿名匯總基本使用情況分析。要禁用此行為,請設(shè)置環(huán)境變量 SCOUT_DISABLE:
- export SCOUT_DISABLE=1
Telepresence 使用方法
這里不在描述,具體參考 https://www.telepresence.io/tutorials/kubernetes
參考鏈接
- https://github.com/telepresenceio/telepresence
- https://www.telepresence.io/discussion/overview