Bra*_*rks 13 kubernetes kubectl
我是 kubernetes 的新手,想知道是否有办法让我使用kubectl?
我看到有一个kubectl port-forward命令,但它似乎没有列出它们,只是设置一个。
Dyl*_*lan 13
kubectl get svc --all-namespaces -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}'
Run Code Online (Sandbox Code Playgroud)
端口转发列在服务中,上面的命令应该遍历所有这些并打印出来
Ole*_*zov 12
除了迪伦的回答,小调整与 jq 一起使用。
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)"'
Run Code Online (Sandbox Code Playgroud)
"web1: localhost:30329 -> 8080 -> 8080"
"web2: localhost:30253 -> 8080 -> 8080"
Run Code Online (Sandbox Code Playgroud)
Den*_*mov 11
针对集群的所有命名空间的 Oleg Butuzov 答案的修改。
kubectl get svc --all-namespaces -o json | jq '.items[] | {name:.metadata.name, ns:.metadata.namespace, p:.spec.ports[] } | select( .p.nodePort != null ) | "\(.ns)/\(.name): localhost:\(.p.nodePort) -> \(.p.port) -> \(.p.targetPort)"'
# output
"dbtest/mysql: localhost:31281 -> 3306 -> mysql"
Run Code Online (Sandbox Code Playgroud)
api*_*sim 10
如果问题是关于列出哪些端口已从客户端主机转发到 Kubernetes 集群上的 pod...我不知道kubectl/kubectl port-forward命令。
最终,akubectl port-forward最终调用/api/v1/namespaces/{namespace}/pods/{name}/portforward 端点并通过协议建立与 Kubernetes API 服务器之一的连接SPDY;然后 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
如果问题是关于从客户端到集群建立的端口转发,则可以执行以下操作:
ps -f | grep 'kubectl' | grep 'port-forward' | awk '{print $10 " " $11}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9464 次 |
| 最近记录: |