【K8S學習筆記】Part1:使用端口轉發訪問集群內的應用


本文介紹如何使用kubectl port-forward命令連接K8S集群中運行的Redis服務。這種連接方式有助於數據庫的調試工作。

注意:本文針對K8S的版本號為v1.9,其他版本可能會有少許不同。

0x00 准備工作

在進行該操作之前,需要滿足以下條件:

  • 需要有一個K8S集群,並且配置好了kubectl命令行工具來與集群通信。如果未准備好集群,那么你可以使用Minikube創建一個K8S集群,或者你也可以使用下面K8S環境二者之一:
  • 安裝了redis-cli

如果需要查看K8S版本信息,可以輸入指令kubectl version

0x01 創建Pod運行Redis服務器

1、創建一個Pod:

kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/redis-master.yaml

表示該Pod成功創建的輸出結果如下所示:

pod "redis-master" created

2、檢查該Pod是否運行並處於ready狀態:

kubectl get pods

當該Pod處於ready狀態時,輸出內容中的STATUS字段的值為Running:

NAME           READY     STATUS    RESTARTS   AGE
redis-master   2/2       Running   0          41s

3、確認Redis服務運行於該Pod中,並監聽端口6379:

kubectl get pods redis-master --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

輸入結果會展示端口號:

6379

0x02 轉發本地端口到Pod端口

1、轉發本地6379端口到redis-masterPod的6379端口:

kubectl port-forward redis-master 6379:6379

輸出結果類似如下內容:

I0710 14:43:38.274550    3655 portforward.go:225] Forwarding from 127.0.0.1:6379 -> 6379
I0710 14:43:38.274797    3655 portforward.go:225] Forwarding from [::1]:6379 -> 6379

2、啟動Redis命令行界面:

redis-cli

3、在Redis命令行提示中,輸入ping命令:

127.0.0.1:6379>ping

ping請求成功將返回PONG

0x03 總結

向本地端口6379發起的連接,將會轉發到運行着Redis服務器的Pod的6379端口。通過這種機制,我們就可以使用本地工作站來調試運行在Pod內的數據庫了。

注意:由於已知的限制,端口轉發目前僅僅支持TCP協議,對於UDP協議的支持功能目前正在由issue 47862跟蹤。

英文原文:https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM