我是kubernetes的新手,我想知道是否有一种方法可以让我使用kubectl
查看当前配置的所有端口转发列表?
我看到有一个kubectl port-forward
命令,但似乎没有列出它们,只需设置一个即可。
答案 0 :(得分:3)
除了Dylan的答案外,还需要对jq进行细微调整。
Beep(hertz, milli)
kubectl get svc -o json | jq '.items[] | {name:.metadata.name, p:.spec.ports[] } | select( .p.nodePort != null ) | "\(.name): localhost:\(.p.nodePort) -> \(.p.port) -> \(.p.targetPort)"'
p.s。
没找到Dylan最初的答案,但是它启发了我玩"web1: localhost:30329 -> 8080 -> 8080"
"web2: localhost:30253 -> 8080 -> 8080"
。请支持他。
答案 1 :(得分:3)
如果问题在于列出哪些端口已从客户端主机转发到Kubernetes集群上的Pod ...我不知道要使用kubectl
/ kubectl port-forward
命令。 / p>
最终,kubectl port-forward
最终调用了/api/v1/namespaces/{namespace}/pods/{name}/portforward
endpoint并通过SPDY
协议建立了与Kubernetes API servers之一的连接;然后,kube-apiserver代理到具体Pod的连接。将带有kubectl port-forward
的端口转发到具体的pod,从部署中选择的pod或特定Kubernetes服务的pod时,似乎是这种情况。
鉴于kube-apiserver代理了该连接,使用诸如lsof
之类的内容检查客户端或服务器端的网络连接,仅显示了代理的端口号(例如443或8443) 。然后,在客户端使用PID,可以确定它正在侦听的端口是转发的本地端口。
同样在客户端,仅使用kubectl
之类的列表列出所有ps -f | grep 'kubectl' | grep 'port-forward'
进程将列出使用kubectl port-forward
建立的所有当前端口转发
答案 2 :(得分:2)
kubectl get svc --all-namespaces -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}'
端口转发在服务中列出,上述命令应遍历所有端口并打印出来