云原生時(shí)代,為什么k8s如此受歡迎?
2022年疫情期間,一家互聯(lián)網(wǎng)公司的后端開發(fā)工程師Xavier在家工作,他提交了一個(gè)關(guān)于產(chǎn)品類型搜索擴(kuò)展字段的代碼,并合并到主分支。此時(shí),公司的devops系統(tǒng)自動(dòng)運(yùn)行。遠(yuǎn)在幾百公里外的運(yùn)維工程師Leo收到了這個(gè)事件,審核了新發(fā)布的制品,并通過公司的容器集群,迅速更新了新版本的程序。整個(gè)過程通過灰度發(fā)布,用戶完全無感知。
當(dāng)然,這個(gè)過程可能有一點(diǎn)簡略(真實(shí)場景面臨很多合規(guī)和審核),但是這基本上就是云原生時(shí)代的軟件開發(fā)和發(fā)布流程了。
云原生是在云計(jì)算環(huán)境中構(gòu)建、部署和管理現(xiàn)代應(yīng)用程序的軟件方法。而云原生中較為受歡迎的容器技術(shù),莫過于Kubernetes(以下簡稱k8s)了。
這套流程,無論是公司自建,還是使用公有云,亦或是專門的容器云廠商的系統(tǒng),比如騰訊云,阿里云,青云,靈雀云等公司提供的云平臺(tái)系統(tǒng),他們都是基于k8s來搭建的。八年前k8s誕生依賴,腳踏docker swarm,手擒mesos,在一眾友商中殺出重圍,已然成為云平臺(tái)容器編排的事實(shí)標(biāo)準(zhǔn),是云原生時(shí)代我們不得不掌握的一門技術(shù)。
k8s是什么?
k8s是一個(gè)容器編排系統(tǒng)。通過多個(gè)服務(wù)器實(shí)例(虛擬機(jī)或者物理機(jī))組成集群,在集群中調(diào)取容器進(jìn)程。依托于自身優(yōu)秀的調(diào)度策略,網(wǎng)絡(luò)和存儲(chǔ)策略,完美的解決了容器在哪里運(yùn)行,容器之間怎么樣連接,容器需要的持久化存儲(chǔ)怎么弄的問題,極大減輕了運(yùn)維人員的負(fù)擔(dān)。依托于龐大的生態(tài)系統(tǒng),我們亦可以選用諸如ranch,kubesphere這類的開源容器平臺(tái),進(jìn)行可視化的管理,對開發(fā)人員也極為友好。
如今,諸多大廠中廠,如騰訊,阿里,字節(jié),美團(tuán)等,都建有自己的k8s容器平臺(tái),即使是小廠或初創(chuàng)公司,也選擇或自建,或選用公有云容器平臺(tái)來部署自己的服務(wù)程序。
k8s及其所引領(lǐng)的云原生時(shí)代如日中天,已成為了當(dāng)今每一個(gè)IT從業(yè)者必備的技能。
k8s可以做什么?
要回答這個(gè)問題,我們需要從應(yīng)用部署的歷史開始說起。
物理機(jī)時(shí)代
在上古時(shí)期,所有的應(yīng)用程序都是在物理機(jī)運(yùn)行,依靠運(yùn)維人員的手動(dòng)維護(hù),人肉操作。好在此時(shí)應(yīng)用的復(fù)雜度比較低,服務(wù)軟件的用戶量也不大,迭代頻率也不高,這種方式的部署也沒有什么問題。
虛擬機(jī)時(shí)代
隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的人開始使用電腦或者手機(jī)進(jìn)行網(wǎng)上沖浪,用戶量激增。提高物理機(jī)的資源利用率成為了迫切的需要。隨著虛擬化技術(shù)的發(fā)展,把物理機(jī)虛擬成多個(gè)虛擬機(jī)成為了解決方案,出現(xiàn)了vmware,pve這類的企業(yè)級(jí)別的虛擬化管理平臺(tái),提高了物理機(jī)資源利用率。這個(gè)時(shí)代依然是運(yùn)維人員手動(dòng)維護(hù)。
容器時(shí)代早期
再后來便是容器時(shí)代了。虛擬化技術(shù)達(dá)到的瓶頸,docker所引領(lǐng)的容器技術(shù)給了我們新的解決方案,通過進(jìn)程隔離的方式,避免了虛擬化所帶來的性能損耗,同時(shí)帶來了更加迅速的運(yùn)行環(huán)境的創(chuàng)建和程序的啟動(dòng)。隨之而來的是微服務(wù)概念的興起,單體程序開始被打散,多個(gè)小而美的單一職責(zé)的服務(wù)相互配合,組成了日益龐大而復(fù)雜的大型系統(tǒng)程序。需要維護(hù)的程序越來越多,運(yùn)維人員已經(jīng)不堪重負(fù)。
k8s和容器編排
于是容器編排系統(tǒng)開始出現(xiàn),提倡以自動(dòng)化集群的方式管理和維護(hù)眾多的容器進(jìn)程。在進(jìn)一步提高了計(jì)算機(jī)的資源利用率的同時(shí),運(yùn)用高效的自動(dòng)化編排,極大的減輕了公司的運(yùn)營成本。
最開始也是群雄爭霸,最終k8s以其優(yōu)秀的性能和擴(kuò)展性拔得頭籌,干掉了一眾對手,成為了容器編排的事實(shí)標(biāo)準(zhǔn)。