NKD 是 NestOS-kubernetes-Deployer 的縮寫,是為了基于 NestOS 部署的 Kubernetes 集群運維工作準備的解決方案。其目標是在集群外提供對集群基礎設施(包括操作系統和 Kubernetes 基礎組件)的部署、更新和配置管理等服務。
1. 引言
Kubernetes 作為云原生領域容器云場景的事實標準,以其卓越的功能和靈活性,極大地簡化了容器化應用程序的部署和管理。容器技術封裝所需運行環境,實現與底層操作系統的解耦,而 Kubernetes 更進一步實現了與底層運行節點的解耦,使得應用在不同云提供商和環境中無縫部署。
然而,這種解耦也帶來了新的挑戰。隨著 Kubernetes 的廣泛應用,運維復雜性逐漸凸顯。維護 Kubernetes 集群需要大量技術和資源,運維人員必須熟悉復雜的 Kubernetes 配置和管理,以保證集群的穩定運行。
為解決這一問題,運維人員主要將精力投入到集群本身的運維管理中,對于底層操作系統和 Kubernetes 基礎組件持保守態度,避免頻繁更新。然而,考慮到安全更新和 Kubernetes 新版本特性的支持,底層基礎設施組件的更新勢在必行。因此,需要一種解決方案來簡化底層基礎設施的運維工作,使運維更輕松地管理和更新集群的基礎設施。
2. NestOS 云底座操作系統
NestOS 是一款在 openEuler 社區 CloudNative sig 組孵化的云底座操作系統,專注于提供大規模集群部署環境下最佳的容器主機。
傳統上,使用通用操作系統作為集群基礎設施時,采用類似 Red Hat Satellite 或 SUSE Manager 等企業級系統管理平臺是一個較為理想的解決方案。這些平臺提供軟件包管理、配置管理、補丁更新等功能,便于對大規模集群進行運維。然而,在對操作系統進行升級和管理的過程中,可能會遇到網絡或電源等異常情況,導致部分節點處于不穩定的中間態。此外,這些平臺僅限于支持其本身所覆蓋的管理范圍,對于集群中存在運維人員臨時維護或開發人員臨時調試導致的環境不一致,可能無法及時發現和修正。
為解決這些問題,NestOS 采用基于 rpm-ostree 技術的操作系統封裝方案,實現原子化更新,避免中間狀態的存在,即使在升級過程中出現失敗也能快速回滾至上一個穩定狀態,保證系統的穩定性。在日常運行中,NestOS 采取安全措施保證系統穩定性,關鍵目錄設為只讀狀態,核心系統文件和配置不會被意外修改,通過 ignition 機制導入和固化重要的系統配置,確保配置的持久性和一致性。這使得操作系統能夠始終保持預期的狀態,減少意外錯誤。
NestOS 的核心思想類似于容器技術中的鏡像,旨在為操作系統層面打造不可變基礎設施。在部署時凍結了操作系統版本和配置,使其成為一個不可變的實體。這種做法有助于消除操作系統變體,確保基礎組件版本與配置的一致性,從而提供了一個穩定可靠的基礎設施環境。在集群中使用 NestOS 可以帶來更高的一致性和可靠性,簡化和高效地管理和維護操作系統。
可變基礎設施 vs 不可變基礎設施
然而,引入 NestOS 在原理上簡化集群運維工作的同時,也在實際落地中帶來了一些新的挑戰。例如,NestOS 作為一種新的操作系統形態需要運維人員熟悉理解其核心思想,接受任何改動均需在 CICD 流水線上重新構建系統鏡像而不是登入系統操作、操作系統變更需重新引導等與通用操作系統迥然不同的使用習慣,以便有效地管理和維護。此外,NestOS 與傳統操作系統存在差異,需要適應新的工具和技術,具體有如下幾個方面:
「系統鏡像構建工具鏈」:NestOS 一切業務相關的組件及配置變更均需重新構建新版系統鏡像,因此提供 NestOS-Assembler 編譯工具鏈,可以完成從構建配置到多種系統鏡像格式的生成,同時提供自動化測試工具,驗證鏡像基礎組件可靠性。
「環境相關動態配置文件」:NestOS 通過 ignition 機制在部署階段將與環境相關的動態配置(例如登錄憑據、網絡、外掛存儲等信息)注入,因此需要運維人員提前編寫配置文件,并通過 NestOS 提供的工具轉化為機器可讀的 ign 文件,供操作系統部署時使用。
「系統鏡像更新源」:NestOS 支持通過 rpm-ostree 直接下載當前版本樹的最新版本,但需要運維人員對系統鏡像更新源進行維護管理,相應也需要學習對應的部署工具。也可以通過容器鏡像的形式分發新版本系統鏡像,復用現有 CICD 資源,但將無法應用增量更新方式,每次更新均需下載完整系統鏡像。
「系統更新升級管理」:上述工具為系統更新做好了準備,但沒有解決何時可進行系統升級的問題。NestOS 雖提供了 zincati 組件實現基本的更新策略管理,但最佳實踐仍應當為結合操作系統當前運行業務狀態,在業務允許的時間窗口對節點執行更新維護操作。對于容器云場景,NestOS 提供基于 operator 機制實現的 housekeeper 服務,在對節點上運行的容器業務進行驅逐后再行升級,用戶也可基于此制定更為復雜的升級維護策略。
接納操作系統使用的新方式需要成熟案例與時間積淀,但引入的運維挑戰可以通過方便的運維工具去解決。在這一背景下,NestOS-kubernetes-Deployer 應運而生,旨在提供集群外的部署、更新和配置管理等服務,為運維人員提升 NestOS 運維體驗。
3. NKD 對容器云運維場景的助力
NKD 是面向 kubernetes 集群場景的解決方案,主要簡化集群部署和升級流程,具體如下:
「集群基礎設施創建」:NKD 根據集群需求,連接基礎設施提供商動態創建所需的 IaaS 資源,支持裸金屬和虛擬化場景,目前優先實現 openstack 場景。
「操作系統鏡像構建」:NestOS 提供完善的鏡像構建工具鏈,可以輕松集成到用戶現有 CICD 流程中,便于根據 openEuler 官方或用戶自定義軟件源快速構建定制鏡像。NKD 目前獲取鏡像構建結果,并將相應更新源配置應用到集群中,未來將支持 NKD 配置托管鏡像構建流程。
「動態配置注入」:在部署 NestOS 系統時,需要通過 ignition 點火機制傳入系統部署后所需的動態配置。NKD 目前提供工具形式,支持通過命令行參數或配置文件將用戶配置轉換為 ign 點火文件。最終目標是提供用戶友好的前端配置界面,便于輕松生成所需配置,并提供配置變更版本管理功能。
「kubernetes 集群部署」:這也是 NKD 的核心能力,將 k8s 集群部署所需配置自動合并到用戶配置生成的 ign 文件中,使得節點在部署完成操作系統引導后自動開始創建 k8s 集群,無需手動干預。
「集群狀態檢測與 housekeeper 部署」:NKD 持續檢測 k8s 集群狀態,一旦集群創建完成,向用戶提供訪問憑據,并部署 housekeeper 自定義資源,用于后續維護升級功能。用戶可選擇默認不部署該 CRD。
「操作系統或 k8s 基礎組件升級維護」:當操作系統或 k8s 基礎組件需要升級維護時,NKD 使用鏡像構建工具重新構建新版系統鏡像,并在查詢到新版鏡像后,向集群創建 housekeeper CR 資源。集群中的 housekeeper 服務按照配置逐次對集群節點進行升級,完成整個集群的升級工作。
通過以上整體方案,用戶可只通過 NKD 一鍵式完成集群創建和后續更新工作,而無需手動進行繁瑣步驟,簡化運維步驟。接下來我們對 NKD 架構及未來規劃作一個簡要介紹。
4. NKD 完整規劃
NKD 整體架構與集群交互全景
NKD 的整體架構由多個組件構成,主要包括 NKDS(NestOS-kubernetes-deployer-service)作為主體、部署到集群中的 HKO(housekeeper operator)以及集成在 NestOS 鏡像中的 installer。此外,還可以配合 NestOS 鏡像構建工具鏈、配置管理倉庫(如 git)和私有化部署的容器鏡像倉庫,共同完成集群運維任務。目前 NKDS 以命令行工具提供,暫不提供對外 http 接口和前端配置頁面,但主體功能所需的基礎設施管理、配置管理、系統鏡像管理、證書管理、健康檢測等模塊已初步形成。HKO 主要包括面向集群的 HKO 組件和集成在 NestOS 鏡像中的 HKD(housekeeper daemon)組件。目前 installer 組件負責在系統點火階段部署創建 K8S 集群,未來計劃將其功能融合到 HKD 組件中,使整體方案更加精簡,更易于用戶根據個性化需求管理所需的 K8S 基礎組件。
NKD 的最終目標是以長期駐留服務形式提供運維服務,同時支持多個集群的管理。它將提供持久化配置變更記錄、證書管理、多種更新升級策略和鏡像源頻道等功能。未來,我們將持續優化 NKD 的功能和性能,并引入更多智能化特性,如自動化故障處理和資源優化等。我們的目標是將 NKD 打造成 NestOS 生態中的核心組件,為云原生場景下的運維工作提供全方位支持,進一步推動云原生技術的發展和應用。
5. 總結
NestOS 作為專為云原生場景設計的操作系統,為容器云運維帶來了巨大的助力,而 NKD 則是針對 NestOS 運維中新引入的問題所提供的解決方案。通過持續優化和創新,NKD 將使業界更易接受以 NestOS 為代表的不可變基礎設施,同時隨著 Kubernetes 社區的發展,更多創新解決方案將推動云原生技術向更成熟和可持續的未來發展。
審核編輯:湯梓紅
-
操作系統
+關注
關注
37文章
6492瀏覽量
122614 -
容器
+關注
關注
0文章
485瀏覽量
21965 -
云原生
+關注
關注
0文章
233瀏覽量
7915 -
openEuler
+關注
關注
2文章
297瀏覽量
5767
原文標題:NKD:容器云集群與 OS 一體化運維利器
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論