命令格式:
kubectl port-forward <pod_name> <forward_port> --namespace <namespace> --address <IP默认:127.0.0.1>
可以写成脚本执行:
#!/bin/bash
NAMESPACE=sscp-test
SSCP_APP=sscp-device
JACOCOAGENT_PORT=38044
export POD_NAME=`kubectl get pods --namespace ${NAMESPACE} -l app=${SSCP_APP} -o jsonpath="{.items[0].metadata.name}"`
kubectl port-forward $POD_NAME ${JACOCOAGENT_PORT} --namespace ${NAMESPACE} --address 172.31.182.152
kubectl port-forward命令访问集群中业务
使用kubectl proxy可以访问Pod中的业务,但是URL要加上namespace,service等,比较长。kubectl还提供了一个功能,就是kubectl port-forward, 直接forward数据,kubectl启动后,监听本地的一个端口,把此端口的ip包统统forward到kubectl连接的K8S集群的某个业务的端口:
例如,如果有个service名字叫做mongo-75f59d57f4-4nd6q,监听在27017端口,使用Port Forwarding:
kubectl port-forward mongo-75f59d57f4-4nd6q 28015:27017
然后就可以通过本地的端口访问此pod中的业务了:
http://127.0.0.1:28015
port-forward 不返回, 把kubectl运行机器上的一个端口,负责forward到集群中一个pod,或者一个service的端口上。
port-forward目前只支持tcp.
文章介绍了如何使用kubectlport-forward命令将本地端口转发到Kubernetes集群中的pod服务,简化了对集群内服务的访问过程。通过创建bash脚本自动获取pod名称,然后转发指定端口,使得可以通过本地IP和端口直接访问业务。port-forward主要支持TCP协议,提供了一种便捷的集群内部服务交互方式。
792

被折叠的 条评论
为什么被折叠?



