Kubernetes集群节点管理与维护方案

HighFoot +0/-0 0 0 正常 2025-12-24T07:01:19 Kubernetes · Node · Maintenance

Kubernetes集群节点管理与维护踩坑记录

最近在负责公司K8s集群的日常维护工作时,遇到了一系列节点管理相关的问题,特此记录分享。

问题背景

我们使用 Rancher 管理的 K8s 集群,近期频繁出现节点状态异常的问题。通过 kubectl get nodes 发现部分节点处于 NotReady 状态。

踩坑过程

第一步:排查节点状态

# 查看节点详细信息
kubectl describe nodes <node-name>

# 检查节点资源使用情况
kubectl top nodes

第二步:检查节点组件状态

通过 kubectl get componentstatuses 发现 kubelet 状态异常。进一步检查发现是由于节点磁盘空间不足导致的。

第三步:自动化清理脚本实现

为了解决这个问题,我编写了以下自动清理脚本:

# cleanup-node.sh
#!/bin/bash
NODE_NAME=$(hostname)

# 清理docker镜像
sudo docker image prune -af

# 清理未使用的容器
sudo docker container prune -f

# 清理k8s相关日志文件
find /var/log/pods -name "*.log" -mtime +7 -delete

# 清理临时文件
find /tmp -type f -mtime +1 -delete

CI/CD集成方案

为了将节点维护自动化,我们将其集成到CI/CD流水线中:

# .gitlab-ci.yml
stages:
  - node-maintenance
  
node-cleanup:
  stage: node-maintenance
  script:
    - ssh $NODE_USER@$NODE_IP "bash -s" < cleanup-node.sh
  only:
    - schedules

最终解决方案

通过配置节点污点和容忍,结合Prometheus监控告警,实现了节点的自动维护。同时在部署流水线中增加了节点健康检查步骤。

总结

K8s集群节点管理需要从自动化、监控、维护三个维度考虑,避免手动干预导致的延迟和错误。

推广
广告位招租

讨论

0/2000
Kevin918
Kevin918 · 2026-01-08T10:24:58
节点频繁NotReady确实挺头疼的,除了磁盘清理,建议加个kubelet日志监控,有时候是网络或者证书问题导致的,排查起来更高效。
WeakCharlie
WeakCharlie · 2026-01-08T10:24:58
自动化脚本不错,但记得加上异常捕获和邮件告警,不然脚本跑崩了你都不知道。另外可以考虑集成node-feature-discovery来识别节点能力,避免调度错乱。