Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
本文展示如何使用 kubectl port-forward
连接到在 Kubernetes 集群中运行的 Redis 服务。这种类型的连接对数据库调试很有用。
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
要获知版本信息,请输入kubectl version
.
创建一个 Redis deployment:
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml
查看输出是否成功,以验证是否成功创建 deployment:
deployment.apps/redis-master created
查看 pod 状态,检查其是否准备就绪:
kubectl get pods
输出显示创建的 pod:
NAME READY STATUS RESTARTS AGE
redis-master-765d459796-258hz 1/1 Running 0 50s
查看 deployment 状态:
kubectl get deployment
输出显示创建的 deployment:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
redis-master 1 1 1 1 55s
查看 replicaset 状态:
kubectl get rs
输出显示创建的 replicaset:
NAME DESIRED CURRENT READY AGE
redis-master-765d459796 1 1 1 1m
创建一个 Redis 服务:
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-service.yaml
查看输出是否成功,以验证是否成功创建 service:
service/redis-master created
检查 service 是否创建:
kubectl get svc | grep redis
输出显示创建的 service:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-master ClusterIP 10.0.0.213 <none> 6379/TCP 27s
验证 Redis 服务是否运行在 pod 中并且监听 6379 端口:
kubectl get pods redis-master-765d459796-258hz --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
输出应该显示端口:
6379
从 Kubernetes v1.10 开始,kubectl port-forward
允许使用资源名称(例如 pod 名称)来选择匹配的 pod 来进行端口转发。
kubectl port-forward redis-master-765d459796-258hz 7000:6379
这相当于
kubectl port-forward pods/redis-master-765d459796-258hz 7000:6379
或者
kubectl port-forward deployment/redis-master 7000:6379
或者
kubectl port-forward rs/redis-master 7000:6379
或者
kubectl port-forward svc/redis-master 7000:6379
以上所有命令都应该有效。输出应该类似于:
I0710 14:43:38.274550 3655 portforward.go:225] Forwarding from 127.0.0.1:7000 -> 6379
I0710 14:43:38.274797 3655 portforward.go:225] Forwarding from [::1]:7000 -> 6379
启动 Redis 命令行接口:
redis-cli -p 7000
在 Redis 命令行提示符下,输入 ping
命令:
127.0.0.1:7000>ping
成功的 ping 请求应该返回 PONG。
与本地 7000 端口建立的连接将转发到运行 Redis 服务器的 pod 的 6379 端口。通过此连接,您可以使用本地工作站来调试在 pod 中运行的数据库。
警告:警告: 由于已知的限制,目前的端口转发仅适用于 TCP 协议。 在 issue 47862 中正在跟踪对 UDP 协议的支持。
学习更多关于 kubectl port-forward。