命令格式:
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
.