多云容器编排 Karmada-Operator 实践( 四 )


这里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 实践

文章插图
为了更好的提高开发人员的体验,计划提供Karmada-Operator的CI构建能力 。这里在K8s集群里部署github的self-hosted Runner和kubevirt 。
  1. 用户在github上提交PR
  2. 触发github Actions,我们在self-hosted里定义的流程
  3. 执行语法和单元测试
  4. 通过kubevirt创建vm
  5. 在多个vm里部署1个host和2个member集群
  6. 部署Karmada和添加member集群
  7. 执行Karmada e2e和bookfinfo案例测试
计划添加的CI矩阵测试如下:
  • 语法测试:
  • 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 实践】

经验总结扩展阅读