1. 程式人生 > >3類6種,主流容器作業系統全比較

3類6種,主流容器作業系統全比較

5月8日 晚20:30,Kubernetes Master Class線上培訓第五期《Kubernetes中的日誌、監控與告警》即將開播,點選連結:http://live.vhall.com/317569561 即可免費預約註冊!

介 紹

容器已迅速成為現代資料中心的必要組成部分。容器可以構建在各類作業系統中,那麼企業該如何選擇最合適的作業系統來執行自己的容器?

在容器部署時,研發的負責人需要知道作業系統的哪些特性和功能對於正在釋出的應用程式至關重要,以及是否存在需要額外考慮的其他因素(如可管理性和配置靈活性),不同企業的情況與需求不同,選擇自然也不盡相同。

不同的作業系統,如何在特性和基本功能方面進行比較?這些差異如何影響它們支援應用程式的方式?這些都是我們必須考量的重要問題。本文中我們將比較三類具有代表性的作業系統:

  • 傳統的全功能作業系統

  • 通用的精簡作業系統

  • 專用於容器的作業系統

在每個類別中,我們都會選擇兩個代表性的產品,這些產品能代表這一大類中的其他全產品或發行版。

通過本文,大家將能更清楚地瞭解不同作業系統型別之間的差異。IT負責人們也將更好地瞭解到,為什麼開發人員可以為容器化應用程式選擇一個作業系統而不是另一個,以及為什麼他們可能支援或質疑這些選擇。

全功能作業系統

“全功能作業系統”是什麼意思?為什麼在容器部署的情況下,完整功能會很重要?本節將介紹為什麼在傳統伺服器部署中使用的作業系統,也可能是為容器平臺選擇作業系統時的最佳答案。

首先要知道的是,這類作業系統的功能無疑是最齊全的。如果某個應用程式需要某個特定的特性或功能,全功能作業系統或許都能滿足它。不過這種“齊全”也是有一定代價的:在儲存、記憶體和CPU資源方面,這類作業系統對系統的要求最高。同時,這些功能還會增加作業系統的攻擊面,為潛在的攻擊者提供更多的角落和縫隙進行攻擊。不論是價格成本還是安全風險,如果作業系統的這些功能都是應用程式需要的,那麼這些成本也就很容易承擔了;但如果只需要少量功能,相較之下價效比就略低。

這些功能齊全的作業系統,最適合的用例,是企業需要在單個OS例項之上的容器中部署多個不同應用程式。在這些情況下,作業系統的功能的多而全,可能是支援應用程式佇列的最經濟的方式。

  • Ubuntu

Ubuntu已經成為許多企業在伺服器、雲甚至桌面上的預設作業系統。Canonical公司為Ubuntu提供了非常好的支援,Ubuntu提供各種可下載格式,包括支援物聯網、容器、伺服器或雲的部署所需的實用程式包、shell、功能和功能集。

如今,Ubuntu已經開始瓜分曾經由Red Hat Linux一家獨大的領域:Ubuntu一貫良好的聲譽和企業級的支援,使得對於企業部署而言,它成為了一個穩妥的、“合理的”選擇。不過,大家仍需記住的、很重要的一點是,不論在什麼情況下,“合理的”都不意味著一定是“最好的”——它的功能齊全也意味著它的龐大,企業需要思考這種重與大是否適合自己。

  • CentOS

在全功能作業系統這一大類中,Ubuntu已經成為企業的一大主流選擇,除此之外,CentOS則是另一個流行的、由社群驅動的開源作業系統,它是由Red Hat Enterprise Linux依照開放原始碼規定釋出的原始碼所編譯而成。

CentOS強調社群對特性和功能的貢獻及支援,同時仍然建立在其Red Hat基礎的穩定性上。開源不意味著CentOS不被大型組織使用——美國國家實驗室和幾大主流雲提供商的伺服器上都用著CentOS。但是Ubuntu自稱擁有比CentOS更快速的更新,其中包括那些更老、但經過良好測試的軟體包。

精簡的作業系統

容器,儘可能地將少而精的功能彙集在一起,建立完整的應用程式。那麼,這類精簡的作業系統缺少“完整”Linux發行版中的哪些功能——這對您的應用程式是否重要?從另一視角來看,將應用程式部署在那些將功能剝離到極限的精簡作業系統上,優勢是什麼?

問題的答案在於,你的應用程式究竟對作業系統有什麼要求,而精簡的作業系統是否能滿足這些基礎要求。如果沒有周全的準備,在使用過程中還需要人為新增應用程式所需的各種功能和小程式,那選擇這類精簡作業系統可以說是失敗的,因為它在大小和簡單性方面的優勢所剩無幾。

本章節將介紹兩個發行版,BusyBox和Alpine Linux,以及它們在適當的環境中可以帶來的優勢。這兩個作業系統是相關的——Alpine是基於BusyBox的,但是二者也存在一些關鍵的差異,使使用者會在這二者之間做出不同選擇。這些差異不僅涉及具體功能及特性,還涉及支援社群和生態系統。

  • BusyBox

BusyBox很適合容器部署,恰巧因為它在設計時沒有刻意考慮容器。BusyBox被其開發人員稱為“嵌入式Linux的瑞士軍刀”,它作為一個單一的小型可執行檔案,包含大多數嵌入式應用程式所需的所有功能。這也“迫使”它在容器技術出現之前,就可以開始採用類似容器的方法進行部署了。

BusyBox可以使用Linux或其他POSIX作業系統作為其基礎進行部署,並將它們與許多常見的Linux實用程式捆綁在一起。如此一來,它成為了一個緊湊的單檔案可執行檔案,其中包含“完整”Linux發行版的許多功能——儘管這些完整版本中的不少其他功能選項,都以節省空間的名義,被從BusyBox中刪除了。

  • Alpine Linux

如前所述,Alpine Linux基於BusyBox,但不論是目標還是細節,它都建立在更早期的Linux發行版上。BusyBox是因為是單一可執行檔案而體積很小, 而Alpine Linux則是使用強化的核心,為其前身BusyBox的緊湊、簡單的目標增加安全性。

相較於BusyBox,Alpine Linux能讓開發人員更容易新增功能。它的發行版基於BusyBox和musl庫之上,因此在新增功能的方便性或結構緊湊度的這些維度上,Alpine Linux一枝獨秀。

Alpine Linux這是一個極限精簡的作業系統,能夠生成非常小的容器映象以進行部署,而且加固的核心使其更適用於生產以及開發、部署。

容器作業系統

容器作業系統開箱即用,擁有內建的自動化和容器編排工具。它們被設計和構建為“主機”作業系統——託管Alpine和BusyBox等容器作業系統的作業系統。既然如此,為什麼它們不是每個容器部署的自動選擇呢?

容器作業系統的特徵在於,它不僅僅是一個支援容器的軟體,而是使用容器技術部署的軟體。“容器一直向下”的體系結構意味部署的自定義程式更高、更靈活,從而比傳統的OS部署複雜得多。另一方面,對於早期轉向容器的組織,或者對於那些不一定適合容器架構的應用程式部署中,“全容器”架構並非那麼容易。

對於那些尋找容器作業系統的企業而言,Rancher OS和Container Linux是兩個主流的選擇。本章節將介紹它們各自的優勢,幫助開發人員根據自身情況做進一步選擇。

  • RancherOS

RancherOS中的每個程序都在Docker管理的單獨容器中執行。對Docker的優化和依賴讓RancherOS可以做到體積極小、啟動極快。

除了基本的效能優勢之外,RancherOS系統服務由Docker Compose定義和配置。這種依賴意味著只加載和部署應用程式所需的服務,從而進一步加速和簡化部署。通過與cloud-init整合,再次簡化了部署,從而實現了廣泛和高速的自動配置和部署。

  • Container Linux

CoreOS的Container Linux專為基於雲的容器部署而設計。Container Linux已被Red Hat收購,針對公有云或私有云基礎架構的叢集部署進行了優化。

Container Linux和核心以及必要的實用程式一起,部署在單個可執行檔案中,其他的實用程式和功能都部署在容器中。

Container Linux長期以來一直被廣泛使用,可以在大多數公有云上部署。被Red Hat收購併沒有減緩它的採用速度。Container Linux與開源許可一起分發,並擁有一個活躍的開發人員社群。

結 語

三大類可用於容器部署作業系統,開發團隊應該選擇哪種?

如果某個特定伺服器的唯一目的是託管容器,那麼像RancherOS和Container Linux這樣的容器作業系統非常適合。這類作業系統的自動化、部署速度和一致的容器架構,使其成為那些希望優化容器託管環境的人的最佳選擇。

如果要同時考慮容器和非容器應用程式,那麼毫無疑問,像Ubuntu和CentOS這樣的傳統Linux部署也可以用作容器平臺。它們的體系結構、實用程式、功能列表將使它們啟動速度變慢並且需要更多系統資源,但如果啟動速度和最小資源消耗不是關鍵考慮因素,那麼這類作業系統是不錯的選擇。

還值得關注的是位於上述二者之間的BusyBox和Alpine Linux這樣的極精簡作業系統。單從容器部署的角度出發,這類作業系統可以滿足需求;不過如果企業存在資源受限的非容器應用程式(例如物聯網的應用程式),這些應用程式也應該作為整個應用程式環境的一部分被考慮進來。

瞭解不同型別作業系統的功能和限制之間的差異,對於任何用於生產的OS平臺的討論都至關重要。使用現代作業系統,真正的考量不應該滿足於哪個作業系統可以工作,而是需要圍繞哪個作業系統能最有效和最高