通用操作系統(tǒng)已窮途末路?
最近我在Twitter上看到了一則饒有意思的聊天,不由得想起了可能不是每個人都意識到這一點(diǎn):通用操作系統(tǒng)正從我們的服務(wù)器上被擠掉。
你所說的通用是啥意思?窮途末路又是啥意思?
首先,有必要澄清一下。我所說的通用操作系統(tǒng)是指大多數(shù)人如今用于運(yùn)行服務(wù)器工作負(fù)載的操作系統(tǒng),無論是RHEL、變種版本(比如CentOS或 Fedora或Debian),還是衍生版本(比如Ubuntu)。我們還包括Arch、各種BSD 和opensolaris版本以及Windows。 我所說的窮途末路其實(shí)不是說它們消亡或不再有用。我的假設(shè)是,它們不再成為我們啟動新服務(wù)時使用的默認(rèn)操作系統(tǒng),最初很緩慢,后來比較快。
容器的虛擬機(jī)管理程序
本文的***個部分包括討論我所說的容器的虛擬機(jī)管理程序,如今它們更可能被稱為CaaS,也就是容器即服務(wù)。我甚至猜測,VMWare將不得不在這個領(lǐng)域交付某種產(chǎn)品(看看vSphere Integrated Containers和Photon OS方面的工作);把OpenShift排除在外也許為時過早(OpenShift 3主要是作為一種Kubernetes發(fā)行版而交付的)。我很快會回過頭來解釋為何這對你鐘愛的Debian服務(wù)器構(gòu)成威脅。
競相成為PID1
對任何運(yùn)行過Docker的來說,你可能為這個問題而糾結(jié):主機(jī)進(jìn)程監(jiān)管工具(可能是systemd)的角色始于何處,容器進(jìn)程監(jiān)管工具(Docker引擎)又終于何處?你非得與兩者都要直接交互嗎?
現(xiàn)在設(shè)想一下:你服務(wù)器上的所有軟件都在容器里面運(yùn)行。為何現(xiàn)在我需要兩個***重疊的進(jìn)程監(jiān)管工具?明顯的答案是不需要,這就是為什么Docker與systemd之爭不可避免。請注意:這也不是Docker所特有的。對cri-o(https://github.com/kubernetes- incubator/cri-o)來說,容器進(jìn)程生命周期管理是其范圍內(nèi)的職責(zé)。
容器成為軟件單位
隱藏在我那個假設(shè)背后未說明的是,容器成為了軟件的單位。我這里的意思是說,我們構(gòu)建或購買的軟件將日益作為容器來發(fā)布、作為容器來運(yùn)行。容器將隨帶足夠多的元數(shù)據(jù),以便運(yùn)行時環(huán)境能確定需要什么資源來運(yùn)行容器。
別低估了來自這種共享契約的簡化性假設(shè)的數(shù)量。至少,在主機(jī)層面,你可能需要大量的近乎相同的主機(jī),它們都向容器調(diào)度程序公共其功能。
操作系統(tǒng)的實(shí)施細(xì)節(jié)
我們在這個市場親眼目睹了縱向集成的堆棧(vertically integrated stack)大行其道。
- Docker for Mac/Windows/AWS/Azure交付時隨帶自己的操作系統(tǒng),這種Alpine Linux衍生版名為Moby,它并不是為最終用戶直接管理而設(shè)計(jì)的。
- 來自CoreOS的Tectonic是一款Kubernetes發(fā)行版,它在受管理的CoreOS主機(jī)集群上運(yùn)行。操作系統(tǒng)的大部分由頻繁的原子滾動更新版來加以管理。
- 來自Red Hat的OpenShift Enterprise是另一種Kubernetes衍生版,這回它是在Atomic主機(jī)上運(yùn)行。
- Pivotal CloudFoundry交付時隨帶IaaS、主機(jī)操作系統(tǒng)、內(nèi)核、文件系統(tǒng)和容器操作系統(tǒng),它們都共同經(jīng)過了測試。
在所有上述情況下,操作系統(tǒng)是更高級軟件的一個實(shí)施細(xì)節(jié)。它不是旨在直接管理,或者至少不是與你如今運(yùn)行的通用操作系統(tǒng)同樣的程度加以管理。
這就是為什么說,對運(yùn)行服務(wù)器的大多數(shù)通用操作系統(tǒng)而言,它們已窮途末路。運(yùn)行容器的機(jī)器會運(yùn)行更單一用途的工作負(fù)載,你運(yùn)行的軟件越來越多地會在容器里面運(yùn)行。
你之所以會這么做,而不是自行構(gòu)建一切軟件,原因在于兼容性。無論是內(nèi)核版本、文件系統(tǒng)驅(qū)動程序、操作系統(tǒng)變量,還是讓你的操作系統(tǒng)版本與我的操作系統(tǒng)版本不一樣的眾多變化因素,構(gòu)建和測試在各個地方都可以運(yùn)行的軟件是一項(xiàng)艱巨而無盡頭的任務(wù)。商業(yè)因素在這方面也起到了作用;畢竟,能夠?yàn)樗腥酥С纸?jīng)過驗(yàn)證的單一產(chǎn)品有莫大的優(yōu)點(diǎn)。
帶來的影響
此舉帶來了許多影響,看看它對早期采用者和企業(yè)客戶來說有何影響頗有意思。
- 這對企業(yè)操作系統(tǒng)政策來說意味著什么?
- 基于代理的標(biāo)準(zhǔn)監(jiān)控系統(tǒng)在封閉式垂直堆棧環(huán)境下如何運(yùn)行?
- 我們會看到AWS市場上的其他類型的服務(wù)出現(xiàn)這種模式嗎?在AWS市場上,啟動的實(shí)例無法訪問,但是自動更新。
- 這種行動快速的軟件在變更控制流程僵硬或需要審計(jì)的環(huán)境下如何運(yùn)行?
- 許多大企業(yè)最終會運(yùn)行不止這一種類型的系統(tǒng),如何才能最有效地管理這種異構(gòu)環(huán)境?
- 我們會看到來自一些有關(guān)方的反對和阻力嗎?尤其是可能覺得這主要滿足廠商要求的開源社區(qū)?
- 通用操作系統(tǒng)窮途末路是否會導(dǎo)致系統(tǒng)管理員當(dāng)中專業(yè)化程度更高?
我很想與對此有過一番思考的其他人就上述任何話題聊一聊。整個行業(yè)出現(xiàn)什么大的變化,以及采用可能事后想想再明顯不過的模式,仍需拭目以待。如果你喜歡這方面的內(nèi)容,留言告訴我,我會擠時間寫一些更多的東西。