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

Kubernetes:如何查询运行时长超过3天的命名空间?

筛选运行时长超过3天的命名空间解决方案

你可以通过以下两种常用方式完成筛选,都可以兼容你现有的标签过滤、按创建时间排序的需求:

方案1:搭配awk直接筛选(无需额外工具)

完整命令如下:

kubectl get namespaces -l provisioner=foo --sort-by=.metadata.creationTimestamp -o go-template='{{range .items}}{{.metadata.name}} {{.metadata.creationTimestamp}}{{"\n"}}{{end}}' | awk '$2 <= "'$(date -d '3 days ago' -Ins --utc | sed 's/+0000/Z/')'" { print $1 }'

命令逻辑说明:

  • 沿用了你原来的标签过滤、按创建时间排序的参数
  • 通过-o go-template格式化输出命名空间名称和对应的UTC创建时间戳,和k8s原生的时间格式对齐
  • 用date命令生成3天前的UTC时间阈值,通过awk对比后仅输出创建时间早于阈值的命名空间名称

方案2:搭配jq筛选(可读性更高)

如果你的环境已经安装jq工具,可以用json输出的方式实现,逻辑更易读:

kubectl get namespaces -l provisioner=foo --sort-by=.metadata.creationTimestamp -o json | jq --arg cutoff "$(date -d "3 days ago" +%s)" '.items[] | select(.metadata.creationTimestamp | fromdate < ($cutoff | tonumber)) | .metadata.name'

命令逻辑说明:

  • 把kubectl输出转换为json格式
  • 将k8s返回的创建时间戳转换为Unix时间戳,和3天前的Unix时间戳做对比,直接过滤符合要求的命名空间

注意:上述命令中的date参数是GNU Date的语法,如果你使用的是macOS系统,需要把命令中的date -d '3 days ago'替换为date -v-3d,其余逻辑保持不变即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:15:02