KusionStack 团队很高兴向大家宣布对 Operating 项目进行品牌升级,并更名为 Kuperator。本次品牌升级给予该项目更多的使命和职责,计划引入更多能力,如多集群渐进式发布、Controller 可观测等。此外项目 API 已迁移至 kusionstack/kube-api 便于统一管理。
本次 v0.6.0 版本主要更新以下功能:
提供 Pod 批量运维框架 OperationJob,允许用户自定义运维能力;
优化 CollaSet Pod 替换功能在升级与异常场景的体验;
集成 E2E 测试,提升项目质量;
https://github.com/KusionStack/kuperator/releases/tag/v0.6.0 https://www.kusionstack.io/kuperator/started/install
Feature 更新摘要
批量 Pod 运维框架 OperationJob
OperationJob 目前支持替换,并计划提供更多运维能力如摘流、重建、指定缩容等。更多细节可以参考 Kuperator 官方文档:https://www.kusionstack.io/kuperator/manuals/operationjob
优化 CollaSet Pod 替换功能在升级与异常场景下的体验
Kuperator 支持用户手动给 Pod 添加替换标签触发替换,替换过程为先扩后缩。标签内容如下:
apiVersion: v1
kind: Pod
metadata:
labels:
...
podopslifecycle.kusionstack.io/to-replace: "true"
...
v0.6.0 版本优化了以下 2 个替换场景的体验:
场景1:替换过程中,CollaSet 升级,若扩出 Pod 还未交付,期望将替换与升级动作合并,重新替换出新版本 Pod。如下图,Pod1 在替换到 Pod2 过程中,CollaSet 由版本1升级到版本2,且 Pod2 还未交付;此时 Pod2 将被删除,并重新替换出版本2的 Pod3。
场景2:当替换过程中出现异常情况,期望可以取消替换,并恢复到替换前状态。如下图,Pod1 替换扩出的 Pod2 长时间无法交付或故障,若用户需取消替换流程,则可通过删除 Pod1 替换标签以取消替换,此时 CollaSet 将删除 Pod2 并清理现场,且Pod1 恢复替换前状态。
完善 E2E 测试,提升项目质量
为提升项目质量,减轻开发者负担,在代码合并前快速发现功能缺陷,我们完善了 Kuperator 仓库的 E2E 流水线,在真实集群中完成端到端用例测试。目前 E2E 覆盖了 CollaSet 与 OperationJob 用例,未来将持续完善 PodTransitionRule 与 PodDecoration 用例。
Bug 修复
修复多容器 Pod 原地升级无法结束的问题;
修复 Pod 缩容顺序不符合预期的问题;
修复同时发布多个版本时老版本无法结束升级的问题;
修复替换过程中 Pod 被升级时控制器崩溃的问题;
修复替换过程中 Pod 被指定缩容或删除时崩溃的问题;
修复 PodOpsLifecycle 设置 ReadinessGate 并发不一致问题;
修复 CollaSet 与 PodDecoration 升级时没有相互独立的问题;
修复 CollaSet 扩容失败 Condition 未透出的问题;
修复 PodDecoration 注入 volume 顺序不稳定的问题;
了解更多
项目 GitHub 网站:https://github.com/KusionStack/kuperator KusionStack 官网:https://www.kusionstack.io