本文介绍如何使用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/