本文分享自華為雲社群《雲原生多雲叢集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社群開源之夏課題宣講會
點選關注,第一時間瞭解華為雲新鮮技術~