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