王海慶 楊永寧 白姍
摘? 要:基于泛在電力物聯(lián)網(wǎng)設(shè)備,借助K3s技術(shù)提供了應(yīng)用創(chuàng)建管理、編排手段結(jié)合系統(tǒng)本身實(shí)現(xiàn)資源的動(dòng)態(tài)擴(kuò)容,資源調(diào)度技術(shù),實(shí)現(xiàn)了加入邊緣計(jì)算設(shè)備這種在靠近物或數(shù)據(jù)源頭的最近的一側(cè),采用網(wǎng)絡(luò)、計(jì)算、存儲(chǔ)、應(yīng)用、編排等核心能力為一體的資源編排平臺(tái),就近提供最近端服務(wù)編排的技術(shù)能力。
關(guān)鍵詞:電力? 容器? 物聯(lián)網(wǎng)? K3s? Kubernete? 容器? 邊緣計(jì)算
中圖分類(lèi)號(hào):TM74 ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2019)12(a)-0011-03
Abstract: Based on the equipment of ubiquitous power Internet of things, K3s technology provides the means of application creation, management and arrangement, and realizes the dynamic expansion of resources in combination with the system itself. Resource scheduling technology realizes the addition of edge computing equipment, which is on the nearest side near the object or data source, using network, calculation, storage, application and arrangement. Resource orchestration platform, which integrates core competence and other core competencies, provides the technical capability of nearest service orchestration.
Key Words: Power; Containers; Internet of Things; k3s; Kubernetes; Edge Computing
目前,隨著電力市場(chǎng)的快速啟動(dòng)及智能電網(wǎng)的推廣,電力系統(tǒng)的業(yè)務(wù)發(fā)展目前來(lái)看已經(jīng)非常迅速,因此這也使得電力調(diào)度運(yùn)行所需的數(shù)據(jù)變得越來(lái)越大,云技術(shù)、Docker技術(shù)、Edge計(jì)算、IoT物聯(lián)網(wǎng)和區(qū)塊鏈的興起,將它們應(yīng)用到電力行業(yè)中,已成為未來(lái)電力行業(yè)的發(fā)展重要方向。
云技術(shù)是指在公網(wǎng)或局域網(wǎng)內(nèi)將軟硬件、網(wǎng)絡(luò)、存儲(chǔ)等系列資源統(tǒng)一管理起來(lái),實(shí)現(xiàn)數(shù)據(jù)的計(jì)算、儲(chǔ)存、處理和共享的一種資源管理技術(shù)。Docker技術(shù)、虛擬化技術(shù)、容器編排技術(shù)Kubernetes已經(jīng)成為被大家廣泛認(rèn)可的系統(tǒng)資源共享方式,Docker技術(shù)可以在按需構(gòu)建系統(tǒng)應(yīng)用實(shí)例的過(guò)程當(dāng)中為軟件系統(tǒng)管理員提供極大的便利性和靈活性,更為系統(tǒng)帶來(lái)高效的運(yùn)維能力。
邊緣計(jì)算是指在靠近需要監(jiān)控?cái)?shù)據(jù)的源頭,采用網(wǎng)絡(luò)資源、計(jì)算資源、存儲(chǔ)資源、應(yīng)用核心能力為一體的開(kāi)放平臺(tái)系統(tǒng),就近提供數(shù)據(jù)處理服務(wù)和統(tǒng)計(jì)服務(wù)。在這個(gè)系統(tǒng)中應(yīng)用程序在邊緣端直接執(zhí)行,因此可以產(chǎn)生更快的網(wǎng)絡(luò)服務(wù)響應(yīng),可以極大地滿(mǎn)足行業(yè)在實(shí)時(shí)業(yè)務(wù)方面的基本需求。邊緣計(jì)算位于物理實(shí)體資源和工業(yè)連接之間。而在云中,用戶(hù)仍然可以通過(guò)Web界面的方式訪問(wèn)邊緣計(jì)算的歷史記錄數(shù)據(jù)。
物聯(lián)網(wǎng)是以海量的微型設(shè)備為基礎(chǔ)(如便宜的樹(shù)莓派arm設(shè)備)、結(jié)合傳統(tǒng)應(yīng)用與新興的應(yīng)用軟件的全球性網(wǎng)絡(luò)服務(wù)系統(tǒng),它將是繼計(jì)算機(jī)通信網(wǎng)絡(luò)技術(shù)、互聯(lián)網(wǎng)技術(shù)與移動(dòng)互聯(lián)網(wǎng)技術(shù)之后,再一次給全球信息產(chǎn)業(yè)帶來(lái)一次科技浪潮,給高速、信息化、便利的生活帶來(lái)了一次極大的市場(chǎng)機(jī)遇。
K3s是一種精簡(jiǎn)的Kubernetes容器管理平臺(tái),它保留了大部分K8s的功能,并為了適應(yīng)邊緣計(jì)算的極端工作條件,大大地簡(jiǎn)化了系統(tǒng)部署過(guò)程和系統(tǒng)資源的消耗。
為此,論文提出一種將基于K3s的邊緣計(jì)算在泛在電力物聯(lián)網(wǎng)的方法。以Docker技術(shù)、K3s平臺(tái)、物聯(lián)網(wǎng)技術(shù)和邊緣計(jì)算為基礎(chǔ)并能融合Arm等硬件設(shè)備,有望實(shí)現(xiàn)在市場(chǎng)前景非常廣闊的泛在電力物聯(lián)網(wǎng)的業(yè)務(wù)中實(shí)現(xiàn)資源快速和有效的管理,并能提供安全、穩(wěn)定、靈活、海量的邊端Arm設(shè)備的在線(xiàn)管理。
1? Kubernetes容器編排工具
首先,Kubernetes是谷歌公司開(kāi)源的容器資源編排和管理工具,主要分4個(gè)部分簡(jiǎn)要說(shuō)明一下。
首先,Kubernetes是一個(gè)最近幾年才出現(xiàn)的基于容器技術(shù)的分布式架構(gòu)技術(shù)解決方案。這個(gè)方案雖然剛出來(lái)沒(méi)有幾年的時(shí)間,但它是Google公司十幾年以來(lái)大規(guī)模編排、應(yīng)用、調(diào)度容器技術(shù)的重要技術(shù)成果。目的是實(shí)現(xiàn)資源的高度自動(dòng)化部署,以及實(shí)現(xiàn)跨多個(gè)數(shù)據(jù)中心的資源利用率的最大化。
其次,如果我們的系統(tǒng)架構(gòu)設(shè)計(jì)遵循了Kubernetes的設(shè)計(jì)思路,那么傳統(tǒng)軟件架構(gòu)中那些和普通業(yè)務(wù)沒(méi)有關(guān)聯(lián)的底層代碼或插件模塊,都可以立即從我們的設(shè)計(jì)思路中消失,我們不用再費(fèi)心于負(fù)載均衡器LB的選型(軟件或者硬件)和部署實(shí)施、運(yùn)維問(wèn)題,不必再考慮引入或開(kāi)發(fā)一個(gè)非常復(fù)雜的服務(wù)治理框架,不必再關(guān)心服務(wù)的監(jiān)控和故障的處理模塊的功能開(kāi)發(fā)。總之,使用Kubernetes提供的容器編排技術(shù),我們不僅節(jié)省了不少于40%的開(kāi)發(fā)成本,還可以將剩余的主要精力集中于業(yè)務(wù)本身而不是框架中,而且由于Kubernetes供了強(qiáng)大的自動(dòng)化部署、編排、監(jiān)控、事件機(jī)制等技術(shù),因此系統(tǒng)后期運(yùn)維的難度和成本都要大幅度降低。
再次,Kubernetes是一個(gè)開(kāi)源的軟件開(kāi)發(fā)平臺(tái)。與J2EE不同的是,它不局限于任何一種編程語(yǔ)言,更沒(méi)有限定任何編程接口,所以不論是用PHP,Java、Go Lang、C++還是用Python編寫(xiě)的Web服務(wù)、后臺(tái)服務(wù),都可以被映射為Kubernetes的Service服務(wù),并可以設(shè)置是不是可以通過(guò)標(biāo)準(zhǔn)的TCP通信協(xié)議進(jìn)行交互(如采用ClusterPort、NodePort方式)。此外,Kubernetes平臺(tái)對(duì)現(xiàn)有的編程語(yǔ)言的環(huán)境、編程框架的選擇、中間件的服務(wù)沒(méi)有任何侵入性修改,因此現(xiàn)有的軟件系統(tǒng)也很容易進(jìn)行改造升級(jí)和制作鏡像,并遷移到Kubernetes平臺(tái)上進(jìn)行部署。
最后,Kubernetes是一個(gè)功能齊全的分布式軟件系統(tǒng)支撐平臺(tái)。Kubernetes具有完善的集群管理能力,包括多種安全防護(hù)和準(zhǔn)入機(jī)制、多租戶(hù)(Name Space)應(yīng)用支撐能力、非常透明的節(jié)點(diǎn)服務(wù)注冊(cè)機(jī)制和節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制,自帶智能負(fù)載均衡器,并提供強(qiáng)大的故障自我發(fā)現(xiàn)和修復(fù)能力、提供的服務(wù)滾動(dòng)升級(jí)(Deployment)和在線(xiàn)擴(kuò)容(Scale)能力、可擴(kuò)展的資源自動(dòng)調(diào)度機(jī)制(Auto Scale),以及多粒度的CPU、MEM資源配額管理能力(Request、Limit)。
當(dāng)了解了Kubernetes功能之后,我們使用Kubernetes會(huì)得到哪些好處呢?
首先,可以非常輕松地開(kāi)發(fā)一個(gè)復(fù)雜的軟件系統(tǒng)。以前可能需要很多人(其中可能還需要一些軟件架構(gòu)工程師)一起分工協(xié)作和技術(shù)架構(gòu)設(shè)計(jì),從而實(shí)現(xiàn)和運(yùn)維的分布式軟件系統(tǒng),在采用Kubernetes集群管理平臺(tái)解決方案之后,有可能只需幾個(gè)人甚至一個(gè)人的小團(tuán)隊(duì)就能輕松應(yīng)對(duì)。在這個(gè)小團(tuán)隊(duì)里,可能現(xiàn)在只需一名軟件架構(gòu)工程師負(fù)責(zé)系統(tǒng)中系統(tǒng)服務(wù)組件的架構(gòu)方面的設(shè)計(jì),幾名軟件開(kāi)發(fā)工程師負(fù)責(zé)功能業(yè)務(wù)代碼的開(kāi)發(fā),一名系統(tǒng)運(yùn)維工程師負(fù)責(zé)Kubernetes集群管理平臺(tái)的部署和運(yùn)維,因?yàn)镵ubernetes集群管理平臺(tái)已經(jīng)幫我們做了很多,我們只需要使用好此平臺(tái)即可。
其次,我們可以全面、快速、靈活地?fù)肀⒎?wù)架構(gòu)。目前微服務(wù)架構(gòu)的核心是將一個(gè)巨大的單體應(yīng)用根據(jù)一定邏輯分解為很多小的互相連接的微服務(wù),每一個(gè)微服務(wù)可能由一個(gè)或多個(gè)實(shí)例副本進(jìn)行支撐,而副本的數(shù)量還可以隨著系統(tǒng)的負(fù)荷變化而自動(dòng)地進(jìn)行調(diào)整。微服務(wù)架構(gòu)使得每一個(gè)服務(wù)都可以作為獨(dú)立單元進(jìn)行獨(dú)立開(kāi)發(fā)、升級(jí)迭代和擴(kuò)展,因此微服務(wù)架構(gòu)的系統(tǒng)具備很高的系統(tǒng)穩(wěn)定性和軟件快速迭代開(kāi)發(fā)能力,使開(kāi)發(fā)者更加可以自由選擇開(kāi)發(fā)技術(shù)。
再次,可以隨時(shí)隨地將軟件系統(tǒng)整體部署到公有云上。Kubernetes最初的設(shè)計(jì)目的是讓更多的用戶(hù)的應(yīng)用可以運(yùn)行在Google自家的公有云服務(wù)中,華為,阿里以及騰訊先后宣布支持Kubernetes集群管理平臺(tái),未來(lái)會(huì)有更多的公有云公司和私有云公司支持Kubernetes平臺(tái)。同時(shí),在Kubernetes的系統(tǒng)架構(gòu)方案中對(duì)底層網(wǎng)絡(luò)的細(xì)節(jié)是完全透明的,基于服務(wù)(Service)的虛擬IP地址(Cluster IP)的設(shè)計(jì)思路讓系統(tǒng)架構(gòu)與底層的硬件拓?fù)錈o(wú)關(guān),因此我們無(wú)須改變運(yùn)行期的文件配置,就能將現(xiàn)有的應(yīng)用系統(tǒng)從當(dāng)前物理機(jī)的環(huán)境快速遷移到公有云或私有云系統(tǒng)上。
然后,Kubernetes平臺(tái)自帶的服務(wù)彈性負(fù)載均衡機(jī)制可以讓我們非常輕松應(yīng)對(duì)突發(fā)流量(重大節(jié)日、周末等)。在服務(wù)運(yùn)行峰期,我們可以選擇在公有云的平臺(tái)服務(wù)中快速擴(kuò)容某些服務(wù)的實(shí)例副本數(shù)量以提升系統(tǒng)的吞吐容量,這樣不僅大大節(jié)省了公司的硬件投人,而且還能改善用戶(hù)體驗(yàn)。比如現(xiàn)在中國(guó)鐵路的12306購(gòu)票系統(tǒng),在客流高峰期(如節(jié)假日、周末)就租用了阿里云進(jìn)行流量分流。
最后,Kubernetes平臺(tái)超強(qiáng)的資源橫向擴(kuò)容能力可以讓我們的服務(wù)競(jìng)爭(zhēng)力大大提升。對(duì)于互聯(lián)網(wǎng)公司來(lái)說(shuō),用戶(hù)規(guī)模等價(jià)于公司的命脈,因此橫向資源擴(kuò)容能力是衡量一個(gè)互聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)競(jìng)爭(zhēng)的非常重要的指標(biāo)。我們利用Kubernetes提供的系統(tǒng)平臺(tái),不用修改任何代碼,就能將一個(gè)Kubernetes集群從只包含幾個(gè)節(jié)點(diǎn)的小集群平滑擴(kuò)展到擁有上百個(gè)節(jié)點(diǎn)的大集群,甚至可以在線(xiàn)完成集群擴(kuò)容任務(wù)。而且只要微服務(wù)架構(gòu)設(shè)計(jì)得合理,更能夠在云環(huán)境中進(jìn)行負(fù)載均衡和彈性伸縮,系統(tǒng)自然而然地就能夠承受大量用戶(hù)同時(shí)并發(fā)訪問(wèn)帶來(lái)的巨大的流量壓力。
2? K3s輕量級(jí)Kubernetes工具
K3s是一個(gè)輕量級(jí)的Kubernetes集群,它是Rancher Lab公司開(kāi)發(fā)的一個(gè)新的產(chǎn)品,目的是在資源非常有限的設(shè)備上面跑Kubernetes。它的最大特點(diǎn)就是小,二進(jìn)制包只有不到50MB,只需要0.5GB的內(nèi)存就能運(yùn)行起來(lái)。K3s主要的應(yīng)用在Edge邊緣計(jì)算,IoT物聯(lián)網(wǎng),CI持續(xù)集成和運(yùn)行在ARM架構(gòu)上等場(chǎng)景,ARM架構(gòu)方面比如在樹(shù)莓派上面就能跑。
K3s的工作原理介紹如下:K3s其實(shí)可以看成是一個(gè)精簡(jiǎn)版的Kubernetes,例如它把所有非正式功能都去掉了,所有在開(kāi)發(fā)的storage driver功能、plugin插件等也去掉了,所以整個(gè)二進(jìn)制可執(zhí)行文件編譯出來(lái)會(huì)變的非常小。K3s對(duì)宿主機(jī)的操作系統(tǒng)的依賴(lài)幾乎很少。K3s已經(jīng)使用了containerd進(jìn)程替換Docker服務(wù)來(lái)做runtime,所以我們可以不再安裝Docker。只需要保留containerd即可。containerd本身就是Docker的一部分,因此完全兼容我們所熟悉的Docker image。
K3s主要特點(diǎn)簡(jiǎn)單介紹如下。
(1)精簡(jiǎn)。
“K3s”的名稱(chēng)含義是指“5 Less Than K8s”,它的二進(jìn)制大小、對(duì)宿主機(jī)資源的需求、安裝復(fù)雜度、使用難度等都極其的輕量和易于使用。
(2)適用于眾多場(chǎng)景。
對(duì)于制造業(yè)、零售、電力、電信、金融、公共事業(yè)、銀行等行業(yè)?;蚴侨魏握J(rèn)可K8s是管理邊緣計(jì)算的理想平臺(tái),但難以在邊緣設(shè)備中尤其arm設(shè)備中投入大量的物理資源來(lái)運(yùn)行一個(gè)完整的Kubernetes平臺(tái)的用戶(hù)而言,K3s都是具有巨大進(jìn)步意義的,對(duì)于整個(gè)邊緣計(jì)算平臺(tái)而言更是一個(gè)創(chuàng)造性新產(chǎn)品。
(3)支持ARM設(shè)備。
目前緣設(shè)備是以ARM設(shè)備居多。K3s被打包為一個(gè)沒(méi)有任何主機(jī)依賴(lài)的單個(gè)二進(jìn)制文件,大小只有不到50M,卻包含運(yùn)行Kubernetes所需的一切runtime環(huán)境,包括容器runtime環(huán)境和任何重要的主機(jī)實(shí)用軟件程序,如socat、iptables、du等。只需要執(zhí)行一條命令,您就可以輕松配置或者快速升級(jí)單節(jié)點(diǎn)K3s集群,或是向集群添加更多的節(jié)點(diǎn)。非常低的資源消耗,而且操作簡(jiǎn)單,易于上手,以及最終的刪繁就簡(jiǎn)的理念,加上最重要的、創(chuàng)造性地滿(mǎn)足Kubernetes在edge邊緣計(jì)算的場(chǎng)景需求,讓K3s剛推出來(lái)就受到了眾多互聯(lián)網(wǎng)企業(yè),尤其開(kāi)源用戶(hù)、IT媒體、技術(shù)社區(qū)等的關(guān)注以及肯定。
3? 結(jié)語(yǔ)
隨著電力物聯(lián)網(wǎng)需求的不斷出現(xiàn),將Kubernetes編排技術(shù)移植到edge邊緣計(jì)算場(chǎng)景是個(gè)非常好的選擇,Kubernetes擁有很好的生態(tài)系統(tǒng),利用Docker技術(shù)能夠天然屏蔽硬件差異,帶來(lái)軟件部署管理上的極大便捷。Docker容器技術(shù)尤其是谷歌公司開(kāi)源的Kubernetes在數(shù)據(jù)中心層面愈發(fā)成熟,但是因?yàn)檫吘売?jì)算的特點(diǎn),將完整的Kubernetes移植到邊緣計(jì)算場(chǎng)景,目前來(lái)看還是存在諸多問(wèn)題,比如目前K8S是不支持arm設(shè)備的。而且對(duì)計(jì)算資源的消耗尤其是內(nèi)存是邊緣設(shè)備無(wú)法承受的,并且邊緣設(shè)備目前是以ARM架構(gòu)居多。而這些正是K3s的當(dāng)初設(shè)計(jì)的初衷并且解決的問(wèn)題。
參考文獻(xiàn)
[1] 佚名.邊緣計(jì)算產(chǎn)業(yè)聯(lián)盟正式成立[J].智慧工廠,2016(11):28.
[2] 張建敏,謝偉良,楊峰義,等.移動(dòng)邊緣計(jì)算技術(shù)及其本地分流方案[J].電信科學(xué),2016,32(7):132-139.
[3] 高宇,陶宏才.基于Kubernetes的微服務(wù)業(yè)務(wù)拓?fù)浒l(fā)現(xiàn)及業(yè)務(wù)評(píng)價(jià)[J].成都信息工程大學(xué)學(xué)報(bào),2019,34(3):223-227.
[4] 張城城.基于Docker的容器集群管理平臺(tái)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2019.
[5] 盛樂(lè)標(biāo),游偉倩,張予倩,等.Kubernetes集群的高可用與負(fù)載均衡設(shè)計(jì)[J].電子技術(shù)與軟件工程,2019(7):1-3.
[6] 郭建偉.部署和管理Kubernetes集群[J].網(wǎng)絡(luò)安全和信息化,2019(2):72-76.
[7] 王駿翔,郭磊.基于Kubernetes和Docker技術(shù)的企業(yè)級(jí)容器云平臺(tái)解決方案[J].上海船舶運(yùn)輸科學(xué)研究所學(xué)報(bào),2018,41(3):51-57.