云原生集成開發(fā)環(huán)境——TitanIDE
通過網(wǎng)頁在任何地方更安全、更高效地編碼2023-09-01
1394
關(guān)于容器技術(shù)
你是否聽說過容器技術(shù)(以docker和Kubernetes為代表)?容器技術(shù)呱呱墜地到如今,在國內(nèi)經(jīng)歷了如下3個階段:
· 嬰兒期:2014-2016年的技術(shù)探索期;
· 少兒期:2017-2018年的行業(yè)試水期;
· 少年期:2019年以后的規(guī)模應(yīng)用期。
容器技術(shù)作為技術(shù)圈兒中的香餑餑,如果你還沒有聽說過,建議你立刻了解一下,以免跟不上當(dāng)今的技術(shù)潮流。
容器技術(shù)帶來的價(jià)值,通過它的廣泛使用已經(jīng)不言而喻,因此不再多費(fèi)文字闡述。這里直接向大家大致介紹容器技術(shù)的趨勢。
1、Kubernetes(K8s)已成為容器技術(shù)的事實(shí)標(biāo)準(zhǔn)。
2、大量企業(yè)已經(jīng)在使用或者計(jì)劃使用容器云。
3、K8s從CO走向OS
K8s一直以來被當(dāng)做容器編排工具(Container Operation, CO),而這些年的發(fā)展,K8s已經(jīng)成了云原生領(lǐng)域事實(shí)的操作系統(tǒng)(Operation System, OS)。
難以駕馭的K8s
K8s功能固然強(qiáng)大,但同時從K8s目前的定位——操作系統(tǒng),就能看出它最大的特征:復(fù)雜?。?!
復(fù)雜真是萬惡之源!復(fù)雜會帶來一系列衍生問題:
1、上手k8s絕非易事,用一個高級點(diǎn)的說法,叫學(xué)習(xí)曲線陡峭。并且容器技術(shù)的更新迭代非常快,Kubernetes衍生出的新概念新工具也在蓬勃發(fā)展(有興趣的朋友可以搜索一下“Kubernetes生態(tài)”)。然而更有挑戰(zhàn)性的點(diǎn)在于,如果想在實(shí)際的工作中用上K8s,不只你一人要學(xué),整個研發(fā)團(tuán)隊(duì)都需要學(xué),包括開發(fā)人員、測試人員、運(yùn)維人員。
2、市場上,K8s相關(guān)人才不多。
3、項(xiàng)目使用K8s的不確定性太高,可能會導(dǎo)致失敗。
4、項(xiàng)目切換到K8s的成本太大,導(dǎo)致你的老板可能會叫停。
5、你需要適應(yīng)K8s的工作模式,軟件研發(fā)本來就是一個復(fù)雜的體系,包括了很多人使用很多工具分工合作,而使用K8s,很多工作方式與原來不一樣。
下面羅列一下,以供參考。
在實(shí)際使用中,還有很多非常棘手的問題,比如:
· K8s yaml的配置一部分是開發(fā)關(guān)注的,一部分是運(yùn)維關(guān)注的,如何分工協(xié)作?
· ConfigMap/Secret 不支持版本控制,參數(shù)多時配置起來很麻煩;
· 集群如何給外部暴露端口?
· 如何做熱更新?
· 多K8s集群如何管理?
· K8s集群本身如何備份和恢復(fù)?
· 如何對K8s集群進(jìn)行升級而不影響業(yè)務(wù)?
· K8s集群如何做資源規(guī)劃?
我的團(tuán)隊(duì)該如何上K8s?
企業(yè)應(yīng)用上K8s已經(jīng)是大勢所趨,不再是要不要做的選擇題,而是什么時候做,如何做的必答題。
團(tuán)隊(duì)如何上K8s,從大面上,我的答案包含2點(diǎn),二者缺一不可:
1、漸進(jìn)式上K8s;
2、分工 + 云原生產(chǎn)品解決復(fù)雜性。
漸進(jìn)式上K8s:
漸進(jìn)式上K8s聽上去很簡單,但實(shí)施起來不然,具體來說包括如下幾點(diǎn):
· 特定項(xiàng)目。選擇即將要開發(fā)的新項(xiàng)目,簡單一點(diǎn)的項(xiàng)目,沒有遷移成本。
· 特定團(tuán)隊(duì)。項(xiàng)目的leader需要有新技術(shù)的探索精神,項(xiàng)目中核心成員也有新技術(shù)的探索精神。關(guān)于特定團(tuán)隊(duì),團(tuán)隊(duì)中的研發(fā)人員、測試人員、運(yùn)維人員都需要從一開始就直接或間接使用K8s。直接是上原生K8s,間接是指通過第三方平臺上K8s。
筆者曾經(jīng)碰到很多上了K8s的客戶,推進(jìn)得都無比艱難!除了上述的諸多的難題之外,還有一個最重要的原因——這些客戶上K8s是先從運(yùn)維部門開始。這些客戶認(rèn)為,正是因?yàn)镵8s如此復(fù)雜和不確定性高,所以引入第三方的產(chǎn)品或解決方案,先從一個部門開始使用,再逐步推廣到研發(fā)部門。而現(xiàn)實(shí)是:K8s是涉及研發(fā)、測試、運(yùn)維的整體協(xié)作方式變革,引入第三方的產(chǎn)品或解決方案時,要么是研發(fā)測試人員沒有參與,要么是沒有深度參與,導(dǎo)致在推廣時,第三方的產(chǎn)品或解決方案不被研發(fā)測試人員接受。
測試環(huán)境。項(xiàng)目先在測試環(huán)境以K8s方式部署。
取得成功之后,再擴(kuò)展至生產(chǎn)環(huán)境、其他項(xiàng)目、其他團(tuán)隊(duì)。這樣的方式,有利于團(tuán)隊(duì)積累對K8s的自信心。取得一定的廣度成功的同時,在深度上也可以做一定的探索,比如,使用K8s配套的測試工具、運(yùn)維工具,甚至采用一些開源項(xiàng)目的CRD,比如Open Kruise。甚至編寫自己公司特有的CRD。
分工 + 云原生產(chǎn)品解決復(fù)雜性:
人類解決復(fù)雜性有2個非常重要的手段:分工、封裝。這里就不舉例子了,在IT領(lǐng)域,這兩個手段的例子俯拾皆是。具體到上K8s體現(xiàn)為:
人員分工是指不需要整個團(tuán)隊(duì)的人都懂K8s,只需要特定的一兩個人懂K8s,研發(fā)人員、測試人員只需配合相關(guān)的工作,由這一兩個人來編寫Dockerfile、K8s yaml,也可以由這一兩個人寫好腳本,開發(fā)人員和測試人員直接調(diào)用腳本,傳遞合適參數(shù)。
什么樣的云原生產(chǎn)品能解決復(fù)雜性:
答案是以應(yīng)用為中心的云原生產(chǎn)品。什么是以應(yīng)用為中心?從企業(yè)上云的過程來看,企業(yè)上云越來越關(guān)注上層,越來越趨向應(yīng)用,越來越不關(guān)心資源。
從某個角度上說,容器仍然是資源。當(dāng)前企業(yè)上云,說的其實(shí)都是上容器。未來能否再往上走,企業(yè)不用運(yùn)維容器,也完全不用管資源呢?
完全可以!
把上面圖的右半部分變一下形,如下圖所示。
企業(yè)都是在應(yīng)用云上進(jìn)行應(yīng)用的全生命周期管理,不用再看到阿里云、騰訊云、AWS、企業(yè)私有云的細(xì)節(jié),也不用運(yùn)維云資源,這些云服務(wù)廠商只是提供了在世界各地不同的服務(wù)規(guī)格的云資源。企業(yè)只需要在應(yīng)用云上把應(yīng)用交付到不同云服務(wù)。這樣,就徹底做到了以應(yīng)用為中心,應(yīng)用開發(fā)人員、測試人員、運(yùn)維人員需要關(guān)注的是應(yīng)用,是業(yè)務(wù),再也不用關(guān)注容器,自然就不用理會容器的復(fù)雜度。個人認(rèn)為,這是云原生的終態(tài)。這就是我們產(chǎn)品CloudOS的理念,也是我們的實(shí)踐。
附注:筆者容器云行業(yè)從業(yè)好幾年,略有心得,聊作分享。如有疏漏,多謝指正,歡迎留言探討。
引用說明:本文大量數(shù)據(jù)來源于《艾瑞咨詢:2020年中國容器云市場研究報(bào)告》