KusionStack 团队很高兴向大家宣布对 Operating 项目进行品牌升级,并更名为 Kuperator。本次品牌升级给予该项目更多的使命和职责,计划引入更多能力,如多集群渐进式发布、Controller 可观测等。此外项目 API 已迁移至 kusionstack/kube-api 便于统一管理。
本次 v0.6.0 版本主要更新以下功能:
提供 Pod 批量运维框架 OperationJob,允许用户自定义运维能力;
优化 CollaSet Pod 替换功能在升级与异常场景的体验;
集成 E2E 测试,提升项目质量;
您可以从 GitHub 查看本次发布信息,或者按照 KusionStack 官方网站指引完成安装来体验这个版本:
https://github.com/KusionStack/kuperator/releases/tag/v0.6.0
https://www.kusionstack.io/kuperator/started/install
Feature 更新摘要
01
批量 Pod 运维框架 OperationJob
OperationJob Workload 负责对一批 Pod 进行一次性运维,并提供 Pod 运维脚手架以降低用户开发成本。OperationJob 为 Pod 运维能力提供了一层抽象接口,开发者只需以插件的方式实现并注入运维功能;同时,也可选地提供了 Pod 运维生命周期对 PodOpsLifecycle 的对接,以实现运维时流量无损变更。
OperationJob 目前支持替换,并计划提供更多运维能力如摘流、重建、指定缩容等。更多细节可以参考 Kuperator 官方文档:https://www.kusionstack.io/kuperator/manuals/operationjob
02
优化 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 恢复替换前状态。
03
完善 E2E 测试,提升项目质量
为提升项目质量,减轻开发者负担,在代码合并前快速发现功能缺陷,我们完善了 Kuperator 仓库的 E2E 流水线,在真实集群中完成端到端用例测试。目前 E2E 覆盖了 CollaSet 与 OperationJob 用例,未来将持续完善 PodTransitionRule 与 PodDecoration 用例。
Bug 修复
修复多容器 Pod 原地升级无法结束的问题;
修复 Pod 缩容顺序不符合预期的问题;
修复同时发布多个版本时老版本无法结束升级的问题;
修复替换过程中 Pod 被升级时控制器崩溃的问题;
修复替换过程中 Pod 被指定缩容或删除时崩溃的问题;
修复 PodOpsLifecycle 设置 ReadinessGate 并发不一致问题;
修复 CollaSet 与 PodDecoration 升级时没有相互独立的问题;
修复 CollaSet 扩容失败 Condition 未透出的问题;
修复 PodDecoration 注入 volume 顺序不稳定的问题;
了解更多
感谢所有 KusionStack 用户和社区小伙伴在此次版本更新过程中提出的宝贵反馈与意见,更多其它资源请参考:
项目 GitHub 网站:https://github.com/KusionStack/kuperator
KusionStack 官网:https://www.kusionstack.io
项目相关 Star 一下✨
https://github.com/kcl-lang/kcl
https://github.com/KusionStack/kusion
https://github.com/KusionStack/karpor
https://github.com/KusionStack/kuperator
https://github.com/KusionStack/resourceconsist
https://github.com/KusionStack/controller-mesh
https://github.com/KusionStack/konfig