隨著敏捷開發(fā)(Agile Development)和開發(fā)運維一體化(DevOps)等良好實踐逐漸在軟件開發(fā)領(lǐng)域成為主流,從事軟件開發(fā)的行業(yè)或企業(yè)為了逐步適應(yīng)每次敏捷迭代需交付最小可運行產(chǎn)品(MVP)的產(chǎn)品增量的內(nèi)在訴求,他們必然要考慮如何把現(xiàn)有的巨石架構(gòu)所需開發(fā)的新功能特性拆解成可以納入某次迭代交付的產(chǎn)品增量。從而敏捷開發(fā)方法的普及無形中加持了企業(yè)系統(tǒng)在架構(gòu)解耦方面的內(nèi)在訴求。
當(dāng)產(chǎn)品增量在某次迭代被開發(fā)出來后,最好能夠?qū)崿F(xiàn)如DevOps提倡的一次編譯,多次的在不同環(huán)境間無差別的部署,即所謂的Build One, Run Anywhere?;谠圃娜萜骰渴鸷突贙ubernetes的容器編排產(chǎn)品的應(yīng)用正好完美的解決了DevOps的自動化部署的場景化訴求。
Kubernetes的原意是古希臘文字舵手的意思,目前它是最為流行的容器編排產(chǎn)品。該產(chǎn)品是由著名的互聯(lián)網(wǎng)公司Google于2015年向市場開源。Kubernetes也稱K8S,因為K和S之間有八個字母而得名。以下為Kubernetes(K8S)的整體架構(gòu)概覽圖:
我們可以透過容器部署和容器編排工具火熱的現(xiàn)象看到其價值的核心本質(zhì)所在,現(xiàn)通過如下幾點總結(jié)來整體闡述:
1、故障隔離域的訴求:目前IT運維的故障域正在從傳統(tǒng)的服務(wù)器到虛擬機,再到容器。也就是實現(xiàn)充分解耦的應(yīng)用模塊可以做到基于容器的自動化部署,由于容器的部署會自帶應(yīng)用所運行的用戶空間的環(huán)境,所以容器可以實現(xiàn)基于容器鏡像實例在不同環(huán)境間的無差別部署。并且,容器之間彼此的運行環(huán)境是邏輯隔離的,單個容器所導(dǎo)致的故障損壞不會影響別的容器的正常運行。從而運維可以很好的實現(xiàn)故障診斷和基于容器為單位的秒級恢復(fù),提升了業(yè)務(wù)應(yīng)用的可用性和業(yè)務(wù)數(shù)據(jù)的可靠性;
2、替換代替安裝的訴求:為了盡快恢復(fù)業(yè)務(wù),可以采取基于容器為單位的應(yīng)用模塊的秒級?自動替換,從而實現(xiàn)了業(yè)務(wù)應(yīng)用的高度容錯機制。相較于基于物理服務(wù)器的安裝配置和虛擬機的鏡像或快照回滾,容器的自動重啟和替換是一種性價比最優(yōu)的方案;
3、簡化IT運維的訴求:目前云用戶更多關(guān)注其應(yīng)用本身的開發(fā)邏輯的實現(xiàn)而不是IT基礎(chǔ)設(shè)施的搭建和運維,這更加符合其業(yè)務(wù)價值的切身利益。把承載業(yè)務(wù)應(yīng)用的容器的全生命周期的管理交給專業(yè)的容器編排產(chǎn)品Kubernetes則顯得那樣的恰如其分。目前很多云廠商如阿里或華為都適時推出基于Kubernetes版的容器服務(wù),進(jìn)而提供高性能和可伸縮的容器應(yīng)用管理服務(wù),支持企業(yè)級Kubernetes容器化應(yīng)用的全生命周期管理。比如某云廠商的云容器實例(Cloud Container Instance)提供基于Kubernetes的無服務(wù)器(Serverless)的容器服務(wù),兼容K8S和容器(Docker)原生接口,即用戶無需關(guān)注集群和服務(wù)器,而只要通過簡單配置即可快速創(chuàng)建容器負(fù)載。
總之,Kubernetes容器編排技術(shù)的火熱是有其業(yè)務(wù)價值快速交付和IT運維變革的內(nèi)在訴求的。業(yè)務(wù)上云應(yīng)用云原生的容器化部署服務(wù)也會逐漸成為一個必選的最佳實踐。