云原生多云多集群Karmada|2024开源之夏8项课题邀您共创
本文分享自华为云社区《云原生多云集群Karmada|2024开源之夏8项课题邀您共创》,作者:云容器大未来。
开源之夏介绍
开源之夏2024学生报名4月30日开启。开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。Karmada云原生多云容器引擎在今年带来多云多集群领域8个课题,欢迎高校同学选报。
Karmada社区介绍
Karmada (https://github.com/karmada-io)是业界首个多云多集群容器编排项目,也是云原生计算基金会(CNCF)孵化级项目。Karmada 社区由华为云、工商银行、小红书、中国一汽等八家企业联合发起,于2021年4月正式开源。Karmada 的贡献者来自世界各地,覆盖全球22个国家和地区的60多家组织,包括华为、DaoCloud、浙江大学、滴滴、腾讯、小红书、新浪、Intel、IBM、Red Hat、Comcast 等公司。截至目前,项目在开源软件项目托管平台 GitHub 已收获超过4.1k Star。
Karmada (Kubernetes Armada) 是一个 Kubernetes 管理系统,它使您能够在多个 Kubernetes 集群和云平台中运行云原生应用程序,而无需更改应用程序。通过使用 Kubernetes 原生 API 并提供高级调度功能,Karmada 实现了真正的开放式、多云 Kubernetes。
Karmada社区开源之夏2024课题
课题一:Karmada 支持平滑回退单集群能力
项目难度:基础
项目社区导师:潘朝思(Super pan)
导师联系邮箱:chaosi_zju@163.com
项目简述:Karmada 支持纳管单集群并接管原单集群上已部署的资源,也支持移除单集群使其脱离 Karmada 的管控。移除单集群时,Karmada 会清理该集群上曾受 Karmada 管控的资源,但在某些移除场景下,用户希望这些资源继续保留在单集群中。Karmada 希望吸引更多的用户尝试从单集群演进到多集群,该能力可以降低用户的试错成本,当用户想从多集群回退到单集群时,尽可能避免对回退后的单集群造成影响。
因此,我们计划提供一种平滑回退能力,用户在移除已纳管的集群时,可以配置将哪些资源保留,从而选择性地将资源保留在原单集群中。
课题二:实现 Karmada Dashboard 的 Override Policy 管理功能
项目难度:进阶
项目社区导师:卢传佳(船长)
导师联系邮箱:samzong.lu@gmail.com
项目简述:目前 Karmada Dashboard 已经支持了Cluster、PropagationPolicy 和 OverridePolicy 的展示的能力,社区目前正在重写 Karmada Dashboard,希望可以完备的支持上述资源的管理能力。
我们希望能在 Karmada Dashboard 中完备的支持管理 OverridePolicy 的 Feature,支持通过 OverridePolicy 编辑器编辑和展示 OverridePolicy 资源,降低用户使用的复杂度。
项目扩展:为 YAML 版本的编辑器增加 LSP 的特性(本地 worker 和远程 JSON-RPC 均可),降低用户编写 YAML 的复杂度;
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40342?lang=zh&list=pro
课题三:karmadactl 支持配置文件方式进行生产级环境安装部署
项目难度:基础
项目社区导师:梁远鹏
导师联系邮箱:gcslyp@gmail.com
项目简述:Karmada 中提供了 karmadactl init 命令安装方式,在命令执行中需要设置较多的参数,随着社区的发展,用户需要设置的参数将会越来越多,不便于用户使用。为了减少过多的命令行参数,我们提出了通过配置文件方式进行安装部署。您需要理解并熟悉 karmadactl init 源码,提交一份 karmadactl init 支持配置文件的 proposal 并且推动该 proposal 最终被 karmada 社区合并。该 proposal 的主要目标是减少过多的命令行参数,将参数以配置文件的方式逐步迁移,以及充分考虑方案的扩展性,在未来更方便的添加新的参数。
相关 issue:https://github.com/karmada-io/karmada/issues/3464
此外,karmadactl init 在部署过程中需要使用到多个容器镜像,用户无法方便的获取到会使用到的容器镜像列表。因此,我们计划添加一个 images list 子命令允许用户可以将 karmadactl init 过程中会使用到的容器镜像打印在控制台,该功能点作为上述方案中的一个要素点实现。
相关 issue:https://github.com/karmada-io/karmada/issues/4086 。
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40186?lang=zh&list=pro
课题四:Karmada 根据分布约束平均分配副本数
项目难度:进阶
项目社区导师:何俊桦(whitewindmills)
导师联系邮箱:jayfantasyhjh@gmail.com
项目简述:在 Karmada 当前的调度器副本数分配策略中,我们已经支持复制、静态权重、基于可用副本数的聚合、基于可用副本数的动态权重这四种副本分配方式。但是对于更为复杂的调度场景:在跨AZ分布约束之后,使工作负载的副本数尽可能地平均分配在所选择的集群中。目前 Karmada 还无法很好地支持这类场景。
因此我们计划对当前的 Karmada 调度策略进行语义上的梳理,确定扩展现有的 API 亦或是改变原有的 API 设计,最终引入这一特性以满足更多场景的调度需求。
相关 Issue:https://github.com/karmada-io/karmada/issues/4805
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40281?lang=zh&list=pro
课题五:Karmada 支持 OverridePolicy 动态配置机制
项目难度:进阶
项目社区导师:蒋兴彦(Chauncey)
导师联系邮箱:chaunceyjiang@gmail.com
项目简述:Karmada 通过使用 Kubernetes 原生 API 并提供高级调度功能。Karmada 将云原生应用调度到不同的成员集群中时,针对不同的成员集群,用户可能需要一些差异化配置,例如,为不同的成员集群设置不同的环境变量或是设置不同的镜像等。对此,Karmada 提供了一个差异化配置策略 API - OverridePolicy,可以为不同的集群设置一些差异化配置信息。
目前 OverridePolicy 的使用存在一个限制,它仅能设置一些静态值,无法根据一些条件进行动态设置值,这个限制让 OverridePolicy 的使用场景受限。因此我们希望提供一种能够根据条件来动态设置值的机制。这提升了用户使用 OverridePolicy 进行集群差异化配置的灵活性,为用户带来更多的扩展性。比如,用户可以通过在 OverridePolicy 中定义 CEL 或者 lua 语言进行扩展,社区已经有相关 issue 跟踪此任务,具体的解决方案需要继续推进。
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40337?lang=zh&list=pro
课题六:Karmada Dashboard自动化i18n工具
项目难度:基础
项目社区导师:丁文江(warjiang)
导师联系邮箱:1096409085@qq.com
项目简述:i18n 对国际化项目来说是十分重要的组成部分,在重写 Karmada Dashboard的过程中,我们在开源社区发现很难找一套开箱即用的i18n工具。随着项目规模的扩大,手动管理 i18n 能力不仅低效,同时手动管理 i18n 资源也很容易出错。
因此我们希望可以开发一套 i18n 自动的化工具作为 Karmada Dashboard 的配套,支持自动从 Karmada Dashboard 项目中提取中文字符、自动分配 i18n key、并替换原始的中文字符为 i18n 翻译的工具函数,并对提取到的中文字符调用第三方的翻译 API 自动翻译到目标语言。
项目扩展:
本地提供 i18n 翻译结果的展示页面,允许用户查看 i18n 覆盖情况;支持用户手动修改 i18n 文案;
用 GPT 替代 OpenAPI 的翻译实现,建立 Karmada Glossary,避免关键术语被自动翻译提升翻译质量。
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40338?lang=zh&list=pro
课题七:karmadactl 功能补齐以及运维体验提升
项目难度:基础
项目社区导师:任洪彩
导师联系邮箱:qdurenhongcai@163.com
项目简述:karmadactl 是 Karmada 项目的命令行工具(CLI),用于 Karmada 用户和管理员与 Karmada 间的交互。与 kubectl 相比,karmadactl 是一个完全专用于 Karmada 多集群场景的 CLI 工具。当前 karmadactl 实现了 get、top 等命令在多集群场景下的部分应用,但仍有部分场景有待实现和优化。
因此,我们计划补齐 karmadactl 在多集群场景下的功能,完成 karmadactl create/patch/edit 等命令的功能实现,优化 karmadactl get/apply 等命令的输入输出,进一步提高karmadactl的运维体验。
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40397?lang=zh&list=pro
课题八:Karmada 组件 RBAC 权限最小化
项目难度:进阶
项目社区导师:张壮
导师联系邮箱:m17799853869@163.com
项目简述:Karmada 项目使用 RBAC 鉴权来调节控制对计算机或网络资源的访问。如果在配置 RBAC 时分配了过大的资源对象访问权限可能会导致权限滥用,以至于攻击者扩大战果,渗透集群。如果配置 RBAC 时分配了过小的资源对象访问权限,会导致组件功能异常。
因此,我们计划梳理 Karmada 组件所需的最小 RBAC 权限集,修正 Karmada 仓当前的 RBAC 推荐配置,使其符合 RBAC 最小权限原则,最终用于指导 Karmada 用户配置 Karmada 组件的 RBAC 权限。
项目链接:https://summer-ospp.ac.cn/org/prodetail/245c40153?lang=zh&list=pro
如何报名开源之夏Karmada课题?
报名对象
-
本活动面向年满 18 周岁的高校在校学生。
-
暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。
-
中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。
-
外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。
4月30日-6月4日,符合条件的学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。
与导师建立沟通
对Karmada社区开源之夏课题感兴趣的同学,可以通过本文上方导师邮箱或社区宣讲等方式,提前联系导师沟通课题要求,了解与锁定适合自己的项目;
准备项目申请材料提交申请
1. 查看学生指南(https://summer-ospp.ac.cn/help/student/)中的【项目申请模板】,并根据要求准备相关材料。
2.点击项目主页中的【加入备选】按钮,进入系统个人中心【我的项目】中点击【查看】按钮,上传简历及项目申请书;
3. 对所有项目申请书进行优先级排序,若同时被多个项目选中,则根据提交的项目排序,优先中选优先级高的项目;
4. 点击【排序并提交】按钮提交全部项目申请。
学生可以收获什么?
-
结识开源界小伙伴和技术大牛
-
获得社区导师的专业指导,与开源项目开发者深度交流
-
丰富项目实践经验,提升项目开发技能
-
为学习方向提供参考,为职业发展积累人脉
-
通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生
Karmada社区开源之夏课题宣讲会