☰
K8s集群节点临时文件清理脚本实操
2026/10/2 7:19:49 网站建设 项目流程

K8s集群节点临时文件清理脚本实操

技术栈:Kubernetes v1.32.13 + Rocky Linux 8.6 + Shell/Python/Ansible + K8s Python Client v29.x

操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案

K8s集群节点临时文件清理脚本实操

操作环境

  • K8s 集群版本 v1.32.13,多节点部署,已配置 kubeconfig

  • 管理节点 Rocky Linux 8.6,Python 3.12,Ansible 2.16,kubectl v1.32.13

  • 节点间已配置 SSH 免密登录,统一用户 ops

  • 已安装 kubernetes Python 客户端库 v29.x

  • 备份存储目录 /backup,脚本目录 /opt/k8s-ops

对接原理

K8s 运维自动化通过 Shell 脚本、Python 脚本和 Ansible Playbook 实现批量节点管理、集群初始化、备份恢复、巡检监控、故障排查等重复性工作。Shell 脚本适合系统级操作和命令编排;Python 通过官方客户端库(kubernetes)调用 K8s API,实现资源的增删改查和事件监听;Ansible 通过 Inventory 管理节点清单,使用 Playbook 和 Role 实现声明式批量配置,支持幂等操作、变量模板、条件判断和错误处理。三者结合可覆盖从系统初始化到集群运维的全流程自动化。

详细步骤

1. 节点清理脚本

cat > /opt/k8s-ops/node-cleanup.sh << 'EOF' #!/bin/bash set -euo pipefail source /opt/k8s-ops/common.sh log_info "开始节点清理" # 清理 Docker/Containerd 未使用镜像 log_info "清理未使用容器镜像" crictl rmi --prune 2>/dev/null || true # 清理已退出容器 crictl rm $(crictl ps -a -q --state Exited) 2>/dev/null || true # 清理日志文件 log_info "清理系统日志" journalctl --vacuum-time=7d journalctl --vacuum-size=500M # 清理 /tmp 旧文件 find /tmp -type f -atime +7 -delete 2>/dev/null || true # 清理 K8s 空目录 find /var/lib/kubelet -type d -empty -delete 2>/dev/null || true # 查看磁盘使用 log_info "当前磁盘使用:" df -h | grep -E 'Filesystem|/$|/var|/data' log_info "节点清理完成" EOF chmod +x /opt/k8s-ops/node-cleanup.sh # 批量执行 for node in 192.168.1.100 192.168.1.101 192.168.1.102; do ssh root@${node} 'bash -s' < /opt/k8s-ops/node-cleanup.sh done

验证流程

# 1. 验证脚本语法 bash -n /opt/k8s-ops/script.sh # 无输出表示语法正确 ​ # 2. 验证脚本执行权限 ls -la /opt/k8s-ops/script.sh # 应有 x 执行权限 ​ # 3. 验证 Shell 脚本执行 bash /opt/k8s-ops/script.sh # 脚本正常执行,输出预期结果 ​ # 4. 验证 Python 脚本 python3 -m py_compile /opt/k8s-ops/script.py python3 /opt/k8s-ops/script.py # 无语法错误,正常输出 ​ # 5. 验证 Ansible Playbook ansible-playbook -i hosts.ini playbook.yml --syntax-check ansible-playbook -i hosts.ini playbook.yml --check # 语法检查通过,dry-run 无错误 ​ # 6. 验证定时任务 crontab -l # 定时任务已配置,执行时间正确 ​ # 7. 验证备份文件 ls -lh /backup/etcd/ # 备份文件存在,大小正常

排错方案

  • Shell 脚本报错:使用 bash -x script.sh 调试,检查 set -e 导致的提前退出,确认变量是否正确赋值(set -u 会检测未定义变量)

  • SSH 批量执行失败:检查 SSH 免密是否配置,节点网络是否可达,目标主机 SSH 端口是否开放,使用 ssh -v 调试连接

  • Ansible Playbook 失败:使用 -vvv 查看详细输出,确认 Inventory 主机配置,检查模块参数,使用 --check 预演,查看目标主机 /var/log/messages

  • Python 客户端报错:检查 kubeconfig 路径和权限,确认 API 版本兼容,查看异常堆栈信息,使用 try/except 捕获并处理

  • etcd 备份失败:检查 etcdctl 版本和 API 版本(ETCDCTL_API=3),证书路径是否正确,etcd 2379 端口是否监听,磁盘空间是否充足

  • 定时任务不执行:检查 crond 服务是否运行,脚本路径是否正确(使用绝对路径),脚本是否有执行权限,查看 /var/log/cron 日志

  • 磁盘清理脚本无效:确认 crictl 命令可用,检查容器运行时类型(containerd/docker),日志目录路径是否正确,使用 find -delete 前先 -print 确认

  • 集群巡检脚本输出异常:确认 kubectl 配置正确,Metrics Server 是否运行(kubectl top 依赖),节点名称解析是否正常,检查各命令返回值

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询