资讯动态

K8s集群Pod日志批量导出脚本实操

发布时间:2026/10/2 7:19:58 来源:尧图企业网站定制
K8s集群Pod日志批量导出脚本实操技术栈Kubernetes v1.32.13 Rocky Linux 8.6 Shell/Python/Ansible K8s Python Client v29.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案K8s集群Pod日志批量导出脚本实操操作环境K8s 集群版本 v1.32.13多节点部署已配置 kubeconfig管理节点 Rocky Linux 8.6Python 3.12Ansible 2.16kubectl 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-time7d journalctl --vacuum-size500M # 清理 /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/messagesPython 客户端报错检查 kubeconfig 路径和权限确认 API 版本兼容查看异常堆栈信息使用 try/except 捕获并处理etcd 备份失败检查 etcdctl 版本和 API 版本ETCDCTL_API3证书路径是否正确etcd 2379 端口是否监听磁盘空间是否充足定时任务不执行检查 crond 服务是否运行脚本路径是否正确使用绝对路径脚本是否有执行权限查看 /var/log/cron 日志磁盘清理脚本无效确认 crictl 命令可用检查容器运行时类型containerd/docker日志目录路径是否正确使用 find -delete 前先 -print 确认集群巡检脚本输出异常确认 kubectl 配置正确Metrics Server 是否运行kubectl top 依赖节点名称解析是否正常检查各命令返回值

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑