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

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

2025-06-14 04:52:13作者:段琳惟

问题背景

在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的升级机制。对于运维人员来说,掌握这些诊断和修复技术,能够有效提高集群升级的成功率,确保业务连续性。

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

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
858
509
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
257
300
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5