只需 6 步,你就可以搭建一個雲原生作業系統原型
編者按:過去的三年對基礎軟體領域來說是不平凡的三年,是波濤洶湧的三年。隨著國際形勢和行業格局的變化,大家一定充分感受到了雲原生和作業系統這兩個話題的熱度。那麼當雲原生和作業系統這兩個熱點話題相遇的時候,會發生什麼故事?本文整理自 2022 年阿里巴巴開源開放周技術演講,讓作者帶我們走進這場技術盛宴。
本次的分享主題圍繞三個方面展開:
首先簡要介紹一下 龍蜥雲原生 SIG(Special Interest Group) 的前世今生。我們為什麼要成立雲原生 SIG?想解決什麼樣的問題?它如何解決這些問題?接下來進一步分享如何基於開源社群和組織,從頭開始一步一步構建一個雲原生作業系統的原型。最後介紹雲原生 SIG 的運作機制,並誠摯地邀請大家一起來參與龍蜥雲原生 SIG 的建設。
一、龍蜥社群雲原生 SIG
回頭看我在作業系統和雲原生兩個領域的一些經歷是非常有意義的,因為它可以讓我從不同的視角來看這兩個領域的發展。基於我在作業系統和雲原生領域的職業經歷,最近我開始思考雲原生和作業系統是什麼關係?應該如何推動這兩個領域的共同發展?所以我協同行業的合作伙伴一起推動成立了龍蜥雲原生 SIG,為研發一套龍蜥雲原生作業系統做準備。上面提到了龍蜥雲原生作業系統,那麼大家可能會好奇,什麼是雲原生?雲原生和作業系統有什麼關係?我們如何才能構建一個雲原生作業系統?
雲原生就是充分利用雲基礎設施來開發軟體應用的一種模式,也就是站在巨人的肩膀上,充分利用成熟穩定的雲基礎設施來開發、釋出、執行和維護一個應用,以保障我們應用的彈性、效能、容器、成本等諸多方面的訴求。
(圖/龍蜥雲原生系統架構)
如上圖所示,是一個典型的雲原生系統的架構,其包含四個部分:
第一個最底下的是雲原生的基礎設施。它提供諸如虛擬機器、伺服器等諸多的物理資源,以及告警、日誌等諸多的服務。
第二在這之上龍蜥會構建一套雲原生管控。雲原生管控者主要提供定義雲原生應用的機制,以及為雲原生應用服務的一些通用框架,比如說 service mesh 等類似的服務框架。當然,雲原生管控系統裡面最核心的則是雲原生編排系統,它負責感知底層的資源,排程底層的資源來服務於雲原生應用,最後它會把雲原生應用排程到一個具體的雲原生節點上來執行。
第三個系統則是雲原生節點系統。它功能看起來很簡單,只需要負責高效地執行被排程到本節點的雲原生應用,但其實這個任務並不簡單。
第四個最上層則是雲原生應用。這層負責實現使用者的業務邏輯和交付商業服務。
上面提到:簡單的節點系統其實並不簡單,它也面臨諸多的挑戰。為什麼?因為從最開始的無狀態應用到現在的大資料、AI、資料庫等各種嚴肅應用的雲原生化,業務對雲原生節點系統提出了嚴苛的訴求。比如如何保證我們節點的資源利用率?如何保證雲原生應用的 QoS?如何隔離多個應用之間的故障?以及保障各個應用的資料安全?
這些挑戰都是雲原生節點系統需要去面對和解決的問題。
上面提到雲原生節點系統面臨諸多的技術挑戰,可能大家也意識到了這些挑戰恰恰是作業系統所擅長的領域,因此我們自然而然地就誕生了一個這樣的想法,那就是需要為雲原生節點系統打造一套方便、易用、完善的雲原生作業系統。那麼如何來打造這個系統?
基於以上思考,我們成立了龍蜥雲原生 SIG。龍蜥雲原生 SIG 有三個核心的定位,就是橋樑、元件以及系統。
首先,龍蜥雲原生 SIG 是一個橋樑,或者說是大家坐在一起聊天的地方,讓我們一起來交流使用者的需求、業務所面臨的挑戰,以及我們會邀請上游技術社群的核心開發人員來參與這個過程,看看上游社群能為我們的應用、業務提供什麼樣的幫助,提供什麼樣的解決方案。
另外一個方面,雲原生 SIG 也會負責拉通龍蜥社群內部的其他相關的技術 SIG。比如會協同機密容器 SIG、高效能儲存 SIG、容器網路 SIG 以及容器 OS SIG,大家共同來打造一套易用的雲原生作業系統。
當然,雲原生 SIG 的具體交付件則是穩定好用的雲原生元件和系統。
二、從零開始構建雲原生 OS
接下來我會和大家一起基於開源社群和開源元件,從頭開始構建一個雲原生作業系統的原型。
第一步,我們需要量體裁衣,為雲原生應用構建一個容器最佳化的 OS。當然,為了方便大家,也可以利用現有的作業系統來支援雲原生的應用,但是我們會面臨諸如作業系統體積特別龐大,安裝運維特別耗時等問題。隨著這個系統的執行越來越長,整個系統當中的作業系統的版本越來越零散,版本越來越多,我們還會面臨系統維護困難的問題。更重要的是,由於傳統的作業系統裡面內建的軟體比較多,從而也導致了比較大的安全風險敞口。隨著雲原生應用的普及以及應用佔比的日益提升,我們值得為雲原生應用打造一套專用的作業系統。
基於這樣的考量,雲原生 SIG 利用安全的 rust 語言從頭開發了一套全新的為容器最佳化的作業系統,我們稱之為 Lifsea OS。Lifsea OS 會內建很多雲原生所需要的元件,從而免去使用者自己選擇安裝、配置各個雲原生元件的煩惱。同時這些元件都會以只讀的方式安裝使用,從而避免了在執行過程當中被惡意軟體篡改的風險。
另外為了簡化大家運維大規模叢集的煩惱,Lifsea OS 提供了基於 API 的運維管控的介面,也就是說也可以以程式設計的方式來運維整個系統中的節點。當然,這樣一個系統看起來是深度定製化的,但是龍蜥也提供了非常強大的定製化能力。比如說使用者可以根據自己的業務需求往 Lifsea OS 系統當中新增必要的元件,修改相應的配置,從而讓我們這個作業系統能夠真正的適應各個使用者場景的需求。
第二步在作業系統之上,我們需要一個能夠執行容器的執行時。傳統上,雲原生和容器有非常強的關係,也就是說雲原生是透過容器催生出來的。Linux 作業系統透過提供 cgroup 、namespace 等機制,支援了原生的 RunC 容器。這樣的容器執行時擁有資源利用效率高、使用方便、彈效能力強等諸多優勢。
隨著大資料、AI、資料庫等重 IO 應用的雲原生化,傳統 Linux 雲原生容器的不足便逐步暴露出來。比如安全隔離能力不夠、應用之間相互產生效能干擾。基於這樣的考慮,我們研發了基於硬體虛擬化的安全容器,安全容器最核心的能力是提供單向的保護能力,它能保護基礎設施不受雲原生應用的干擾,同時提供安全故障配置和效能方面的隔離能力。
在安全容器之上,我們進一步研發了機密容器。機密容器相對於安全容器有一個巨大的進步,也就是它把單向保護演進成了雙向保護,不但保護基礎設施不受應用容器的干擾,同時也保護應用不受基礎設施的干擾。因為我們知道資料是使用者最核心的資產,使用者把資料搬上雲以後,如何能保護我們的核心資產?機密容器為我們提供了非常好的解決方案。基於硬體的資料保護機制,我們可以保證,使用者的資料對於基礎設施來說是透明的,基礎設施是沒法看見使用者的資料的,從而保障使用者資料的安全性和隱私性。
可能當大家看見這三種雲原生執行的時候,一定會擔心,我的這個系統怎麼整合了這麼多執行時,使用起來得多麻煩呀?這裡有個好訊息分享給大家,你完全不用擔心多個容器執行時的使用和運維問題。因為我們基於 containerd 打造了一套統一的管控運維介面,讓大家可以根據業務需求任意的選擇需要的容器執行時,比如我需要資源高效利用,那我就選擇原生的容器;我希望實現多種保護,那可以選擇安全容器;我需要保護我的金融資料,那我可以選擇機密容器。這些都只需要透過一個簡單的修改容器配置就可以實現。
當我們擁有了一個作業系統和雲原生執行時之後,我們是不是就可以很平滑的把應用雲原生化了,答案:還不是。第三步就是豐富多姿的雲原生儲存技術方案。
當我們真正的把一些應用遷移到雲原生之上,特別是遷移到安全容器和機密容器之後,會發現儲存的效能成為一個非常巨大的挑戰。我們如何解決這些挑戰?繼續為大家帶來一個好訊息,雲原生為我們提供了對資料分類的機制。因為雲原生顯示的把使用者的資料分成了只讀資料、臨時資料以及是我的使用者業務需要持久化的資料。根據使用者訪問資料的不同模式,我們可以提供不同的技術解決方案。比如針對只讀資料,龍蜥雲原生 SIG 提供了一套非常完善的方案。從我們基於virtiofs 、Nydus 和 EROFS 核心檔案系統,打造了一套能同時支援雲原生容器、安全容器和機密容器的儲存方案,從而實現高效的儲存效能。
但是對於使用者的業務資料,我們如何提升效能?龍蜥雲原生 SIG 也為大家提供了一個叫做 Fluid 的資料編排元件,它可以根據使用者使用資料的方式顯示的定義資料集,再使用不同技術方案來最佳化不同的資料集。比如說對於只讀的使用者資料,我們可以用剛才提到的 Nydus 、EROFS 或者 Fluid 類似的技術方案來提升效能。
對於可寫的使用者資料,可以利用阿里的 JindoFS、英特爾的 SPDK 等技術來提升可寫資料的效能。
當我們擁有了執行時和儲存解決範疇,下一步我們則需要面對最複雜的容器網路互聯互通的問題。這兒還在繼續探索中,因為這個領域是相對複雜度非常高。
大家知道在混合雲這樣的條件下面,我們會面臨千變萬化的網路環境。如何為這些網路環境提供一套雲延伸網路方案?如何實現 IaaS 和 PaaS 的網路互通?如何讓我們的底層網路基礎設施能滿足高速建立、銷燬雲原生應用的訴求?這些都是我們目前面臨的挑戰。我們還在和社群夥伴們一起來定義這些問題,並尋求相應的技術解決方案。
非常歡迎大家一起來參與龍蜥雲原生 SIG 網路相關的技術的研討以及建設。
我們現在擁有了一個完善的計算儲存網路的雲原生系統,如何才能利用起來?下一步我們需要一個 ACNS(Anolis Cloud-Native Suite),龍蜥雲原生套件。
龍蜥雲原生 SIG 基於阿里的 ACK 系統,開源了一套叫做 ACK Distro 的 ACNS(Anolis Cloud-Native Suite),龍蜥雲原生套件。基於這樣的龍蜥雲原生套件,可以很方便的把你的應用搬遷上來,因為這個版本是經過阿里雲的生產驗證的,而且我們會在生產版本和開源版本之間保持足夠的同步,讓大家能儘早的使用到最新的 k8s 技術,所以有了龍蜥雲原生套件之後,大家就可以很方便的利用雲原生技術來實施部署自己的雲原生應用。
但是下一步我們會發現,即使我們把我們的應用雲原生化了,我們的節點的資源利用率還是不夠高,那怎麼辦?
不同的應用對資源的訴求不一樣。有的需要很多的 CPU 計算能力,有的需要很大的 IO 頻寬、有的需要及時響應。我們可以把這些應用透過技術手段混合部署到一個節點上,從而充分利用這個節點上的各種資源,這就是我們所謂的混部系統。
在 2022 年年初,阿里雲開源了 Koordinator 的業務混部編排系統,它核心是增強 k8s 的排程系統來支援業務的分佈。這也是我們基於阿里系統多年的生產經驗所研發出來的一套系統,現在分享給大家。再進一步,當我們能從軟體層面來進行業務分佈以後,我們會發現再從硬體層面來看,使用資源還是不夠高。這裡英特爾提供的基於硬體層面的最佳化排程元件,叫做 CRI Resource Manager,也就是說,可以根據業務的特徵和硬體的配置情況來深度最佳化業務排程能力。
最後一步,當我們擁有了這樣的一套系統,我們如何才能把它安裝部署起來?
設想一下,當我們面臨一千臺虛擬機器的叢集需要部署一個雲原生系統的時候,我們該怎麼做?難道我們需要一臺一臺地安裝各種軟體嗎?不,你不需要那樣做。龍蜥社群為你提供了 sealer 一鍵式叢集打包分發系統。也就是說你可以為整個叢集製作一個映象,再把這一個叢集映象分發到一千臺機器上。下一步,當我需要分發的節點,很多軟體包的分發可能就成為我一個非常大的挑戰。我們也提供了 Dragonfly P2P 的檔案分發系統。這樣一個P2P 分發系統,它可以用於分發軟體包、軟體庫、容器映象作業系統、AI模型資料等。從我們實際生產經驗來看,P2P 能大幅提升雲原生系統的資料分發能力。
以上介紹了龍蜥作業系統對雲原生應用的支援。那麼雲原生技術對作業系統有什麼影響嗎?答案肯定是的。
因為作業系統本身也是一種軟體,我們用分發雲延伸軟體的方式來分發作業系統,這種方式也給我們帶來了非常大的想象力。比如我們可以用核心 EROFS 檔案系統和 FsCache 系統來實現作業系統資料的按需載入,或者我們可以基於 Nydus 來定義新型的軟體包格式。我們也可以利用管理容器映象的技術來管理作業系統映象,從而提升易用性和安全性。
總之,雲原生的技術從另外一個方面也可以反向推動作業系統自身的演進。從而實現雲原生和作業系統的協同發展、共同進步、共同演進。
三、龍蜥雲原生 SIG 的運作機制
最後我們來一起聊聊龍蜥雲原生 SIG 的運作機制。
經過以上介紹的 6 大步,和大家一起從頭開始搭建了一個雲原生作業系統的原型。當然大家也知道這個原型還是很粗糙的,還有很多等待大家一起來建設。如果我對雲原生 SIG 很感興趣,我如何才能參與進來?很簡單,龍蜥雲原生 SIG 的核心運作機制是圓桌會議機制。也就是說只要你對社群感興趣,對任何一個話題、任何一個技術或者任何一個使用場景感興趣,你就可以參與到 SIG,大家一起來交流探討我們所面臨的問題、我們可能的技術解決方案以及我們的研發進展,同時龍蜥雲原生 SIG 也會秉承堅持橋樑的定位。因為龍蜥雲原生 SIG 擁有很多上游社群的核心開發者,只要大家參與到這個社群來,我們一定能在上游和使用者之間搭建一條非常通暢的橋樑,讓大家一起來推動雲原生底層系統的發展。最後再次誠摯邀請大家來參與龍蜥雲原生 SIG 的建設工作。
相關連結可移步龍蜥公眾號(OpenAnolis龍蜥)2022年9月14日相同推送檢視。
—— 完 ——
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2914856/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 搭建推薦系統快速入門,只需五步!
- 買了個雲伺服器怎麼使用?只需三步驟就可以建站伺服器
- 自制作業系統(一) 第一個作業系統作業系統
- 我花了一個星期,做出了公司的管理系統,只需幾個步驟!
- 只需看一眼,伯克利最新機器人就可以copy你的動作!機器人
- 雲原生很簡單,你只需要知道:
- 只需6步,教你從零開發一個簽到小程式
- 作業系統(一):作業系統概述作業系統
- 一文帶你吃透作業系統作業系統
- 作業系統-1.1_2作業系統四個特徵作業系統特徵
- leapftp教程,掌握leapftp教程只需6步FTP
- 作業系統(一)作業系統歷史:從標準函式庫到雲端計算作業系統函式
- 定義雲時代的作業系統,《2022 雲原生產業發展白皮書》正式釋出!作業系統產業
- 雲原生時代下,作業系統生態的挑戰與機遇作業系統
- 【一】作業系統原理作業系統
- 只需9步教你搭建自己的個人部落格 (Hexo+Github)HexoGithub
- KubeCon 2020 阿里雲推出四大企業級容器新品 ,詳解雲原生作業系統進化阿里作業系統
- .NET 生態系統的蛻變之 .NET 6雲原生
- K8S控制器理解-摘錄自《雲原生作業系統Kubernetes》K8S作業系統
- 作業系統(1)——作業系統概述作業系統
- [譯] 只需7步,自由開發者就可以獲得更多的客戶!
- 天翼雲全場景業務無縫替換至國產原生作業系統CTyunOS!作業系統
- iNeuOS雲作業系統,.NET Core全系打造作業系統
- 搭建高效雲的七個步驟
- 寫作業系統之搭建開發環境作業系統開發環境
- 作業系統(二):作業系統結構作業系統
- 雲原生的進一步具象化
- RHEL 6以上作業系統Yum提示This system is not registered作業系統
- 搭建CRM系統的步驟
- 作業系統 作業5作業系統
- 跟大神一起製作一個屬於自己的Linux作業系統!Linux作業系統
- 為媒體資產構建一個雲原生的檔案系統
- 如何提交一個PR?完成這 6 點就可以了
- 解密《一個作業系統的實現》這本書解密作業系統
- 製作一個報警系統
- 作業系統2—作業系統概論(下)作業系統
- 作業系統1—作業系統概論(上)作業系統
- 02323作業系統概論 第一章 作業系統簡介作業系統