公眾號「架構成長指南」,專注於生產實踐、雲原生、分散式系統、大資料技術分享
概述
在我們訪問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
可以看到訪問成功