编写Shell脚本:检查并删除指定Kubernetes命名空间直至完成
Kubernetes命名空间检查与删除脚本
以下是满足需求的Shell脚本,包含命名空间存在性检查、删除操作及等待删除完成的完整逻辑:
#!/bin/bash # 定义需要处理的命名空间列表 NAMESPACES=("aaa-new-ui-dev" "bbb-java-new-ui-dev") # 遍历每个命名空间执行操作 for ns in "${NAMESPACES[@]}"; do # 静默检查命名空间是否存在 if kubectl get namespace "$ns" &>/dev/null; then echo "命名空间 $ns 存在,启动删除流程..." # 执行命名空间删除命令 kubectl delete namespace "$ns" # 等待命名空间完全删除,超时时间设为5分钟 echo "等待 $ns 被彻底删除..." kubectl wait --for=delete namespace/"$ns" --timeout=5m # 根据等待结果输出状态 if [ $? -eq 0 ]; then echo "命名空间 $ns 已成功删除" else echo "警告:删除 $ns 超时或执行失败" fi else echo "命名空间 $ns 不存在,跳过删除操作" fi done
关键逻辑说明
- 批量处理支持:用数组
NAMESPACES存储目标命名空间,后续新增或修改只需调整数组内容即可 - 静默存在性检查:
kubectl get namespace "$ns" &>/dev/null通过屏蔽输出,仅通过命令返回值判断命名空间是否存在(返回0代表存在) - 等待删除完成:
kubectl wait命令会持续监听命名空间状态,直到其被删除或达到超时时间,避免脚本提前退出而遗漏删除状态确认 - 状态反馈:通过
$?获取等待命令的返回值,明确告知用户删除是否成功完成
使用步骤
- 将脚本保存为
cleanup-namespaces.sh - 赋予执行权限:
chmod +x cleanup-namespaces.sh - 执行脚本:
./cleanup-namespaces.sh
注意:执行脚本需具备Kubernetes集群的命名空间查看与删除权限,确保当前kubectl上下文已正确配置到目标集群。
内容的提问来源于stack exchange,提问作者vikash sharma
相关产品推荐
相关产品推荐

