这里Karmada-Operator基于k8s的CR实现了动态inventory plugins,主要通过解析KarmadaDeployment的members定义去动态的生成inventory 。这里添加了add-member和del-member 2个角色, add-member里集群会被注册到Karmada控制平面,del-member里的集群会被从Karmada控制平面注销,这样就可以并发的注册和注销多个member集群 。同时也可以提供ssh登录模式,方便后期扩展 。
三、Karmada-Operator的CI介绍

文章插图
为了更好的提高开发人员的体验,计划提供Karmada-Operator的CI构建能力 。这里在K8s集群里部署github的self-hosted Runner和kubevirt 。
- 用户在github上提交PR
- 触发github Actions,我们在self-hosted里定义的流程
- 执行语法和单元测试
- 通过kubevirt创建vm
- 在多个vm里部署1个host和2个member集群
- 部署Karmada和添加member集群
- 执行Karmada e2e和bookfinfo案例测试
- 语法测试:
- ansible-lint
- shellcheck
- yamllint
- syntax-check
- pep8
- 集群部署测试:
- Karmadactl、charts、yaml和二进制部署和所有配置项安装测试
- join/ unjoin member 集群
- 升级Karmada
- etcd集群的备份和恢复
- 功能测试:
- Karmada e2e测试
- 创建bookinfo案例
- 性能测试:
我们主要通过kubemark组件模拟了多个2000节点的member集群进行了性能测试,其中一个测试案例是集群故障转移,结论是4w个无状态pod能够在15分钟完成故障迁移,有机会可以分享我们的性能测试 。四、总结通过社区的调研和vivo的实践,最终确定了Karmada-Operator方案设计 。Karmada-Operator具有高度可扩展性、可靠性、更直观地编写操作逻辑和开箱即用等特点,我们相信通过这种高度可扩展的声明式、自我修复云原生系统管理Karmada,为我们全面切换到Karmada去管理业务提供了强有力可靠保障 。
基于ansible的operator也存在如下缺点 。第一点没有提供webhook的能力,需要自己添加或者在ansible的task添加相关的校验;第二点是自动生成了通用的CRD模版,没有详细可定义的脚手架工具去自动生成CRD 。
当前Karmada-operator还在初始阶段,提供了方案和部分实践,具体功能还需不断的完善和改进 。具体可以查看vivo的Karmada-Operator仓库,欢迎大家试用和提建议 。当前代码提供的能力矩阵可以查看项目规划 。
【多云容器编排 Karmada-Operator 实践】
经验总结扩展阅读
- Docker容器获取宿主机信息
- 罐头容器的种类和形式有哪些?
- 养鱼容器如何设备?
- 蓄水容器有哪些作用?
- 无菌容器打开后有效期为多少小时
- 奶油怎么制作
- 用成型水做起泡胶
- 用硼砂水做起泡胶
- 空气炸锅能放什么容器
- 家庭面粉放什么容器里
