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