0%

使用port-forward访问集群中的应用程序

使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server;

使用port-forward访问集群中的应用程序

为Redis创建Deployment和Service

  • 创建 Redis Deployment,YAML文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-master
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
role: master
tier: backend
replicas: 1
template:
metadata:
labels:
app: redis
role: master
tier: backend
spec:
containers:
- name: master
image: redis
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
  • 创建 Redis Deployment :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@k8s-master 0429]# kubectl apply -f redis-deployment.yaml 
deployment.apps/redis-master created
#执行命令,查看Pod状态:
[root@k8s-master 0429]# kubectl get pod
NAME READY STATUS RESTARTS AGE
redis-master-8556bd886d-57qzb 1/1 Running 0 14s

# 查看 Deployment 状态:
[root@k8s-master 0429]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
redis-master 1/1 1 1 35s

# 查看 ReplicaSet 状态
[root@k8s-master 0429]# kubectl get rs
NAME DESIRED CURRENT READY AGE
redis-master-8556bd886d 1 1 1 42s
  • 创建Redis服务,YAML文件如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
app: redis
role: master
tier: backend
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
role: master
tier: backend
  • 创建Service :
1
2
3
4
5
6
7
8
9
10
[root@k8s-master 0429]# kubectl apply -f redis-service.yaml 
service/redis-master created

# 检查 Service 创建结果
[root@k8s-master 0429]# kubectl get svc | grep redis
redis-master ClusterIP 10.106.250.29 <none> 6379/TCP 9s

# 验证 Redis Service已经运行,并监听了 6379 端口
[root@k8s-master 0429]# kubectl get pods redis-master-8556bd886d-57qzb --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
6379

转发本地端口到Pod的端口

使用 kubectl port-forward 命令,用户可以使用资源的名称来进行端口转发。下面的命令中的任意一行,都可以实现端口转发的效果:

1
2
3
4
5
6
7
8
9
10
# 这几个命令执行任意一个即可
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

[root@k8s-master 0429]# kubectl port-forward redis-master-8556bd886d-57qzb 7000:6379
Forwarding from 127.0.0.1:7000 -> 6379
Forwarding from [::1]:7000 -> 6379

启动 Redis 命令行:

1
2
3
redis-cli -p 7000
127.0.0.1:7000>ping
# Redis 服务器将返回 PONG

总结

本机 7000 端口的连接被转发到集群中 Redis Server 所在 Pod 的 6379 端口。当此连接存在时,可以使用自己的机器上的客户端对部署在集群中的 Redis Server 进行 Debug。