开发者社区 > 云原生 > 正文

OpenKruise 中这个情况是不是这么个回事?

OpenKruise 中生产环境遇到一个case:advancedStatefulset下的template.label 更新了 按正常流程是会原地升级到Pod上,这个label没有ref到env,所以Container也不会重启,但如果这个Pod上有另外一个label,不属于template.label管理 ,但ref到env了,如果先patch方式更新了这个label 然后再去修改advancedStatefulset下template.label值 这个时候原地升级好像会重启Container 这里猜测是kruise daemon在原地更新的时候,Metadata的hash值发生变化了,且ref到了env,就会去重启,但实际上这个Metadata不是advancedStatefulset template管理的Metadata ,这个情况是不是这么个回事?

展开
收起
小易01 2023-07-19 21:28:49 36 0
1 条回答
写回答
取消 提交回答
  • 根据您的描述,当使用 OpenKruise 中的 AdvancedStatefulSet 进行更新时,出现了一些意外行为。根据您的猜测,更新控制器模板下的 label 值可能会导致容器重启。这个问题可能涉及以下几个方面:

    1. 控制器模板变更:更改 AdvancedStatefulSet 的控制器模板(包括 label)会触发对应 Pod 的更新操作。在 OpenKruise 中,这通常是原地升级,不会导致容器重启,除非相关的环境变量或其他配置也发生了变化。

    2. Metadata 的 hash 值:OpenKruise 使用对象的 Metadata hash 值来判断是否需要进行更新。如果通过 patch 方式直接更新了 Pod 上不受控制器模板管理的 label,可能会导致该 Pod 的 Metadata hash 发生变化,从而触发容器重启。

    3. Env 对象的引用:如果您修改了与环境变量相关联的标签或其他元数据,即使该元数据不属于控制器模板管理的部分,但由于 Env 对象与容器的运行环境息息相关,更新后可能会导致容器重启。

    为了进一步诊断和解决这个问题,建议您执行以下步骤:

    • 仔细检查 AdvancedStatefulSet 的配置和更新过程是否正确,并确保所有的变更都遵循预期。

    • 检查 Pod 的日志和事件,了解容器重启的具体原因。这些信息可能有助于排查问题所在。

    • 查阅 OpenKruise 的官方文档、GitHub 仓库或社区论坛,寻找类似问题的已知解决方案或反馈。也可以尝试与 OpenKruise 社区成员进行交流以获取更多帮助。

    2023-07-28 11:37:48
    赞同 展开评论 打赏
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载