本文介紹如何使用kubectl port-forward
命令鏈接K8S集羣中運行的Redis服務。這種鏈接方式有助於數據庫的調試工做。git
注意:本文針對K8S的版本號爲v1.9,其餘版本可能會有少量不一樣。github
0x00 準備工做
在進行該操做以前,須要知足如下條件:redis
- 須要有一個K8S集羣,而且配置好了
kubectl
命令行工具來與集羣通訊。若是未準備好集羣,那麼你能夠使用Minikube建立一個K8S集羣,或者你也能夠使用下面K8S環境兩者之一: - 安裝了redis-cli
若是須要查看K8S版本信息,能夠輸入指令kubectl version
。數據庫
0x01 建立Pod運行Redis服務器
一、建立一個Pod:bash
kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/redis-master.yaml
表示該Pod成功建立的輸出結果以下所示:服務器
pod "redis-master" created
二、檢查該Pod是否運行並處於ready狀態:app
kubectl get pods
當該Pod處於ready狀態時,輸出內容中的STATUS字段的值爲Running:ide
NAME READY STATUS RESTARTS AGE redis-master 2/2 Running 0 41s
三、確認Redis服務運行於該Pod中,並監聽端口6379:工具
kubectl get pods redis-master --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
輸入結果會展現端口號:ui
6379
0x02 轉發本地端口到Pod端口
一、轉發本地6379端口到redis-master
Pod的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
二、啓動Redis命令行界面:
redis-cli
三、在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/