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

淺析機(jī)電一體化的發(fā)展趨勢(shì)
Altium--機(jī)電一體化?
【云智易申請(qǐng)】一體化機(jī)柜監(jiān)控設(shè)計(jì)
普及從跑腿到云一體化IT運(yùn)維管理的常識(shí)
什么是機(jī)電一體化
機(jī)電一體化系統(tǒng)
如何實(shí)現(xiàn)機(jī)電一體化設(shè)計(jì)?
一體化伺服電機(jī)如何保存當(dāng)前參數(shù)
機(jī)電一體化綜合實(shí)訓(xùn)考核
Proteus是如何一體化安裝的
測(cè)控一體化閘門(mén)系統(tǒng)
H3CU-CENTER一體化運(yùn)維管理平臺(tái)的特點(diǎn)及功能應(yīng)用
光伏、儲(chǔ)能一體化監(jiān)控及運(yùn)維解決方案

水肥一體化設(shè)備運(yùn)維管理平臺(tái)有什么功能 ?

評(píng)論