You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用kubectl获取所有命名空间下所有Deployment对应Pod的端口列表

全集群所有Deployment关联Pod端口查询命令调整方案

核心调整点

原命令只能查询指定命名空间下的单个Deployment,要实现全集群全量查询,只需要改三个地方:

  • 加-A(全拼是--all-namespaces)参数,让kubectl遍历所有命名空间拉取资源
  • 删掉命令里写死的Deployment名rke2-coredns-rke2-coredns,这样就不会限定单个实例,会返回所有Deployment
  • 调整原来的jsonpath写法,用range循环遍历每个Deployment、每个容器,同时把命名空间、Deployment名、容器名打出来,避免全量返回时端口信息混在一起分不清归属,也能解决原写法在多容器场景下容易出现的字段错位问题。

可直接使用的命令

适配你当前使用的PowerShell环境,直接执行即可输出结构化结果:

kubectl get deployments -A -o jsonpath="{range .items[*]}{'\n'}=== 所属命名空间: {.metadata.namespace} | Deployment名称: {.metadata.name} ==={'\n'}{range .spec.template.spec.containers[*]}容器名: {.name}{'\n'}端口配置: {.ports}{'\n'}{end}{'---'}{end}"

输出示例

对应你之前查询的coredns实例,输出片段如下:

=== 所属命名空间: kube-system | Deployment名称: rke2-coredns-rke2-coredns ===
容器名: coredns
端口配置: [{"containerPort":53,"name":"udp-53","protocol":"UDP"},{"containerPort":53,"name":"tcp-53","protocol":"TCP"}]
---

补充说明

  • 上述命令查询的是Deployment Pod模板中显式声明的端口,和你原命令的查询数据源完全一致,仅扩大了查询范围
  • 如果存在容器未显式声明containerPort字段,对应端口配置位置会显示为空,这是K8s的正常特性:未显式声明的端口不影响容器监听使用,只是不会体现在资源定义中,如果需要获取容器实际运行时监听的所有端口,需要结合kubectl exec在容器内通过网络工具抓取
  • 如果需要导出为制表符分隔的精简格式方便后续表格处理,可以使用以下版本:
kubectl get deployments -A -o jsonpath="{range .items[*]}{.metadata.namespace}{'\t'}{.metadata.name}{'\t'}{range .spec.template.spec.containers[*]}{.name}{'\t'}{.ports[*]}{'\n'}{end}{end}"

内容的提问来源于stack exchange,提问作者Manx123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:06:28