
如果以容器云上生產(chǎn)為目標(biāo),那么整個(gè)容器云平臺(tái)的設(shè)計(jì)、建設(shè)和優(yōu)化對(duì)于銀行來(lái)說(shuō)是一個(gè)巨大的挑戰(zhàn)。如何更好地利用云原生技術(shù),幫助銀行實(shí)現(xiàn)敏捷、輕量、快速、高效地進(jìn)行開(kāi)發(fā)、測(cè)試、交付和運(yùn)維一體化,從而重構(gòu)業(yè)務(wù),推動(dòng)金融科技的發(fā)展,是個(gè)長(zhǎng)期課題。
本期云原生漫談,將和您共同探索,云原生時(shí)代智能運(yùn)維的進(jìn)階之路。
隨著金融業(yè)務(wù)的快速發(fā)展,支撐業(yè)務(wù)的IT基礎(chǔ)設(shè)施的變化節(jié)奏也大大加快。
金融IT運(yùn)維團(tuán)隊(duì)對(duì)IT基礎(chǔ)設(shè)施運(yùn)維的任務(wù),比以往任何時(shí)候都要更加艱巨。核心是保障生產(chǎn)安全運(yùn)營(yíng),并提高軟硬件環(huán)境的交付質(zhì)量。然而在今天的金融IT3.0時(shí)代,IT需求變得越來(lái)越強(qiáng),變化越來(lái)越快,服務(wù)器等數(shù)量爆增,管理起來(lái)日益繁雜。同時(shí),運(yùn)維管理規(guī)模的不斷擴(kuò)大,運(yùn)維人員的不斷擴(kuò)充,使得日常運(yùn)維工作面臨著雙重的壓力與風(fēng)險(xiǎn)。
以容器、微服務(wù)為代表的云原生技術(shù)催生了新一代云原生運(yùn)維技術(shù)體系,可以幫助金融企業(yè)最大化釋放運(yùn)維效能。基于多年來(lái)的實(shí)踐經(jīng)驗(yàn),我們對(duì)于來(lái)自金融行業(yè)一線(xiàn)的運(yùn)維問(wèn)題進(jìn)行了回答:
相較于虛擬機(jī),容器的運(yùn)維和監(jiān)控有什么優(yōu)劣勢(shì)?
為什么說(shuō)基于K8s的容器是實(shí)現(xiàn)智能運(yùn)維的必然選擇?
高并發(fā)場(chǎng)景下,如何實(shí)現(xiàn)容器的自動(dòng)擴(kuò)縮容?
如何快、準(zhǔn)、狠地排查容器中的應(yīng)用問(wèn)題?
容器的智能運(yùn)維有無(wú)成功實(shí)踐案例?
希望本篇文章能為您提供借鑒。
相較于虛擬機(jī),容器的運(yùn)維和監(jiān)控有什么優(yōu)劣勢(shì)?
從運(yùn)維的角度來(lái)看,容器的輕量化使得運(yùn)維更加靈活高效,更方便應(yīng)用自動(dòng)化來(lái)提升運(yùn)維效率。
相較于傳統(tǒng)運(yùn)維,容器可以實(shí)現(xiàn):
更快速部署和交付:對(duì)于應(yīng)用系統(tǒng)的部署可以極大地節(jié)省時(shí)間成本和人力成本;
更標(biāo)準(zhǔn)化交付物:容器的標(biāo)準(zhǔn)交付物為鏡像,包含應(yīng)用程序和依賴(lài)環(huán)境,一次構(gòu)建多次使用,大大簡(jiǎn)化了應(yīng)用交付模式;
更高效的資源利用:容器不需要虛擬機(jī)額外的管理程序,依賴(lài)內(nèi)核運(yùn)行,在運(yùn)維資源開(kāi)銷(xiāo)上要低的多;
更加敏捷的遷移和擴(kuò)展:容器可以跨操作系統(tǒng)、跨環(huán)境運(yùn)行,實(shí)現(xiàn)無(wú)縫遷移的效果,以及高并發(fā)場(chǎng)景下的自動(dòng)擴(kuò)縮容。
從監(jiān)控的角度來(lái)看,輕量化的容器也帶來(lái)了監(jiān)控的復(fù)雜度,特別是大量容器運(yùn)行的平臺(tái)如何排錯(cuò)和根因分析。
由于容器是黑盒運(yùn)行,在運(yùn)維中容器問(wèn)題的診斷比較復(fù)雜;由于容器運(yùn)行的密度比較大,需要面對(duì)的運(yùn)維實(shí)體和對(duì)象數(shù)量會(huì)很龐大;由于容器的自身特性,容器的創(chuàng)建、銷(xiāo)毀等生命周期過(guò)程,各類(lèi)運(yùn)維數(shù)據(jù)的采集是個(gè)挑戰(zhàn)。另外容器啟動(dòng)后,監(jiān)控系統(tǒng)怎么發(fā)現(xiàn),同時(shí)需要對(duì)其做哪些數(shù)據(jù)采集,這些問(wèn)題都是容器監(jiān)控自動(dòng)化過(guò)程需要解決的。
在監(jiān)控這個(gè)領(lǐng)域,除了目前比較熱門(mén)的純軟件層全鏈路監(jiān)控以及混沌工程,建議應(yīng)該結(jié)合硬件的監(jiān)控和檢測(cè)實(shí)現(xiàn)端到端的監(jiān)控和測(cè)試,以提升平臺(tái)的穩(wěn)定性和效能。
為什么說(shuō)基于K8s的容器是實(shí)現(xiàn)智能運(yùn)維的必然選擇?
隨著容器的不斷成熟,越來(lái)越多的金融企業(yè)選擇利用容器來(lái)搭建業(yè)務(wù)系統(tǒng)。可是,大家在實(shí)際操作中發(fā)現(xiàn),像Docker之類(lèi)的容器引擎,更適合管理少量容器,而如今的云原生應(yīng)用、機(jī)器學(xué)習(xí)任務(wù)或者大數(shù)據(jù)分析業(yè)務(wù),動(dòng)輒就要使用成百上千的容器,K8s就自然而然地成為了實(shí)現(xiàn)智能運(yùn)維的必然選擇。
首先是K8s采用聲明式API,讓開(kāi)發(fā)者可以專(zhuān)注于應(yīng)用自身,而非系統(tǒng)執(zhí)行細(xì)節(jié)。比如,在Kubernetes之上,提供了Deployment、StatefulSet、Job等不同類(lèi)型應(yīng)用負(fù)載的抽象。聲明式API是云原生重要的設(shè)計(jì)理念,有助于將系統(tǒng)復(fù)雜性下沉,交給基礎(chǔ)設(shè)施進(jìn)行實(shí)現(xiàn)和持續(xù)優(yōu)化。
此外,K8s提供了可擴(kuò)展性架構(gòu),所有K8s組件都是基于一致的、開(kāi)放的API進(jìn)行實(shí)現(xiàn)和交互。開(kāi)發(fā)者也可通過(guò)CRD(CustomResourceDefinition)/Operator等方式提供領(lǐng)域相關(guān)的擴(kuò)展,極大拓寬了K8s的應(yīng)用場(chǎng)景。
最后,K8s提供平臺(tái)無(wú)關(guān)的技術(shù)抽象:如CNI網(wǎng)絡(luò)插件,CSI存儲(chǔ)插件等等,可以對(duì)上層業(yè)務(wù)應(yīng)用屏蔽基礎(chǔ)設(shè)施差異。
高并發(fā)場(chǎng)景下如何實(shí)現(xiàn)容器的自動(dòng)擴(kuò)縮容?
首先,建議先做好容器云平臺(tái)配套的監(jiān)控、日志的建設(shè),再去建設(shè)自動(dòng)擴(kuò)縮容的自動(dòng)化能力。
一般可以在高并發(fā)場(chǎng)景下使用K8s的HorizontalPodAutoscaling(以下簡(jiǎn)稱(chēng)HPA),通過(guò)HPA功能,可以實(shí)現(xiàn)容器的自動(dòng)彈性擴(kuò)縮容功能。對(duì)于K8s集群來(lái)說(shuō),在高并發(fā)場(chǎng)景下HPA可以實(shí)現(xiàn)多種緯度的自動(dòng)化功能,例如當(dāng)工作負(fù)載上升的時(shí)候,可以創(chuàng)建新的實(shí)例副本來(lái)保證業(yè)務(wù)系統(tǒng)穩(wěn)定運(yùn)行,當(dāng)工作負(fù)載并發(fā)下降的時(shí)候,可以銷(xiāo)毀副本實(shí)例來(lái)減少資源消耗。當(dāng)前的自動(dòng)伸縮的指標(biāo)包括:CPU,內(nèi)存,并發(fā)數(shù),網(wǎng)絡(luò)傳輸?shù)取?br />
此外,從整體實(shí)施的角度來(lái)看,建議聚焦于場(chǎng)景驅(qū)動(dòng),先從某個(gè)業(yè)務(wù)應(yīng)用開(kāi)始逐步試點(diǎn)和推廣,運(yùn)維團(tuán)隊(duì)逐步積累到各個(gè)場(chǎng)景下業(yè)務(wù)應(yīng)用的擴(kuò)縮容的觸發(fā)指標(biāo)、閥值和評(píng)估擴(kuò)縮容成效,最終實(shí)現(xiàn)全面的自動(dòng)擴(kuò)縮容。
如何快、準(zhǔn)、狠地排查容器中的應(yīng)用問(wèn)題?
建議可以從以下三個(gè)層面來(lái)排查容器中的應(yīng)用問(wèn)題:
業(yè)務(wù)層面
通常我們說(shuō)的微服務(wù)鏈路追蹤、流量追蹤用來(lái)解決業(yè)務(wù)層的問(wèn)題說(shuō)的微服務(wù)鏈路追蹤、流量追蹤用來(lái)解決業(yè)務(wù)層的問(wèn)題,正常情況下會(huì)引入服務(wù)網(wǎng)格平臺(tái),好處是不會(huì)受開(kāi)發(fā)語(yǔ)言限制(當(dāng)然SpringCloud也是可以,只是局限在Java應(yīng)用里),可實(shí)現(xiàn)鏈路追蹤,發(fā)現(xiàn)業(yè)務(wù)API調(diào)用關(guān)系,對(duì)處理業(yè)務(wù)故障拍錯(cuò)很有幫助。
容器層面
容器層面的問(wèn)題解決相當(dāng)于傳統(tǒng)情況下對(duì)包、配置、進(jìn)程、OS等進(jìn)行分析和調(diào)優(yōu),這點(diǎn)通過(guò)切入容器環(huán)境進(jìn)行排障分析。值得一提的是在靈雀云的產(chǎn)品中,提供對(duì)容器debug的獨(dú)特功能,可以通過(guò)臨時(shí)添加debug容器到目標(biāo)pod中的方式對(duì)目標(biāo)容器進(jìn)行各類(lèi)測(cè)試,避免直接登錄進(jìn)入業(yè)務(wù)容器而導(dǎo)致風(fēng)險(xiǎn)或業(yè)務(wù)容器中沒(méi)有需要的debug工具。
網(wǎng)絡(luò)和數(shù)據(jù)包層面
可以通過(guò)trace、tcpdump、流量鏡像等方式對(duì)數(shù)據(jù)包分析,這點(diǎn)通常需要CNI插件支持,一般的calico、flannel都無(wú)法做到,可以考慮采用開(kāi)源的Kube-OVN插件作為容器CNI,可以有效幫助解決網(wǎng)絡(luò)層排障的問(wèn)題。
容器的智能運(yùn)維有無(wú)成功實(shí)踐案例?
我們以某大型車(chē)企的云原生容器應(yīng)用為例,2018年,在高并發(fā)訪(fǎng)問(wèn)、高吞吐量以及車(chē)輛的車(chē)聯(lián)網(wǎng)接入需求推動(dòng)下,其智能網(wǎng)聯(lián)應(yīng)用做微服務(wù)的改造和應(yīng)用容器化,“智能網(wǎng)聯(lián)開(kāi)發(fā)院”和“數(shù)字化部門(mén)”聯(lián)合起來(lái)對(duì)整個(gè)平臺(tái)架構(gòu)進(jìn)行了相應(yīng)的設(shè)計(jì),在平臺(tái)建設(shè)中核心痛點(diǎn)就是需要引入一個(gè)微服務(wù)的治理平臺(tái),以及一個(gè)業(yè)務(wù)應(yīng)用的管理平臺(tái),來(lái)支撐整個(gè)智能網(wǎng)聯(lián)平臺(tái)的開(kāi)發(fā)需要。
項(xiàng)目依托于靈雀云ACP管理平臺(tái),配合微服務(wù)治理平臺(tái),實(shí)現(xiàn)了業(yè)務(wù)應(yīng)用的運(yùn)行以及業(yè)務(wù)應(yīng)用治理的工作。項(xiàng)目一期實(shí)現(xiàn)部分服務(wù)器的納管,形成計(jì)算資源池,為業(yè)務(wù)應(yīng)用提供部署資源。同時(shí),通過(guò)微服務(wù)治理功能,實(shí)現(xiàn)為業(yè)務(wù)應(yīng)用的不同部門(mén)或者不同開(kāi)發(fā)團(tuán)隊(duì),適配相應(yīng)的容器化集群。
當(dāng)然,平臺(tái)的落地并不能只是把工具提供給了客戶(hù),讓客戶(hù)更好地用起來(lái),也是一個(gè)非常大的挑戰(zhàn),尤其對(duì)于微服務(wù)這樣比較新的概念來(lái)說(shuō)。靈雀云在項(xiàng)目當(dāng)中也為客戶(hù)提供了微服務(wù)治理咨詢(xún)服務(wù),對(duì)于微服務(wù)的拆分,微服務(wù)改造,以及如何更好地使用平臺(tái)的各種功能都提供了有針對(duì)性的咨詢(xún)服務(wù)。
經(jīng)過(guò)幾年的努力,該車(chē)企的營(yíng)銷(xiāo)數(shù)字化業(yè)務(wù)的不同業(yè)務(wù)系統(tǒng)都逐漸遷移到這個(gè)平臺(tái)上來(lái)。這么大規(guī)模的平臺(tái)和業(yè)務(wù)應(yīng)用,運(yùn)維人員可能只需要3~5個(gè)人。
對(duì)于他們來(lái)說(shuō),能得到的收益,首先就是統(tǒng)一業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)架構(gòu),第二是統(tǒng)一了業(yè)務(wù)系統(tǒng)的部署架構(gòu),第三是極大地減少了復(fù)雜的業(yè)務(wù)系統(tǒng)運(yùn)維,少量的人員就可以支持大量的業(yè)務(wù)系統(tǒng)的運(yùn)維工作,同時(shí),通過(guò)平臺(tái)的資源自動(dòng)伸縮、微服務(wù)治理能力,實(shí)現(xiàn)了智能化的業(yè)務(wù)運(yùn)行、運(yùn)維和業(yè)務(wù)治理。
搭建云原生運(yùn)維體系非一蹴而就,需要循序漸進(jìn),在安全可控的基礎(chǔ)上逐步擴(kuò)展。在技術(shù)層面,合適的云原生技術(shù)平臺(tái)可以幫助企業(yè)釋放運(yùn)維的巨大壓力,并保證安全穩(wěn)定。我們相信,在數(shù)字化轉(zhuǎn)型的大背景下,減少人力參與的智能運(yùn)維勢(shì)必會(huì)成為未來(lái)IT運(yùn)維的發(fā)展方向。我們也期待著能夠幫助更多企業(yè)實(shí)現(xiàn)云原生時(shí)代的智能運(yùn)維進(jìn)階。