«

Rancher生产环境share-mnt(rancher-agent)组件丢失问题分析与解决报告

myluzh 发布于 阅读:41 Kubernetes


0x01 故障概述

故障时间:2025年10月27日
报告人:鲁籽杭
影响范围:生产环境Kubernetes集群管理功能
故障等级:P1(关键业务影响)

故障现象

0x02 故障诊断与处理

2.1 初步排查

  1. Rancher服务检查

    docker ps -a | grep rancher/rancher
    # 96fabd336823   rancher/rancher:v2.5.12        "entrypoint.sh"          3 years ago     Up 26 minutes            0.0.0.0:8081->80/tcp, :::8081->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   rancher
    docker logs 96fabd336823
    docker restart 96fabd336823
  2. Kubernetes核心组件检查

    逐个检查kube-apiserver,etcd,kube-proxy,kubelet,kube-scheduler,kube-controller-manager

    • 修复了某些核心组件依赖的某些镜像拉取失败问题
    • 确认各组件状态恢复正常

2.2 深入分析

通过对比测试环境,发现关键差异,缺少share-mnt容器。

# 生产环境缺失关键容器
docker ps -a | grep rancher-agent  # 无结果

# 但镜像存在
docker images | grep rancher-agent

2.3 关键问题定位

缺失组件share-mnt容器(rancher/rancher-agent:v2.5.12)

2.4 恢复步骤

由于master节点每天都有备份,从备份中创建了一台机器,然后查看发现share-mnt是存在的。

  1. 从备份中恢复容器配置

    pip3 install runlike
    runlike -p share-mnt
  2. 重建容器

    docker run \
       --name=share-mnt \
       --hostname=iZbp12bkuvg20e1j3y9gtxZ \
       --volume /etc/kubernetes:/etc/kubernetes \
       --volume /var/run:/var/run \
       --network=host \
       --privileged \
       --workdir=/var/lib/rancher \
       --restart=always \
       --label='io.rancher.rke.container.name=share-mnt' \
       --runtime=runc \
       --detach=true \
       rancher/rancher-agent:v2.5.12 \
       --no-register \
       --only-write-certs \
       --node-name iZbp12bkuvg20e1j3y9gtxZ \
       --server https://172.30.82.214:8443 \
       --token t6zsbb7lxjvbtc6qzrt7zcvwmrnzb22c25b4ztkgxk5fmsdfrclnzf \
       '--ca-checksum 8e673c71b7bd25e515e81d5f83d545d2b17035f0acaf2d260005f9fc36502d54'
    
  3. 证书问题处理

    • 观察到证书不匹配问题
    • 执行证书强制轮换

3. 根因分析

直接原因

根本原因

  1. 清理脚本设计缺陷

    docker container prune -f  # 未排除关键系统容器
  2. 缺乏关键容器保护机制

4. 改进措施

立即措施

  1. 修改清理脚本,添加关键容器保护:

    docker container prune -f --filter "label!=io.rancher.rke.container.name=share-mnt"
  2. 为关键系统容器添加监控告警

长期改进

  1. 建立关键组件清单和保护机制
  2. 完善容器生命周期管理策略
  3. 加强变更前的备份验证流程

5. 经验总结

本次故障凸显了生产环境自动化清理脚本的风险。作为DevOps实践的重要启示:

  1. 自动化不等于无脑化:所有自动化操作必须考虑边界条件
  2. 关键组件需要特殊保护:系统核心组件应有不同于普通应用容器的管理策略
  3. 备份验证的重要性:定期验证备份的完整性和可用性

建议团队对所有生产环境自动化脚本进行全面的安全审查,建立关键组件白名单机制,避免类似问题再次发生。


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/k8s/542.html
文章标题:《Rancher生产环境share-mnt(rancher-agent)组件丢失问题分析与解决报告