隨著移動(dòng)互聯(lián)網(wǎng)生態(tài)的興起,傳統(tǒng)銀行面臨跨界競(jìng)爭(zhēng),在電子商務(wù)支付裆熙、消費(fèi)金融、商業(yè)融資的新的業(yè)務(wù)場(chǎng)景下面臨嚴(yán)峻的挑戰(zhàn)括饶,數(shù)字化轉(zhuǎn)型的需求日益迫切。在這場(chǎng)技術(shù)轉(zhuǎn)型的浪潮下来涨,各大銀行積極推進(jìn)科技改革图焰,擁抱云計(jì)算,以適應(yīng)市場(chǎng)不斷的變化蹦掐。隨著容器技術(shù)的成熟技羔,一個(gè)以Kubernetes容器編排引擎為核心的生態(tài)圈已經(jīng)形成,互聯(lián)網(wǎng)卧抗、金融藤滥、汽車(chē)等各企業(yè)都積極投入容器技術(shù)的應(yīng)用中。容器云平臺(tái)的建設(shè)已經(jīng)被認(rèn)為是云計(jì)算落地的一種快捷的方式社裆。
說(shuō)到容器云平臺(tái)拙绊,就不得不提當(dāng)前容器調(diào)度與編排的事實(shí)標(biāo)準(zhǔn)——Kubernetes。Kubernetes通過(guò)定義基礎(chǔ)資源(容器泳秀、存儲(chǔ)标沪、網(wǎng)絡(luò))的協(xié)議接口,為底層基礎(chǔ)設(shè)施提供了統(tǒng)一的管理方式嗜傅。研發(fā)人員通過(guò)聲明的方式定義資源編排文件谨娜,Kubernetes便通過(guò)自身組件自動(dòng)完成資源的申請(qǐng)與分配,快速實(shí)現(xiàn)應(yīng)用的部署磺陡。Kubernetes為容器的管理調(diào)度,應(yīng)用的編排提供了便利,它無(wú)所不能币他,但是在建設(shè)企業(yè)級(jí)容器平臺(tái)時(shí)坞靶,我們需要在以Kubernetes為核心的前提下,整合其他組件蝴悉,例如網(wǎng)絡(luò)插件彰阴、應(yīng)用訪(fǎng)問(wèn)入口、存儲(chǔ)實(shí)現(xiàn)拍冠、監(jiān)控尿这、日志、鏡像倉(cāng)庫(kù)等庆杜。如圖一所示射众。OpenShift正是基于Kubernetes實(shí)現(xiàn)的一個(gè)企業(yè)開(kāi)源容器平臺(tái)。
OpenShift發(fā)展歷史
OpenShift是由RedHat推出的企業(yè)級(jí)Kubernetes平臺(tái)晃财,它是從OKD項(xiàng)目派生的下游容器編排技術(shù)叨橱。2019 年 9 月 IHS Markit Technology 統(tǒng)計(jì)了商業(yè)容器軟件市場(chǎng)收入的排名,并發(fā)布了相關(guān)的調(diào)查報(bào)告断盛。報(bào)告中顯示紅帽份額為 44%罗洗,排在第1位,超過(guò)了排名第2 - 第5公司的總和钢猛。從該報(bào)告的結(jié)果可以看出伙菜,在全球容器市場(chǎng)中,RedHat占有著領(lǐng)先的優(yōu)勢(shì)命迈,而RedHat企業(yè)級(jí)容器產(chǎn)品便是OpenShift贩绕。
目前OpenShift最新版本為4.5,生產(chǎn)上使用最多的是3.11版本躺翻,也是3系列的最后一個(gè)版本丧叽。大家都知道OpenShift是基于Kubernetes實(shí)現(xiàn)的,但很多人并不清楚OpenShift其實(shí)早于Kubernetes誕生公你。整個(gè)OpenShift的發(fā)展過(guò)程中經(jīng)歷了兩次重大的變革踊淳,如圖二所示。
OpenShift發(fā)布于2011年陕靠,當(dāng)時(shí)Docker還未出現(xiàn)迂尝,容器技術(shù)并沒(méi)有像現(xiàn)在這么普及,也沒(méi)有形成標(biāo)準(zhǔn)剪芥,而是一些大廠(chǎng)專(zhuān)用的技術(shù)垄开,各家在容器運(yùn)行時(shí)與容器編排引擎都各成一套,RedHat也不例外税肪。OpenShift在v1與v2版本中一直使用的是RedHat自己開(kāi)發(fā)的容器運(yùn)行時(shí)與容器編排引擎溉躲。隨著2013年Docker的問(wèn)世榜田,RedHat立刻意識(shí)到了該技術(shù)將帶來(lái)的革命,隨即與Docker展開(kāi)合作锻梳,確定了以Docker作為下一代OpenShift容器運(yùn)行時(shí)箭券。在2014年Kubernetes的發(fā)布,RedHat經(jīng)過(guò)調(diào)研疑枯,便很快與Google展開(kāi)合作辩块,確認(rèn)了以Kubernetes作為下一代OpenShift的編排引擎。后來(lái)的事實(shí)證明RedHat做的這兩個(gè)選擇都非常明智荆永。
2015年OpenShift迎來(lái)了第一個(gè)重大的變革废亭,OpenShift v3發(fā)布。RedHat棄用了原先自己的“Gear”和“Cartridge”技術(shù)具钥,以Docker豆村、Kubernetes為核心進(jìn)行全新重構(gòu),并且站在開(kāi)發(fā)者的角度氓拼,對(duì)產(chǎn)品體驗(yàn)進(jìn)行了全面的升級(jí)與優(yōu)化你画。OpenShift 3很快得到了開(kāi)發(fā)者的認(rèn)可,取得了巨大的成功桃漾,直到今天使用最多的版本仍然是v3版本坏匪。
OpenShift本可以沿著v3的路線(xiàn)不斷升級(jí)完善,就能夠保持自己在容器PaaS領(lǐng)域的優(yōu)勢(shì)撬统,然而它的變革并未停止适滓。2018年紅帽收購(gòu)了容器領(lǐng)域的另一巨頭CoreOS,容器領(lǐng)域的兩只領(lǐng)頭羊合二為一恋追,他們將各自積累多年的容器技術(shù)進(jìn)行全面融合凭迹,通過(guò)Operator實(shí)現(xiàn)應(yīng)用全生命周期的自動(dòng)化管理,對(duì)OpenShift 3版本進(jìn)行全面的改造苦囱,推出了功能更加豐富嗅绸,更加自動(dòng)化的4版本,這里不得不佩服紅帽的魄力撕彤。
OpenShift對(duì)Kubernetes的增強(qiáng)
OpenShift與Kubernetes的關(guān)系類(lèi)似于Linux與Linux發(fā)行版(Rhel鱼鸠、Ubuntu等)的關(guān)系。OpenShift以Kubernetes為核心羹铅,實(shí)現(xiàn)相關(guān)的資源協(xié)議接口蚀狰,對(duì)其功能進(jìn)行增強(qiáng),同時(shí)整合其它組件职员,使其成為企業(yè)級(jí)容器平臺(tái)麻蹋。
OpenShift提供穩(wěn)定的容器、網(wǎng)絡(luò)焊切、存儲(chǔ)等資源協(xié)議接口的實(shí)現(xiàn)扮授。
- 以Docker作為默認(rèn)的容器運(yùn)行時(shí)芳室,對(duì)接Kubernetes的容器運(yùn)行時(shí)接口(CRI),當(dāng)然OpenShift也支持其它的容器運(yùn)行時(shí)刹勃,比如CRI-O渤愁。
- OpenShift默認(rèn)采用OVS作為容器平臺(tái)的網(wǎng)絡(luò)插件,對(duì)接Kubernetes的容器網(wǎng)絡(luò)接口(CNI)深夯,實(shí)現(xiàn)容器跨主機(jī)的網(wǎng)絡(luò)通信及管理,同時(shí)OpenShift也支持其它的網(wǎng)絡(luò)插件诺苹,比如Calico咕晋。
- 存儲(chǔ)類(lèi)型方面,除了Kubernetes默認(rèn)支持的RBD收奔、NFS掌呜、EBS、GlusterFS等坪哄,OpenShift支持更多的存儲(chǔ)類(lèi)型质蕉,如Local、iSCSI等翩肌。
OpenShift對(duì)原生Kubernetes的安全性及功能進(jìn)行了增強(qiáng)模暗。 - OpenShift最早實(shí)現(xiàn)了集群的多租戶(hù)管理,比如RBAC念祭、Qouta兑宇、Namespace等,這些能力在Kubernetes的后期版本中才集成粱坤。
- 為了提高安全性隶糕,OpenShift開(kāi)發(fā)了安全上下文約束(SCC),控制容器運(yùn)行時(shí)默認(rèn)使用最小權(quán)限站玄。
- 為了方便研發(fā)人員的持續(xù)構(gòu)建與部署枚驻,OpenShift開(kāi)發(fā)了DeploymentConfig及BuildConfig資源,它們?cè)贙ubernetes的應(yīng)用編排資源的基礎(chǔ)上添加了更多的控制能力株旷,比如自動(dòng)觸發(fā)再登、部署策略等。
- OpenShift實(shí)現(xiàn)了Route資源對(duì)象灾常,為集群提供了統(tǒng)一的網(wǎng)絡(luò)入口霎冯,方便集群中的應(yīng)用對(duì)外提供服務(wù)。受到Route的啟發(fā)钞瀑,Kubernetes目前也開(kāi)發(fā)類(lèi)似功能的實(shí)現(xiàn)Ingress沈撞。
- OpenShift開(kāi)發(fā)了集群內(nèi)部鏡像倉(cāng)庫(kù),并且提供了與應(yīng)用資源協(xié)調(diào)調(diào)用的能力雕什。
OpenShift整合了更多的組件缠俺,增強(qiáng)了集群的穩(wěn)定性显晶。 - 基于Prometheus、Grafana壹士、AlertManager為集群提供了整體監(jiān)控與告警的方案磷雇,包括集群核心組件的可用性,容器資源使用率等躏救,同時(shí)也提供了自定義監(jiān)控項(xiàng)的擴(kuò)展能力唯笙。
- 基于EFK組件,為集群組件及應(yīng)用提供了整體的日志統(tǒng)一管理方案盒使。
另外還需要提的是崩掘,OpenShift為開(kāi)發(fā)者和集群管理者提供了一個(gè)非常容易使用的控制臺(tái),通過(guò)控制臺(tái)可以方便完成絕大部分的使用與管理少办。
從上面可以看出苞慢,OpenShift的能力對(duì)Kubernetes較全面的增強(qiáng),同時(shí)兩者又是相輔相成英妓,OpenShift基于Kubernetes實(shí)現(xiàn)挽放,也同樣反饋與驅(qū)動(dòng)Kubernetes前進(jìn)。
OpenShift的不足
OpenShift提供了一個(gè)開(kāi)箱即用的單容器高可用容器PaaS平臺(tái)蔓纠,它可以滿(mǎn)足絕大部分企業(yè)容器應(yīng)用部署的需求辑畦,為企業(yè)能夠快速構(gòu)建自己的云計(jì)算服務(wù)。但是大型企業(yè)容器平臺(tái)建設(shè)需要考慮的情況往往會(huì)更復(fù)雜贺纲。
- 應(yīng)用的部署體驗(yàn)夠用了嗎航闺?OpenShift提供了單平臺(tái)web控制臺(tái),它的可定制化能力較弱猴誊,很難對(duì)其進(jìn)行擴(kuò)展潦刃。
- 多中心、多集群管理有沒(méi)有懈叹?OpenShift更多的是對(duì)單集群的管理乖杠,缺乏多集群管理的能力。
- 生產(chǎn)級(jí)別的PaaS服務(wù)有沒(méi)有澄成?OpenShift提供了應(yīng)用商店胧洒,更多的并沒(méi)有達(dá)到生產(chǎn)級(jí)別的要求,只能在開(kāi)發(fā)測(cè)試環(huán)境試用墨状。
- 與企業(yè)流程的深度融合有沒(méi)有卫漫?如果需要與企業(yè)自身系統(tǒng)進(jìn)行深度融合,需要對(duì)OpenShift控制臺(tái)進(jìn)行深度化定制肾砂,往往我們還是需要獨(dú)立開(kāi)發(fā)門(mén)戶(hù)網(wǎng)站列赎。
- 監(jiān)控集群及應(yīng)用是否可以自定制?OpenShift集群提供了整體監(jiān)控與告警的產(chǎn)品化方案镐确,其監(jiān)控展示配置是固化的包吝,無(wú)法自定義自己的監(jiān)控展示頁(yè)面饼煞。
- 日志方案是否足夠了?在日志方案上诗越,OpenShift能夠滿(mǎn)足一般吞吐量的日志收集與管理块促,隨著集群規(guī)模的壯大,應(yīng)用日志并發(fā)數(shù)增多即硼,OpenShift日志系統(tǒng)會(huì)受到性能瓶頸。
- 集群的網(wǎng)絡(luò)是否有局限性?OpenShift默認(rèn)采用ovs作為容器平臺(tái)的網(wǎng)絡(luò)插件祖乳,它是一種overlay網(wǎng)絡(luò)作媚,容器間訪(fǎng)問(wèn)需要通過(guò)封包解包级解,這在一定程度上降低了網(wǎng)絡(luò)性能,同時(shí)對(duì)于集群內(nèi)外服務(wù)的網(wǎng)絡(luò)控制也增加了一定的難度拼苍。
另外各企業(yè)有自己的審批流程、開(kāi)發(fā)流程立莉、運(yùn)維規(guī)范、更高的高可用要求皮仁、更高的性能要求呜达、更細(xì)化的安全要求、自主可控等。而OpenShift產(chǎn)品化程度過(guò)高,降低了其自身的靈活性,企業(yè)對(duì)其定制能力被削弱哀卫。所以各大企業(yè)即使引入了OpenShift平臺(tái)撬槽,仍然需要在它的基礎(chǔ)上建設(shè)自己的容器平臺(tái)門(mén)戶(hù)共啃,并且相關(guān)的技術(shù)方案也需要獨(dú)立設(shè)計(jì)。
OpenShift 4——全新一代OpenShift
2019年5月暂题,在完成收購(gòu)CoreOS的15個(gè)月后移剪,RedHat正式發(fā)布了OpenShift 4,將其定位為面向混合云的通用操作系統(tǒng)薪者,如圖三所示纵苛。它雖然依然以Kubernetes為核心,但是整個(gè)平臺(tái)已經(jīng)脫胎換骨,從功能攻人,架構(gòu)取试,到實(shí)現(xiàn)都有非常大的改變。其中最大的變化是在底層的操作系統(tǒng)及應(yīng)用服務(wù)的管理方式上。
- 采用更輕量、更安全沉唠、更緊湊的CoreOS操作系統(tǒng)捻撑,容器運(yùn)行時(shí)也使用更輕量的CRI-O代替了Docker。CoreOS是一個(gè)基于Linux內(nèi)核的輕量級(jí)操作系統(tǒng)骗村,專(zhuān)注于自動(dòng)化、輕松部署、安全铺根、可靠及可擴(kuò)縮性,它可以通過(guò)配置文件來(lái)定義底層操作系統(tǒng)乔宿,實(shí)現(xiàn)了操作系統(tǒng)的標(biāo)準(zhǔn)化位迂。
- 全面擁抱Operator,實(shí)現(xiàn)應(yīng)用服務(wù)自動(dòng)部署详瑞、自動(dòng)運(yùn)維掂林、擴(kuò)展及故障轉(zhuǎn)移,極大程序簡(jiǎn)化了應(yīng)用的管理坝橡,同時(shí)保證了不同的集群下應(yīng)用都是完全相同的泻帮,無(wú)論是內(nèi)部環(huán)境還是公有環(huán)境,實(shí)現(xiàn)了應(yīng)用管理的標(biāo)準(zhǔn)化计寇。OpenShift集群的核心組件锣杂,運(yùn)維組件,DevOps工具鏈等都實(shí)現(xiàn)了Operator化番宁。
OpenShift 4自身的內(nèi)功修煉也不止這些:Serverless的支持元莫、服務(wù)網(wǎng)格技術(shù)的整合、多網(wǎng)絡(luò)平面的支持蝶押、更多持續(xù)集成與持續(xù)交付功能的拓展等踱蠢,為應(yīng)用的全生命周期打造一個(gè)完善的生態(tài)系統(tǒng)。
除了自身的功能外棋电,OpenShift 4與各種云平臺(tái)的集成方面下足了功夫茎截,支持了AWS、Azure Cloud赶盔、VMware vsphere稼虎、IBM Cloud等,甚至將會(huì)支持與Aliyun的集成招刨。這也解釋了為什么它的定位是面向混合云的通用操作系統(tǒng)霎俩。
雖然當(dāng)前OpenShift 4還是一個(gè)較新的版本哀军,穩(wěn)定性還需要更多的生產(chǎn)實(shí)踐進(jìn)行驗(yàn)證。但是相信在不久的將來(lái)OpenShift 4會(huì)接過(guò)V3的大旗打却,成為生產(chǎn)上使用最為廣泛的容器平臺(tái)杉适。
總結(jié)
OpenShift在過(guò)去幾年的不斷創(chuàng)新與探索,敢于自我革命柳击,成就了現(xiàn)在企業(yè)級(jí)容器平臺(tái)的江湖地位猿推。雖然OpenShift的產(chǎn)品化降低了它的靈活性,但是它對(duì)原生Kubernetes在安全性捌肴、穩(wěn)定性等多個(gè)方面進(jìn)行了增強(qiáng)蹬叭。在容器平臺(tái)建設(shè)過(guò)程中,我們需要結(jié)合自身的情況状知,綜合考慮秽五,進(jìn)行多維度的評(píng)估。