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