如何通过port-forward命令在本地访问 k8s 集群服务
公眾號(hào)「架構(gòu)成長(zhǎng)指南」,專注于生產(chǎn)實(shí)踐、云原生、分布式系統(tǒng)、大數(shù)據(jù)技術(shù)分享
概述
在我們?cè)L問(wèn)k8s中的pod服務(wù)時(shí),一般通過(guò)node port映射pod端口進(jìn)行訪問(wèn),還有一種是通過(guò)ingress或者istio通過(guò)域名方式來(lái)訪問(wèn),雖然兩種方式能滿足我們需求,但是如果針對(duì)臨時(shí)訪問(wèn),配置起來(lái)還是有點(diǎn)復(fù)雜和耗時(shí),那么我們就可以使用 kubectl port-forward來(lái)滿足我們需求
port-forward 介紹
kubectl port-forward 是 Kubernetes 命令行工具 kubectl 提供的一個(gè)功能,用于在本地主機(jī)和 Kubernetes 集群中的 Pod 之間建立端口轉(zhuǎn)發(fā)。
當(dāng)你運(yùn)行 kubectl port-forward 命令時(shí),它會(huì)將本地主機(jī)上的一個(gè)端口與 Kubernetes 集群中的一個(gè) Pod 的端口進(jìn)行綁定。這樣,在本地主機(jī)上監(jiān)聽(tīng)的端口上收到的流量將被轉(zhuǎn)發(fā)到 Pod 的端口上,反之亦然。
這個(gè)功能在開(kāi)發(fā)和調(diào)試應(yīng)用程序時(shí)非常有用。以下是一些 kubectl port-forward 的常見(jiàn)用途和好處:
-
訪問(wèn)遠(yuǎn)程 Pod 的本地服務(wù): 你可以將 Pod 的端口轉(zhuǎn)發(fā)到本地主機(jī),從而能夠直接訪問(wèn) Pod 上運(yùn)行的服務(wù)。例如,你可以將一個(gè)運(yùn)行在 Kubernetes 集群中的數(shù)據(jù)庫(kù) Pod 的端口轉(zhuǎn)發(fā)到本地,以便在本地開(kāi)發(fā)環(huán)境中連接和測(cè)試數(shù)據(jù)庫(kù)。
-
調(diào)試和日志記錄: 通過(guò)將 Pod 的端口轉(zhuǎn)發(fā)到本地,你可以使用本地工具來(lái)調(diào)試和監(jiān)視在 Kubernetes 中運(yùn)行的應(yīng)用程序。你可以使用本地的調(diào)試器、日志記錄工具或其他開(kāi)發(fā)工具來(lái)檢查應(yīng)用程序的狀態(tài)、調(diào)試問(wèn)題或查看日志。
-
繞過(guò) Kubernetes 服務(wù)和負(fù)載均衡器: 有時(shí)候,你可能想直接訪問(wèn)運(yùn)行在 Kubernetes 中的應(yīng)用程序,而不經(jīng)過(guò) Kubernetes 的服務(wù)發(fā)現(xiàn)和負(fù)載均衡機(jī)制。通過(guò)將 Pod 的端口轉(zhuǎn)發(fā)到本地,你可以繞過(guò)這些機(jī)制,直接連接到應(yīng)用程序。
kubectl port-forward 命令的基本語(yǔ)法如下:
kubectl port-forward <pod-name> [local-port:]pod-port [-n namespace]
kubectl port-forward deployment/<deployment-name> [local-port:]pod-port [-n namespace]
基于以上介紹下面對(duì)port-forward命名進(jìn)行一個(gè)簡(jiǎn)單驗(yàn)證
Kubectl 安裝
- 下載
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
- 將 kubectl 置為可執(zhí)行文件:
chmod +x ./kubectl
- 將可執(zhí)行文件 kubectl 移動(dòng)到系統(tǒng)可尋址路徑
PATH內(nèi)的一個(gè)位置:
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
說(shuō)明:
確保 /usr/local/bin 在你的 PATH 環(huán)境變量中。
- 測(cè)試一下,確保你安裝的是最新的版本:
kubectl version --client
或者使用下面命令來(lái)查看版本的詳細(xì)信息:
kubectl version --client --output=yaml
- 安裝插件后,清理安裝文件:
rm kubectl kubectl.sha256
配置kubectl
訪問(wèn)rancher控制臺(tái),下載kubeCofig文件
執(zhí)行cd 到當(dāng)前用戶跟目錄,創(chuàng)建.kube文件夾
cd & mkdir .kube & cd .kube
copy下載集群配置文件到.kube目錄下,假設(shè)文件路徑為:/Users/g2/Downloads/ ,文件名為:pdc-demo.yaml,那么命令如下
mv /Users/g2/Downloads/pdc-demo.yaml ./config
執(zhí)行kubectl get pods 查看配置是否生效,返回如下信息即生效
端口轉(zhuǎn)發(fā)配置驗(yàn)證
下面使用port-forward命令對(duì)集群中的elastic-job和eureka進(jìn)行本地訪問(wèn)
elatic-job訪問(wèn)驗(yàn)證
如下圖,假如要訪問(wèn)elatic-job
那么執(zhí)行以下命令,這里的命令表示訪問(wèn)本地8080端口轉(zhuǎn)發(fā)的pod上,pod的端口為80
kubectl port-forward elastic-job-86fc7b856-jxflx 8080:80
本地請(qǐng)求8080端口 地址,效果如下圖
eureka訪問(wèn)驗(yàn)證
eureka的pod端口也為80映射到本地端口為8762
kubectl port-forward eureka-5d4cf57b88-l8bgd 8762:80
可以看到訪問(wèn)成功
總結(jié)
以上是生活随笔為你收集整理的如何通过port-forward命令在本地访问 k8s 集群服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 研究幼小衔接论文提纲
- 下一篇: 这样delete居然不走索引