OpenKruise rollout在分批发布的时候,请问这是为什么?

OpenKruise rollout在分批发布的时候,我在StepUpgrade状态下执行 apply命令回滚到上一个版本,有时候是rollout分批回滚,有时候是k8s controller发布,请问这是为什么?

展开
收起
真的很搞笑 2024-01-10 11:40:51 108 分享 版权
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    OpenKruise的Rollout功能提供了一种分批发布和回滚的策略,可以确保在发布新版本时,旧版本的服务仍然可用。

    在StepUpgrade状态下执行apply命令回滚到上一个版本,可能是因为在执行rollout的过程中出现了问题,导致回滚操作被触发。这种情况下,Rollout会尝试将应用恢复到上一个版本的状态。

    有时候是rollout分批回滚,可能是因为在执行rollout的过程中,有多个步骤需要更新,每个步骤都需要一定的时间来完成。因此,rollout会将整个过程分成多个步骤,每个步骤完成后再进行下一步。如果在某个步骤中出现了问题,rollout会立即停止当前步骤的更新,并尝试回滚到上一个步骤的状态。

    有时候是k8s controller发布,可能是因为在执行rollout的过程中,使用了Kubernetes的controller来管理应用的更新。这种情况下,rollout会等待controller完成更新后,再继续执行后续的步骤。如果controller更新失败,rollout会尝试回滚到上一个状态。

    总之,OpenKruise的Rollout功能提供了多种策略来处理发布和回滚的情况,以确保服务的稳定和可靠性。

    2024-01-13 17:29:05
    赞同 展开评论
  • OpenKruise Rollout 是一个为 Kubernetes 提供的渐进式交付框架,它支持多样化的发布形式,包括分批发布和流量灰度发布等。在使用 Rollout 进行分批发布时,如果在 StepUpgrade 状态下执行 apply 命令回滚到上一个版本,Rollout 的行为会受到当前发布批次的影响。

    1. 如果当前批次尚未完成,执行回滚操作时,Rollout 会进行分批回滚,即逐步撤销已经发布的 Pod,直到恢复到上一版本的状态。这是因为 Rollout 的设计理念之一是灵活性和可插拔性,即使在发布过程中,用户也可以随时取消或改变发布计划,而不会影响整体集群的稳定性和安全性。

    2. 如果当前批次已经完成,即所有步骤都已经批准,并且 Rollout 进入了下一阶段,如 Healthy 状态,此时再执行回滚,Rollout 会取消当前发布,并可能触发 Kubernetes 原生控制器进行全量发布。这是因为当 Rollout 配置被删除后,相应的 Deployment 会恢复到原生 Kubernetes 的发布行为,即流式滚动发布。

    无论是哪种情况,OpenKruise Rollout 都提供了丰富的发布控制能力和良好的用户体验,用户可以根据需要灵活地进行发布和回滚操作,同时保证了发布过程的安全性和可控性。

    2024-01-13 10:52:38
    赞同 展开评论
  • apply回滚到了上一个版本 -> 这两种情况我怀疑是 apply 的内容与上一个版本是有一些细微的差别的,导致 rollout 判断是连续发布 而不是回滚。。我们是通过计算 podTemplateHash 来实现的 ,此回答整理自钉群“OpenKruise 社区交流群”

    2024-01-10 12:28:56
    赞同 展开评论

国内唯一 Forrester 公共云容器平台领导者象限。

还有其他疑问?
咨询AI助理