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

如何将Kubernetes的Pod列表导出为.json、.csv等外部文件?

PowerShell 导出指定命名空间 Pod 列表实现方案

kubectl 原生支持结构化输出参数,不需要解析默认的纯文本表格,直接配合 PowerShell 原生命令即可稳定导出 JSON/CSV 格式的 Pod 列表,以下是可直接复用的实现:

导出为 JSON 格式(推荐用于后续脚本处理)

JSON 格式保留 Pod 全量字段,是后续做资源校验、字段提取的最优选择,执行以下命令即可直接导出指定命名空间下运行中(Running)状态的 Pod 列表:

# 替换为实际命名空间名称
$targetNamespace = "name_of_your_namespace"
# 导出Running状态Pod列表到当前目录的running_pods.json文件
kubectl get pods -n $targetNamespace --field-selector status.phase=Running -o json | Out-File -FilePath "./running_pods.json" -Encoding utf8

参数说明:

  • -o json:指定 kubectl 输出标准 JSON 格式的结构化数据,不存在纯文本表格的折行、截断问题,跨版本兼容性极强
  • --field-selector status.phase=Running:在 kubectl 侧直接过滤运行状态的 Pod,不需要导出全量数据后再二次筛选
  • -Encoding utf8:指定文件编码为 UTF-8,避免跨环境打开出现乱码

导出为 CSV 格式(适用于表格查看、轻量数据流转)

如果需要用 Excel 等表格工具打开查看,或者对接仅支持 CSV 格式的流程,可以将 kubectl 返回的 JSON 结构转换后导出为 CSV:

$targetNamespace = "name_of_your_namespace"
$exportCsvPath = "./running_pods.csv"

kubectl get pods -n $targetNamespace --field-selector status.phase=Running -o json |
    ConvertFrom-Json |
    Select-Object -ExpandProperty Items |
    ForEach-Object {
        [PSCustomObject]@{
            PodName        = $_.Metadata.Name
            PodStatus      = $_.Status.Phase
            CreateTime     = $_.Metadata.CreationTimestamp
            Namespace      = $_.Metadata.Namespace
            ScheduledNode  = $_.Spec.NodeName
        }
    } | Export-Csv -Path $exportCsvPath -NoTypeInformation -Encoding utf8

你可以根据自己的需要,在ForEach-Object块里增减需要导出的字段。

注意:不要尝试通过字符串切割的方式解析 kubectl 默认输出的纯文本表格,不同 kubectl 版本、终端宽度配置下,表格输出格式会自动调整,脚本运行稳定性极差,所有自动化场景优先使用 kubectl 原生的结构化输出参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:30:11