2025数证杯初赛集群服务器还原2025数证杯 · 技术复盘一、服务器取证依次按顺序仿真镜像node1、node2、data1、master将vm虚拟机的网段调整至192.168.50.0kubectl get nodes 命令判断所有节点都正常启动data1不是节点kubectl get pods -A 命令查看所有pod的情况处理面板的报错问题问题提示是镜像拉取错误。分别到各个工作节点通过docker images 命令查看镜像都存在。可能是镜像拉取规则问题kubectl get deployment -n kubernetes-dashboard 通过该命令获取配置文件kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard 通过该命令编辑配置文件将Always改为Never。 保存后等待即可发现没拉起来原因是镜像不存在这时候从node2找到registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard镜像导出到本地然后传入到node1中然后删除拉起失败的pod 命令如下kubectl delete pod kubernetes-dashboard-569f7c88d5-tvzqn -n kubernetes-dashboard删除完成后面板的pod会自动新建一个就能够运行了。接下来获取面板登录IP使用 kubectl get svc -A可知面板的端口是30001浏览器访问获取token的命令 kubectl create token dashboard-admin --namespace kube-system使用token登录。登录后发现很多pod都是爆红的先处理nfs的这个错误是无法连接到共享服务。通过命令检测发现是网络问题考虑可能是防火墙把data1的防火墙关闭后正常这时候redis的pod也正常了。接着处理captcha-bo的pod。根据报错信息是无法连接数据库在集群中没有发现数据库可能是被删除了。在master的root目录下发现数据库的配置文件根据mysql-d.yaml 发现数据库的挂载的mysql80的pvc。 mysql80-pvc.yaml文件中找到了目录。在data1节点上定位到这个目录数据还在只需要创建pod即可使用上述的配置文件先创建pvc卷 kubectl apply -f mysql80-pvc.yaml接下来执行kubectl apply -f mysql-d.yaml 创建成功mysql的pod。尝试连接mysql 使用navicate连接IP是192.168.50.80 端口 30627账号root 密码LKKD23mjakl213dmmm连接成功接下来处理发卡网站的重构在Deployments中未发现发卡网站可能已经删除pvc中发现有这个卷根据pvc的卷找到对应的目录未发现有网站代码猜测可能是删除了网站代码还有Deployments。在data1节点的root目录下发现dujiaoka.tar备份还原到对应的目录使用docker images检查node1 node2节点的镜像都没有配置文件需要的 webdevops/php-nginx:7.4 镜像在master节点发现有这个镜像。把这个镜像导出然后传输到工作节点导入分别导入node1 node2导入完成后运行php-nginx-deployment.yaml 配置文件创建pod发现缺失configmap执行kubectl apply -f dujiaoka-c.yaml 创建configMap。然后在面板中重启发现还是报错是镜像有关原因是导入的镜像标签名字是空的通过docker tag ac09 webdevops/php-nginx:7.4 修改标签名字。这时候。发卡网站就成功启动了。captcha-bot由于没有互联网。是无法正常启动这无需处理接下来访问网站成功还原整个集群。— END —