OpenKruise rollout在分批发布的时候,我在StepUpgrade状态下执行 apply命令回滚到上一个版本,有时候是rollout分批回滚,有时候是k8s controller发布,请问这是为什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
OpenKruise的Rollout功能提供了一种分批发布和回滚的策略,可以确保在发布新版本时,旧版本的服务仍然可用。
在StepUpgrade状态下执行apply命令回滚到上一个版本,可能是因为在执行rollout的过程中出现了问题,导致回滚操作被触发。这种情况下,Rollout会尝试将应用恢复到上一个版本的状态。
有时候是rollout分批回滚,可能是因为在执行rollout的过程中,有多个步骤需要更新,每个步骤都需要一定的时间来完成。因此,rollout会将整个过程分成多个步骤,每个步骤完成后再进行下一步。如果在某个步骤中出现了问题,rollout会立即停止当前步骤的更新,并尝试回滚到上一个步骤的状态。
有时候是k8s controller发布,可能是因为在执行rollout的过程中,使用了Kubernetes的controller来管理应用的更新。这种情况下,rollout会等待controller完成更新后,再继续执行后续的步骤。如果controller更新失败,rollout会尝试回滚到上一个状态。
总之,OpenKruise的Rollout功能提供了多种策略来处理发布和回滚的情况,以确保服务的稳定和可靠性。
OpenKruise Rollout 是一个为 Kubernetes 提供的渐进式交付框架,它支持多样化的发布形式,包括分批发布和流量灰度发布等。在使用 Rollout 进行分批发布时,如果在 StepUpgrade 状态下执行 apply 命令回滚到上一个版本,Rollout 的行为会受到当前发布批次的影响。
如果当前批次尚未完成,执行回滚操作时,Rollout 会进行分批回滚,即逐步撤销已经发布的 Pod,直到恢复到上一版本的状态。这是因为 Rollout 的设计理念之一是灵活性和可插拔性,即使在发布过程中,用户也可以随时取消或改变发布计划,而不会影响整体集群的稳定性和安全性。
如果当前批次已经完成,即所有步骤都已经批准,并且 Rollout 进入了下一阶段,如 Healthy 状态,此时再执行回滚,Rollout 会取消当前发布,并可能触发 Kubernetes 原生控制器进行全量发布。这是因为当 Rollout 配置被删除后,相应的 Deployment 会恢复到原生 Kubernetes 的发布行为,即流式滚动发布。
无论是哪种情况,OpenKruise Rollout 都提供了丰富的发布控制能力和良好的用户体验,用户可以根据需要灵活地进行发布和回滚操作,同时保证了发布过程的安全性和可控性。
apply回滚到了上一个版本 -> 这两种情况我怀疑是 apply 的内容与上一个版本是有一些细微的差别的,导致 rollout 判断是连续发布 而不是回滚。。我们是通过计算 podTemplateHash 来实现的 ,此回答整理自钉群“OpenKruise 社区交流群”