標籤:

RancherOS架構分析

最近開始在我們的平台上支持RancherOS,本文對RancherOS的系統架構進行一個分析。

RancherOS公司主頁在這裡:Container Management and Deployment,

開源項目在這裡:github.com/rancher/os

項目和Docker一樣,都是golang的。版權是Apache License。

本文的分析基於RancherOS 1.0.2,其使用的Linux內核是4.9.30,從源代碼上沒有patch這一點來快速猜,這個內核應該沒有經過特別定製。

RancherOS是一個基於Docker的Linux的發行版。簡單說,它的init進程(1號進程)就是一個Docker Container(稱為System Docker),這個Container被精簡到僅僅可以用來運行其他Docker Container(稱為User Docker),剩下的事情就不用我解釋了,有了Docker以後你可以幹什麼就不需要我解釋了。

RancherOS的System Docker只有60M,以busybox+uclibc為基礎構建,可以構建成一個ios文件從光碟或者USB Key啟動,啟動後可以快速通過ros命令寫入磁碟,從而完成安裝,安裝時間只有一兩分鐘。

RancherOS的維護理念是:光碟啟動的時候免密碼進入Rancher用戶,通過ros命令安裝的時候提供ssh pub key(相當於提供了rancher用戶的authrorized_keys)。完成安裝後,僅可以通過ssh進入。之後你獲得管理員的許可權,通過每個獨立的Docker使用獨立的功能

從這裡可以看出,RancherOS的定位是「遠程伺服器」,特別是「雲伺服器」。無論是Barematal的還是基於虛擬機的。

RancherOS並不複雜,但它代表了一個非常重要的技術趨勢,就是「操作系統固件化」。

「發行版」的競爭力在什麼地方?我認為如下:

1. 背鍋和基於背鍋的支持

2. 廣泛的硬體兼容性

3. 廣泛的軟體集成

我認為,現在這個時世,為第三點付錢的人少,大部分都是為了前兩者。前者在硬體多樣化和白牌化的時代,不拉上硬體提供商一起,光發行版背的鍋越來越難找人接受了。你說你的網卡丟包了,你找某個發行版來背鍋,它賠你幾萬塊錢了不起了,要解決問題不找網卡提供商這個事情沒法弄。

而廣泛的硬體兼容性這點也受到一樣的衝擊,比如你要弄一個200個節點的數據中心,使用幾乎一樣的硬體平台,某個發行版對10種DIMM條,20種PCIE Extender,30種磁碟,100種網卡做過兼容性測試,這個有多大意義?過幾年你真要大規模升級你的軟體的時候,你的硬體也該淘汰了。

而RancherOS這樣的解決方案,意味著伺服器出廠的時候,直接帶一個高級「固件」,連著Kernel和基礎的維護命令一次提供,這個基礎固件升級就整體升級,測試也從這裡提供,安全保證等也直接從這個提供,很多安全措施也可以直接和硬體設計結合。使用者僅基於Container來使用設備的計算,通訊和存儲能力。這種局面,可能會對現有的發行版模型產生巨大的衝擊。

推薦閱讀:

第一本電子書:《Linux Perf Master》
每個開發人員應該知道的 10 個 Linux 命令
從前有座山,山裡有座廟,廟裡有個 LinuxKit - 在容器中運行容器

TAG:Linux |