首页
/ Harvester集群升级故障排查与解决方案深度解析

Harvester集群升级故障排查与解决方案深度解析

2025-06-14 05:44:52作者:段琳惟

问题背景

在Harvester v1.4.2升级至v1.5.0的过程中,用户遇到了节点升级停滞的问题。具体表现为3节点集群中2个节点成功升级,但第3个节点(harvester4)长期停留在"images preloaded"状态。本文将深入分析该问题的技术细节,并提供完整的解决方案。

问题诊断过程

初始状态分析

通过检查集群状态,我们发现以下异常情况:

  1. Kubernetes节点与机器资源不匹配:虽然集群只有3个运行中的节点,但存在5个machines.cluster.x-k8s.io资源和4个nodes.devices.harvesterhci.io资源
  2. 存在已删除节点(harvester2)的残留资源
  3. 升级控制器状态显示harvester4节点卡在"Images preloaded"阶段

关键发现

  1. 资源不一致问题

    • 集群中存在已删除节点的残余Machine资源
    • 这些残留资源可能导致升级控制器状态判断错误
  2. 节点升级停滞原因

    • 节点harvester4的OS版本仍显示为v1.4.2
    • 升级流程在drain阶段出现异常,post-drain钩子未正确执行
  3. 支持包分析问题

    • 多次生成的支持包缺少关键yamls目录
    • 这可能是由于证书过期导致的收集工具功能异常

解决方案实施

第一步:清理残留资源

  1. 删除无效的Machine资源:

    kubectl delete machines.cluster.x-k8s.io custom-1d1de6c3ae63 -n fleet-local
    kubectl delete machines.cluster.x-k8s.io custom-9626842a1f91 -n fleet-local
    
  2. 清理已删除节点的设备资源:

    kubectl delete nodes.devices.harvesterhci.io harvester2
    

第二步:修复drain状态

  1. 使用post-drain.sh脚本修复harvester4节点的drain状态:

    ./post-drain.sh harvester4
    

    该脚本会:

    • 定位节点对应的Machine资源
    • 检查当前的drain状态
    • 修复缺失的post-drain钩子状态

第三步:重置升级流程

  1. 强制删除卡住的升级资源:

    kubectl patch upgrade.harvesterhci.io hvst-upgrade-zjft7 -n harvester-system \
      --type merge -p '{"metadata":{"finalizers":[]}}'
    kubectl delete upgrade.harvesterhci.io hvst-upgrade-zjft7 -n harvester-system
    
  2. 重新触发升级流程

技术原理深度解析

Harvester升级机制

Harvester的升级过程分为几个关键阶段:

  1. 准备阶段

    • 检查升级镜像可用性
    • 准备系统服务更新
  2. 节点升级阶段

    • 逐个节点执行升级
    • 包含pre-drain、drain和post-drain三个子阶段
  3. 完成阶段

    • 验证所有组件版本
    • 更新集群状态

问题根因分析

本次升级失败的根本原因在于:

  1. 资源状态不一致:之前删除节点时未完全清理相关资源,导致升级控制器状态判断错误

  2. drain流程中断:节点harvester4的post-drain钩子未正确执行,使升级流程无法继续

  3. 证书问题影响诊断:过期的证书导致支持包收集不完整,增加了问题诊断难度

最佳实践建议

  1. 升级前检查

    • 确保所有节点状态健康
    • 验证证书有效性
    • 检查资源一致性
  2. 升级过程监控

    • 实时关注每个节点的升级状态
    • 定期生成完整支持包
  3. 问题处理流程

    • 遇到升级卡顿时,首先检查drain状态
    • 使用专用工具分析升级状态
    • 必要时寻求社区支持

总结

Harvester集群升级是一个复杂的过程,涉及多个组件和状态的协调。通过本文的分析和解决方案,我们不仅解决了特定的升级卡顿问题,也深入理解了Harvester的升级机制。对于运维人员来说,掌握这些诊断和修复技术,能够有效提高集群升级的成功率,确保业务连续性。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
197
2.17 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
208
285
pytorchpytorch
Ascend Extension for PyTorch
Python
59
94
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
974
574
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
549
81
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.02 K
399
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
393
27
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
1.2 K
133