kubectl port-forward 指令
当K8s的Service类型为ClusterIP,不是NodePort,就只能集群内部访问,想在外部访问可以执行kubectl port-forward,将一个或多个本地端口转发到 Pod或者Service。Service就是对提供同一服务的多个pod的聚合,并提供同一的入口地址,因此上面指令中的pod/yourPodName可换成service/youServiceName。原因:没做转发时,这
背景:
当K8s的Service类型为ClusterIP,不是NodePort,就只能集群内部访问,想在外部访问可以执行kubectl port-forward,将一个或多个本地端口转发到 Pod或者Service
作用:
做转发,将本地端口转发到pod。官方文档中的描述:
Forward one or more local ports to a pod.
Use resource type/name such as deployment/mydeployment to select a pod. Resource type defaults to ‘pod’ if omitted.
语法:
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
参数:
参数项 | 默认值 | 用法 |
---|---|---|
address | localhost | 要侦听的地址,用逗号分隔,仅接收IP地址或localhost为值,使用localhost,kubelct将尝试在127.0.0.1 和 ::1 上绑定,如果这两个地址都不能绑定,则转发失败 |
pod-running-timeout | 1m0s | 等待至少一个 Pod 运行的时间长度(如 5 秒、2 米或 3 小时,大于零) |
举例:
- 在本地侦听端口 9527,转发到 Pod 中的 9527
# [LOCAL_PORT:]REMOTE_PORT
kubectl port-forward pod/mypod 9527:9527 -n namespace
- 侦听所有地址上的端口 8888,转发到 Pod 中的 5000
kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000 -n namespace
- 侦听本地主机和选定 IP 上的端口 8888,转发到 Pod 中的 5000
kubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000 -n namespace
- 在本地侦听端口 5000 和 6000,将数据转发到 Pod 中的端口 5000 和 6000
kubectl port-forward pod/mypod 5000 6000 -n namespace
- 在本地侦听端口 5000 和 6000,将数据转发到部署选择的容器中的端口 5000 和 6000
kubectl port-forward deployment/mydeployment 5000 6000 -n namespace
- 在本地侦听随机端口,转发到 Pod 中的 5000 端口
kubectl port-forward pod/mypod :5000 -n namespace
补充:
Service就是对提供同一服务的多个pod的聚合,并提供同一的入口地址,因此上面指令中的pod/yourPodName可换成service/youServiceName
kubectl port-forward --address 0.0.0.0 service/yourServiceName 8888:5000 -n namespace
以上写法也是合理的,反正即使转发给service,最后干活儿的也是pod
可能遇到的坑:
(1)转发后外部连接报错No route to host
原因:本地端口没开
firewall-cmd --list-ports
firewall-cmd --add-port 6379/tcp --permanent
firewall-cmd --reload
(2) 没做转发,开了本地端口,但本地端口连不通
原因:没做转发时,这个端口只是开了,并未被监听,此时telnet自然连不上。简单说就是端口开了,但端口下没应用或者服务。
# 查看某个端口是否被监听
netstat -ano
netstat -ano|grep -i 6379
官方文档:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#port-forward
更多推荐
所有评论(0)