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

Kubernetes如何根据创建时间或存在时长删除Namespace

Kubernetes 按创建时长清理Namespace解决方案

可以实现该需求,Kubernetes 没有内置的按时长自动清理Namespace的原生功能,但可以通过kubectl结合shell脚本、或者自定义控制器的方式实现筛选和删除。

核心实现逻辑

  • Namespace的元数据中自带creationTimestamp字段,记录了资源的创建时间,通过kubectl可以批量获取该字段值
  • 计算当前时间和创建时间的差值,筛选出存在时长超过阈值的资源
  • 叠加名称规则匹配,对符合条件的Namespace执行删除操作

实操示例(删除名称前缀为test-、存在时长超过3天的Namespace)

以下脚本默认先做Dry Run,仅输出符合条件的Namespace,确认无误后再开启删除逻辑:

#!/bin/bash
# 名称匹配正则:示例为匹配所有以test-开头的Namespace
NAME_REGEX="^test-"
# 过期阈值:3天换算为秒
EXPIRE_THRESHOLD=$((3 * 24 * 3600))
# 当前时间戳
CURRENT_TS=$(date +%s)

# 遍历所有匹配名称规则的Namespace
kubectl get ns -o jsonpath='{range .items[*]}{.metadata.name}{" "}{.metadata.creationTimestamp}{"\n"}{end}' | grep -E "$NAME_REGEX" | while read ns_name create_time; do
    # 转换创建时间为时间戳
    create_ts=$(date -d "$create_time" +%s)
    # 计算已存在时长
    exist_duration=$((CURRENT_TS - create_ts))

    if [ $exist_duration -gt $EXPIRE_THRESHOLD ]; then
        echo "待删除:$ns_name,已存在时长:$((exist_duration / 3600))小时"
        # 确认筛选结果正确后,取消下一行注释开启删除
        # kubectl delete ns $ns_name
    fi
done

注意事项

  • 正式执行删除前必须先运行Dry Run版本确认筛选结果,避免误删kube-system、kube-public等系统核心Namespace
  • 如果需要定期自动清理,可以将脚本封装为Kubernetes CronJob,同时配置最小可用RBAC权限,仅授予CronJob对应ServiceAccount的Namespace查看、删除权限
  • 生产环境建议给重要Namespace添加自定义保护标签,脚本增加过滤逻辑,跳过带保护标签的Namespace,避免误操作

内容的提问来源于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 21:42:03