32.B站薪享宏福笔记——第十二章(2)端口转发
12 B站薪享宏福笔记——第十二章
—— Kubernetes 中必备的工具组件
12.2 端口转发
—— 官方的调试好助手
12.2.1 基本要求
Kubernetes 服务器版本必须不低于版本 [ v1.10 ]
应用场景:调试时,需要外部访问,但因为只是测试,不必耗费资源、精力去创建 service,就可以开启端口转发
# 端口转发命令、pod 名称、转发端口号、-namespace 名称空间、--address 指定绑定的地址(默认绑定到回环接口 127.0.0.1 上,集群外不可访问,当前物理机上才可访问,可以指定 0.0.0.0 ,开启远程访问,或固定某个IP上) kubectl port-forward <pod_name> <forward_port> --namespace <namespace> --address <IP默认:127.0.0.1>
12.2.2 使用方法
(1)可转发类型
1.Pod
2.ReplicaSet
3.Deployment
4.Service
(2)转发 Pod
a.回环接口转发
[root@k8s-master01 12.2]# kubectl run myapp --image=myapp:v1.0 --restart=Never pod/myapp created [root@k8s-master01 12.2]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myapp 1/1 Running 0 6s 10.244.58.200 k8s-node02 <none> <none> # 集群内可以通过 Pod ip 访问 [root@k8s-master01 12.2]# curl 10.244.58.200 Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a> # 不指定类型时,默认指定 Pod,物理机端口:Pod 端口,阻塞住当前终端端口,不要占用已经使用的端口(ss -na|grep 30010 查看是否端口占用) [root@k8s-master01 12.2]# kubectl port-forward myapp 30010:80 Forwarding from 127.0.0.1:30010 -> 80 # 回环端口 Forwarding from [::1]:30010 -> 80 # IPV6 回环端口
# 新开一个 master01 终端,访问本地回环端口 30010 ,可以访问 [root@k8s-master01 ~]# curl localhost:30010 Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
# 本地通过回环端口访问后,原终端中出现访问记录,结束转发 Ctrl + c [root@k8s-master01 12.2]# kubectl port-forward myapp 30010:80 Forwarding from 127.0.0.1:30010 -> 80 Forwarding from [::1]:30010 -> 80 Handling connection for 30010
^C
b.集群端口转发
# 通过集群外端口暴露,同样阻塞当前端口 [root@k8s-master01 12.2]# kubectl port-forward myapp 30010:80 --address 0.0.0.0 Forwarding from 0.0.0.0:30010 -> 80
浏览器可以通过转发的端口进行访问:192.168.66.11:30010

# 浏览器通过集群IP:端口访问后,原终端中出现访问记录,结束转发 Ctrl + c
[root@k8s-master01 12.2]# kubectl port-forward myapp 30010:80 --address 0.0.0.0 Forwarding from 0.0.0.0:30010 -> 80 Handling connection for 30010 Handling connection for 30010 ^C
# 消除实验影响 [root@k8s-master01 12.2]# kubectl delete pod --all pod "myapp" deleted
(3)转发 Deployment
a.回环接口转发
[root@k8s-master01 12.2]# kubectl create deployment myapp --image=myapp:v1.0 deployment.apps/myapp created [root@k8s-master01 12.2]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE myapp 1/1 1 1 6s # 本地回环访问,当不指定本地端口时,默认随机分配(避免手动定义的端口被其他应用所占用),下面是随机分配的 45221 端口 [root@k8s-master01 12.2]# kubectl port-forward deployments/myapp :80 Forwarding from 127.0.0.1:45221 -> 80 Forwarding from [::1]:45221 -> 80
# 新开一个 master01 终端,访问本地回环端口 45221 ,可以访问 [root@k8s-master01 ~]# curl localhost:45221 Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
# 本地通过回环端口访问后,原终端中出现访问记录,结束转发 Ctrl + c [root@k8s-master01 12.2]# kubectl port-forward deployments/myapp :80 Forwarding from 127.0.0.1:45221 -> 80 Forwarding from [::1]:45221 -> 80 Handling connection for 45221 ^C
b.集群端口转发
# 通过集群外端口暴露,同样阻塞当前端口,不指定本地端口时,默认随机分配(避免手动定义的端口被其他应用所占用),下面是随机分配的 36203 端口 [root@k8s-master01 12.2]# kubectl port-forward deployments/myapp :80 --address 0.0.0.0 Forwarding from 0.0.0.0:36203 -> 80
浏览器可以通过转发的端口进行访问:192.168.66.11:36203

# 浏览器通过集群IP:端口访问后,原终端中出现访问记录,结束转发 Ctrl + c [root@k8s-master01 12.2]# kubectl port-forward deployments/myapp :80 --address 0.0.0.0 Forwarding from 0.0.0.0:36203 -> 80 Handling connection for 36203 Handling connection for 36203 ^C
# 消除实验影响 [root@k8s-master01 12.2]# kubectl delete deployment --all deployment.apps "myapp" deleted
12.2.3 特别说明
kubectl port-forward 仅实现了 TCP 端口支持。在 (https://github.com/kubernetes/kubernetes/issues/47862)中跟踪了对 UDP 协议的支持
(已经有计划了,但是需要在主要功能开发完成后,再去开发一些不那么重要的功能)
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号