劉宏娟,黃 煒,李文吉,邵治濤,胡 倩
(1.自然資源部航空地球物理與遙感地質(zhì)重點(diǎn)實(shí)驗(yàn)室,北京 100083;2.中國(guó)自然資源航空物探遙感中心, 北京 100083)
衛(wèi)星遙感數(shù)據(jù)的處理及應(yīng)用需要強(qiáng)大的算力支持,目前在用的數(shù)據(jù)處理平臺(tái)以單體服務(wù)器和虛擬化平臺(tái)為主。隨著我國(guó)航天事業(yè)的高速發(fā)展,衛(wèi)星遙感也進(jìn)入了“大數(shù)據(jù)”時(shí)代,一方面,衛(wèi)星遙感行業(yè)按照地質(zhì)調(diào)查整體規(guī)劃要向著一張圖、一站式、平臺(tái)化的方向發(fā)展。另一方面,衛(wèi)星遙感數(shù)據(jù)的顯著特點(diǎn)是多元異構(gòu),除了基本的衛(wèi)星影像之外還包含了時(shí)間、空間、頻譜等復(fù)雜的地質(zhì)屬性信息,衛(wèi)星遙感的數(shù)據(jù)類型日漸豐富,數(shù)據(jù)總量呈現(xiàn)海量增長(zhǎng)趨勢(shì),對(duì)硬件資源動(dòng)態(tài)分配、彈性擴(kuò)展、快速部署等方面均提出了更高要求。因此,探索利用云計(jì)算、大數(shù)據(jù)等新技術(shù)構(gòu)建更加高效便捷的數(shù)據(jù)處理平臺(tái)近年來(lái)在衛(wèi)星遙感行業(yè)愈發(fā)重要,并已在地質(zhì)調(diào)查的其他領(lǐng)域內(nèi)取得了進(jìn)展[1-2]。本文引入了容器概念以及Kubernetes容器集群管理系統(tǒng),以容器為基本單位代替虛擬機(jī)部署應(yīng)用服務(wù),充分發(fā)揮容器輕便快捷、彈性擴(kuò)展、便于維護(hù)的優(yōu)勢(shì),嘗試構(gòu)建符合衛(wèi)星遙感行業(yè)特點(diǎn)的容器云平臺(tái)[3]。利用Kubernetes對(duì)容器的調(diào)度管理機(jī)制,將計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)等服務(wù)器硬件資源虛擬化后動(dòng)態(tài)分配給容器,為運(yùn)行在容器內(nèi)的衛(wèi)星遙感應(yīng)用服務(wù)提供高效可靠、輕便統(tǒng)一的“一站式”服務(wù)。
容器(Container)技術(shù)是一種輕量級(jí)的操作系統(tǒng)層虛擬化技術(shù),借鑒了遠(yuǎn)洋運(yùn)輸里“集裝箱”的理念。一般而言,部署一個(gè)應(yīng)用需要提前準(zhǔn)備好物理主機(jī)、操作系統(tǒng)以及各種中間件等軟硬件環(huán)境,虛擬化部署一定程度上實(shí)現(xiàn)了硬件資源復(fù)用,但沒有解決應(yīng)用層問題,針對(duì)每一項(xiàng)應(yīng)用部署還是需要單獨(dú)搭建一整套依賴的操作系統(tǒng)、應(yīng)用環(huán)境等。容器技術(shù)的原理是基于Linux的Namespace和Cgroup機(jī)制,將應(yīng)用打包并虛擬化封裝出了一套內(nèi)核輕量級(jí)的操作系統(tǒng)(NameSpace區(qū)分隔離容器,Cgroup管理控制系統(tǒng)資源)[4],通過(guò)容器引擎共享操作系統(tǒng),只需在容器內(nèi)部打包必要的Lib/Bin等操作系統(tǒng)文件,具有極其輕量、秒級(jí)部署、易于移植、彈性伸縮等特點(diǎn),極大提高了部署和運(yùn)維效率[5]。
Docker是一個(gè)基于LXC(Linux Container)的開源容器引擎,將與應(yīng)用相關(guān)的依賴項(xiàng)(包括環(huán)境、程序、文件)打包成鏡像部署在物理機(jī)中,主要包括容器(Container)、鏡像(Image)以及倉(cāng)庫(kù)(Repository)3個(gè)部分。由于容器是應(yīng)用程序的抽象,將各類應(yīng)用服務(wù)變成模塊化的組件,容器可以在相互隔離的物理環(huán)境中獨(dú)立運(yùn)行,物理機(jī)上可以同時(shí)運(yùn)行多個(gè)容器,容器之間共享操作系統(tǒng)。利用鏡像倉(cāng)庫(kù),運(yùn)維人員可以管理不同的鏡像版本,靈活配置、快速部署。由于Docker標(biāo)準(zhǔn)化、輕量級(jí)、易遷移擴(kuò)展的優(yōu)勢(shì),Docker已發(fā)展成了容器技術(shù)的代名詞,是目前應(yīng)用最廣泛的容器引擎[6]。
虛擬化能更好地利用硬件資源,同一臺(tái)物理主機(jī)上可以部署運(yùn)行多個(gè)虛擬機(jī),虛擬機(jī)之間資源和進(jìn)程彼此隔離,解決了傳統(tǒng)模式下同一臺(tái)物理機(jī)上的應(yīng)用服務(wù)搶奪資源問題。虛擬機(jī)是在物理主機(jī)中虛擬出一臺(tái)完整計(jì)算機(jī),在虛擬化的硬件之上運(yùn)行所有組件(包括自身操作系統(tǒng)),而容器則是直接將物理主機(jī)的操作系統(tǒng)虛擬出獨(dú)立的用戶空間,每個(gè)用戶空間分配有各自的CPU、內(nèi)存等計(jì)算資源供容器使用,容器之間彼此獨(dú)立但共享物理主機(jī)的操作系統(tǒng)[7]。因而,容器的啟動(dòng)更迅速,創(chuàng)建更加簡(jiǎn)便快捷,能支持大規(guī)模應(yīng)用服務(wù)的快速部署更新。虛擬化與容器的差異對(duì)比如圖1所示。
圖1 虛擬化與容器對(duì)比
隨著容器化部署的應(yīng)用不斷增多,容器和物理主機(jī)的集群規(guī)模也隨之不斷刷新,Docker 逐漸無(wú)法滿足大規(guī)模容器集群的管理需求。Kubernetes是Google公司以Docker為基礎(chǔ)、面向無(wú)服務(wù)場(chǎng)景的開源容器集群管理系統(tǒng),能夠?yàn)槿萜骰膽?yīng)用服務(wù)提供資源調(diào)度、自動(dòng)重啟、負(fù)載均衡、服務(wù)發(fā)現(xiàn)等基礎(chǔ)功能。Kubernetes支持跨物理主機(jī)管理容器,大大降低了容器平臺(tái)的維護(hù)難度,同時(shí)還為開發(fā)人員提供了一套R(shí)ESTful接口,為后續(xù)開發(fā)拓展打下了良好基礎(chǔ)。鑒于 Kubernetes強(qiáng)大的開源社區(qū)支撐以及眾多成功應(yīng)用的案例,是當(dāng)下較為主流的容器管理平臺(tái)[8-9]。
基于 Kubernetes衛(wèi)星遙感數(shù)據(jù)容器云平臺(tái)的邏輯功能框圖如圖 2 所示,包括物理層、Kubernetes 平臺(tái)層和應(yīng)用層3部分[10-11]。為保障衛(wèi)星遙感業(yè)務(wù)正常運(yùn)行,容器云平臺(tái)之外還需要配套相應(yīng)的支撐服務(wù)。本文選擇了兩個(gè)典型支撐服務(wù)作為代表:分布式存儲(chǔ)和ES(Elastic Search)集群。
圖2 容器云平臺(tái)邏輯架構(gòu)
物理層主要是指由實(shí)體服務(wù)器池化虛擬出來(lái)的物理資源(包括計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源),這些物理資源會(huì)被上層的 Kubernetes調(diào)度并分配給不同的容器。Kubernetes層是整個(gè)容器云平臺(tái)的核心,統(tǒng)一管理控制容器及應(yīng)用層服務(wù)的生命周期、資源分配,實(shí)時(shí)監(jiān)控管理容器及部署在容器中的應(yīng)用服務(wù)[12]。應(yīng)用層主要是將衛(wèi)星遙感應(yīng)用軟件抽象成一個(gè)個(gè)服務(wù)并容器化地部署到容器中,每個(gè)容器擁有獨(dú)立的物理資源,容器彼此之間共享物理主機(jī)的操作系統(tǒng),構(gòu)成了針對(duì)特定應(yīng)用服務(wù)的輕量?jī)?nèi)核級(jí)“虛擬機(jī)”[13]。
對(duì)于業(yè)務(wù)支撐功能,分布式存儲(chǔ)系統(tǒng)為容器云平臺(tái)提供統(tǒng)一的外置存儲(chǔ)服務(wù),主要用于海量衛(wèi)星遙感數(shù)據(jù)的存儲(chǔ)、訪問、備份,既簡(jiǎn)化了應(yīng)用層的數(shù)據(jù)存儲(chǔ)復(fù)雜度,也保證了數(shù)據(jù)的一致性、可靠性。ElasticSearch為衛(wèi)星遙感應(yīng)用服務(wù)提供數(shù)據(jù)檢索服務(wù),其索引能力強(qiáng)大,且支持多種查詢類型,在地理信息數(shù)據(jù)索引查詢方面優(yōu)勢(shì)明顯。ES集群結(jié)合衛(wèi)星遙感數(shù)據(jù)特點(diǎn)進(jìn)行了單獨(dú)優(yōu)化設(shè)計(jì),能夠大幅提高檢索效率。由于上層應(yīng)用服務(wù)需要頻繁地檢索使用衛(wèi)星遙感數(shù)據(jù),因此將檢索功能獨(dú)立部署于容器云平臺(tái)之外,通過(guò)接口提供服務(wù)。容器云平臺(tái)使用多種接口協(xié)議進(jìn)行訪問: ES Rest API、ES SQL、Impala SQL、Hive SQL、HBase MapReduce,也充分體現(xiàn)了平臺(tái)架構(gòu)的開放性。
Kubernetes 主要由控制節(jié)點(diǎn)(Master node)和工作節(jié)點(diǎn)(Worker node)兩類節(jié)點(diǎn)組成,其系統(tǒng)架構(gòu)如圖 3所示。[14]控制節(jié)點(diǎn)包括 API服務(wù)器、控制管理器、調(diào)度器和 etcd 鍵值數(shù)據(jù)庫(kù)等組件,負(fù)責(zé)全局決策、調(diào)度控制、事件響應(yīng)等平臺(tái)管理功能。[15-16]工作節(jié)點(diǎn)主要包括 kubelet和 kube-proxy兩個(gè)組件,用以維護(hù)工作節(jié)點(diǎn)上運(yùn)行的每個(gè)Pod ,并為每個(gè)節(jié)點(diǎn)提供必要的運(yùn)行環(huán)境。
圖3 kubernetes 架構(gòu)
本文采用了 Kubernetes1.21 版本,使用了六臺(tái)物理主機(jī)(centos7.9操作系統(tǒng))構(gòu)建容器云平臺(tái)。所有物理主機(jī)均需要安裝docker,以指定yum 源方式安裝kubelet、kubectl 等組件,此處使用阿里云的源,具體硬件配置如表1所示。
表1 容器云平臺(tái)硬件配置
應(yīng)用服務(wù)運(yùn)行在容器之中,需要容器以極高的可靠性保障業(yè)務(wù)的連續(xù)性。Kubernetes 是容器云平臺(tái)的核心,控制節(jié)點(diǎn)是Kubernets管理功能的關(guān)鍵所在,其中最關(guān)鍵是的etcd鍵值數(shù)據(jù)庫(kù),負(fù)責(zé)保存各節(jié)點(diǎn)的關(guān)鍵數(shù)據(jù),用于配置共享和服務(wù)發(fā)現(xiàn)。針對(duì)系統(tǒng)中的關(guān)鍵節(jié)點(diǎn)和關(guān)鍵功能,采用“多控制節(jié)點(diǎn)+ etcd 集群”的方式,來(lái)提高整個(gè)系統(tǒng)的高可用性和安全性。[17-18]Kubernetes 高可用集群架構(gòu)如圖4所示。
圖4 kubernetes 高可用集群架構(gòu)
Kubernetes 的工作節(jié)點(diǎn)通過(guò)內(nèi)部的負(fù)載均衡機(jī)制連接到控制節(jié)點(diǎn)上,多控制節(jié)點(diǎn)模式下只有所有控制節(jié)點(diǎn)同時(shí)故障才會(huì)影響平臺(tái)運(yùn)行。多控制節(jié)點(diǎn)的實(shí)現(xiàn)是在控制管理器、調(diào)度器修改leader-elect參數(shù)。在多控制節(jié)點(diǎn)模式下,系統(tǒng)會(huì)自動(dòng)選舉出主控制節(jié)點(diǎn)(master leader),如果主控制節(jié)點(diǎn)宕機(jī)導(dǎo)致系統(tǒng)異常,則會(huì)自動(dòng)選舉出新的主控制節(jié)點(diǎn)[19-20]。
etcd集群借鑒了Hadoop中ZooKeeper的設(shè)計(jì)理念,其核心原理是使用Raft協(xié)議保障節(jié)點(diǎn)的一致性[21]。etcd集群中只有1個(gè)有效的主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)處理所有來(lái)自系統(tǒng)的寫操作并對(duì)狀態(tài)機(jī)進(jìn)行維護(hù),通過(guò)Raft協(xié)議保證主節(jié)點(diǎn)對(duì)狀態(tài)機(jī)的改動(dòng)會(huì)可靠同步到集群中的其他節(jié)點(diǎn)。
容器中的數(shù)據(jù)是非永久保存的,當(dāng)容器宕機(jī)崩潰時(shí),kubelet會(huì)以鏡像的初始狀態(tài)重新啟動(dòng)容器,容器中的數(shù)據(jù)將丟失。為保障容器數(shù)據(jù)的存儲(chǔ)安全,Kubernetes提供了兩套機(jī)制:一是為容器分配臨時(shí)存儲(chǔ)卷,二是通過(guò)容器存儲(chǔ)接口Container Storage Interface(CSI)提供外部存儲(chǔ)服務(wù)[22-23]。衛(wèi)星遙感數(shù)據(jù)總量大需要長(zhǎng)期保存,本文采用第二種方法,利用分布式存儲(chǔ)的核心組件之一HDFS NFS Gateway,將HDFS存儲(chǔ)空間通過(guò)CSI機(jī)制以NFS的形式掛載至Kubernetes,為容器云平提供外部獨(dú)立的分布式存儲(chǔ)服務(wù)。外部存儲(chǔ)接口主要依靠PV和PVC實(shí)現(xiàn),其中PV是底層網(wǎng)絡(luò)共享存儲(chǔ)的抽象,將共享存儲(chǔ)定義為一種供容器消費(fèi)使用的資源對(duì)象,而PVC是對(duì)存儲(chǔ)資源的申請(qǐng),容器可以通過(guò)PVC的形式申請(qǐng)?zhí)囟ǖ拇鎯?chǔ)空間和訪問模式。
衛(wèi)星遙感數(shù)據(jù)單幅數(shù)據(jù)量大且有其獨(dú)特的數(shù)據(jù)格式,因此在接入容器云平臺(tái)時(shí)需要進(jìn)行適當(dāng)改造。以GF7號(hào)衛(wèi)星為例,原始數(shù)據(jù)以tar.gz壓縮包形式保存約為2G,其中衛(wèi)星拍攝的影像數(shù)據(jù)(jpg格式)占單幅數(shù)據(jù)總量的90%以上,僅在數(shù)據(jù)處理時(shí)才進(jìn)行讀寫操作,而相關(guān)的衛(wèi)星數(shù)據(jù)參數(shù)以xml格式保存,在數(shù)據(jù)存儲(chǔ)、查詢、篩選、讀寫、處理時(shí)需要頻繁訪問。從讀取效率、備份安全、存儲(chǔ)擴(kuò)展等方面考慮,衛(wèi)星遙感數(shù)據(jù)不適合直接存儲(chǔ)在容器云平臺(tái)內(nèi)。因此在采用外接分布式存儲(chǔ)的解決方案下,衛(wèi)星遙感影像數(shù)據(jù)經(jīng)處理后存入獨(dú)立部署的HDFS分布式存儲(chǔ)系統(tǒng),通過(guò)定義PV、PVC實(shí)現(xiàn)存儲(chǔ)系統(tǒng)與容器云平臺(tái)的對(duì)接。
為了提高查詢效率,xml衛(wèi)星數(shù)據(jù)參數(shù)存入HFDS分布式存儲(chǔ)系統(tǒng)中的HBase數(shù)據(jù)庫(kù)中,jpg衛(wèi)星影像則直接存入HDFS分布式存儲(chǔ)系統(tǒng),存儲(chǔ)路徑保存在對(duì)應(yīng)的HBase數(shù)據(jù)庫(kù)中。HBase數(shù)據(jù)庫(kù)目錄直接加載至Kubernets的臨時(shí)存儲(chǔ)卷中供相關(guān)容器訪問,需要讀寫衛(wèi)星影像數(shù)據(jù)時(shí),首先從HBase中查詢到保存路徑,再調(diào)用HFDS分布式存儲(chǔ)的接口進(jìn)行操作。定義PV、PVC并關(guān)聯(lián)至Kubernetes的主要配置命令如下:
[root@master~] mount -f nfs -0 ver=3, proto=tcp,nolock,noacl, sync 10.82.8.92:/
[root@master~] oc describe pv mypv1
[root@master~] oc get pv mypv1 -o json
[root@master~] cat newpv.json
[root@master~] oc creat -f newpv.json
[root@master~] oc creat -f newpvc1.json
[root@master~] oc get pv
本章重點(diǎn)對(duì)容器云平臺(tái)的性能效率進(jìn)行了簡(jiǎn)要測(cè)試比較,并進(jìn)一步結(jié)合當(dāng)前衛(wèi)星遙感行業(yè)現(xiàn)狀以及虛擬化平臺(tái)的應(yīng)用特性,分析了容器云平臺(tái)的應(yīng)用前景以及面臨的實(shí)際困難。
容器相較與虛擬機(jī)最大的優(yōu)勢(shì)在于輕量化內(nèi)核、快速化部署。以常用容器官方鏡像版本為測(cè)試對(duì)象,單一容器測(cè)試列表如表2所列。
表2 單一容器測(cè)試
其中啟動(dòng)時(shí)間是指容器由 Penning 狀態(tài)轉(zhuǎn)變?yōu)?Running 狀態(tài)所需的時(shí)間,測(cè)試時(shí)容器云平臺(tái)上沒有運(yùn)行其他非測(cè)試容器。根據(jù)測(cè)試結(jié)果可知,測(cè)試容器均能正常啟動(dòng),耗時(shí)均在3秒內(nèi)啟動(dòng)速度非???。多容器并行測(cè)試選擇把表2中的鏡像均啟動(dòng)100個(gè)容器,測(cè)試結(jié)果如表3所列。
表3 多容器測(cè)試
通過(guò)對(duì)比表2和表3的測(cè)試結(jié)果可以得知,隨著容器規(guī)模的擴(kuò)大,容器的啟動(dòng)速度并沒有顯著下降,平均啟動(dòng)時(shí)間都在3秒內(nèi),啟動(dòng)速度遠(yuǎn)超過(guò)虛擬機(jī)達(dá)到了快速部署的預(yù)期,為高并行應(yīng)用的開發(fā)部署創(chuàng)造了有利條件。
本項(xiàng)測(cè)試這要通過(guò)為衛(wèi)星遙感業(yè)務(wù)流程來(lái)驗(yàn)證容器云平臺(tái)的功能性,同時(shí)對(duì)比相同條件下虛擬機(jī)的性能效率。測(cè)試環(huán)境里HDFS分布式存儲(chǔ)系統(tǒng)中已導(dǎo)入260景GF7衛(wèi)星影像數(shù)據(jù)作為測(cè)試對(duì)象,分別在容器環(huán)境和虛擬環(huán)境下部署了基于Web的衛(wèi)星影像共享查詢系統(tǒng),查詢系統(tǒng)運(yùn)行后調(diào)用ElasticSearch查詢位于HDFS分布式存儲(chǔ)系統(tǒng)中的GF7衛(wèi)星影像數(shù)據(jù),具體測(cè)試內(nèi)容為以下兩項(xiàng):
1)遍歷查詢整個(gè)GF7測(cè)試數(shù)據(jù)庫(kù)中的所有衛(wèi)星影像數(shù)據(jù)。
(1) 試驗(yàn)礦樣中的主要金屬礦物為黃銅礦、孔雀石、自然銅、藍(lán)銅礦、褐鐵礦等;主要脈石礦物為石英,其次有碳酸鹽礦物和綠泥石、絹云母等。含銀礦物包括銀黝銅礦、輝銀礦、深紅銀礦及少量自然銀,銀大部分產(chǎn)于銅礦物中,而脈石礦物中含銀較少。
2)查詢GF7數(shù)據(jù)庫(kù)中左上角經(jīng)度在(40,49),且傳感器類型為mux的衛(wèi)星影像數(shù)據(jù)(即rt_lat為(40,49),且傳感器類型為sensorid='MUX')。
表4 業(yè)務(wù)測(cè)試
通過(guò)表4的測(cè)試結(jié)果可以看出,衛(wèi)星影像共享查詢系統(tǒng)部署在容器,并能夠正常調(diào)用且訪問外接分布式存儲(chǔ)系統(tǒng)內(nèi)的衛(wèi)星遙感影像數(shù)據(jù),充分證明容器云平臺(tái)功能正常,已經(jīng)可以初步實(shí)現(xiàn)對(duì)衛(wèi)星遙感數(shù)據(jù)的加工處理。對(duì)比衛(wèi)星影像共享查詢系統(tǒng)在容器與虛擬機(jī)中部署后,容器中的衛(wèi)星影像共享查詢系統(tǒng)在衛(wèi)星遙感影像數(shù)據(jù)查詢和讀寫速度略優(yōu)于虛擬化平臺(tái)。
1)微服務(wù):
微服務(wù)架構(gòu)是將單體應(yīng)用拆分成多個(gè)不同功能的微服務(wù)模塊,從而降低系統(tǒng)的耦合性、復(fù)雜度,更加便于開發(fā)人員部署維護(hù)。每個(gè)微服務(wù)部署到單獨(dú)容器中,服務(wù)之間可獨(dú)立開發(fā)部署,支持不同的開發(fā)語(yǔ)言,易于后期維護(hù)和功能拓展。目前最常見的微服務(wù)案例是Web服務(wù),基于B/S架構(gòu)的衛(wèi)星遙感應(yīng)用服務(wù)可以優(yōu)先考慮改造遷移至容器云平臺(tái)。
2)深度學(xué)習(xí):
深度學(xué)習(xí)在衛(wèi)星遙感方向上有著廣闊的應(yīng)用前景,比如基于影像的地質(zhì)災(zāi)害自動(dòng)識(shí)別、山體滑坡自動(dòng)監(jiān)測(cè)等。容器可以輕松解決機(jī)器訓(xùn)練過(guò)程中環(huán)境配置、資源分配等一系列問題,是當(dāng)前進(jìn)行深度學(xué)習(xí)算法研究所用的主流架構(gòu)。目前容器已支持TensorFlow、Caffe、Caffe2、PyTorch等主流深度學(xué)習(xí)的訓(xùn)練框架,能夠?yàn)樾l(wèi)星遙感數(shù)據(jù)的深度學(xué)習(xí)研究提供平臺(tái)與技術(shù)支持。
3)彈性伸縮:
對(duì)于一次性執(zhí)行運(yùn)算任務(wù),傳統(tǒng)模式單一任務(wù)占據(jù)整個(gè)服務(wù)器,造成了極大資源浪費(fèi),容器快速創(chuàng)建、靈活銷毀的特點(diǎn)更適用于這種按需使用的場(chǎng)景。需要運(yùn)算時(shí)創(chuàng)建容器執(zhí)行任務(wù),運(yùn)算完成后容器退出釋放其占有的硬件資源。
對(duì)于大規(guī)模并行計(jì)算任務(wù),容器云平臺(tái)能夠根據(jù)資源的負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)節(jié),避免了流量激增擴(kuò)容不及時(shí)資源耗宕機(jī),也避免了平時(shí)大量閑置資源浪費(fèi),提高了硬件資源利用率。
4)高效運(yùn)維:
通過(guò)鏡像管理運(yùn)維人員可以輕松地對(duì)平臺(tái)內(nèi)的容器及部署在容器內(nèi)的業(yè)務(wù)進(jìn)行部署管理。需要升級(jí)容器內(nèi)的業(yè)務(wù)時(shí),運(yùn)維人員只需選擇相應(yīng)鏡像版本和副本數(shù)量,即可實(shí)現(xiàn)自動(dòng)升級(jí)且業(yè)務(wù)平滑不中斷,升級(jí)后若有問題還可選擇回滾至舊版本。
1)速率瓶頸:
虛擬化與容器提升了物理主機(jī)的硬件資源利用率,代價(jià)則是更多的數(shù)據(jù)交互與網(wǎng)絡(luò)開銷。當(dāng)業(yè)務(wù)高峰期并行數(shù)量大時(shí),物理主機(jī)用來(lái)支撐容器的服務(wù)資源就會(huì)緊張,造成隊(duì)列堵塞,前端用戶的感受就是應(yīng)用卡頓。由于衛(wèi)星遙感單幅影像數(shù)據(jù)量大,總數(shù)據(jù)量可達(dá)到PB級(jí),不可避免需要采取獨(dú)立部署的分布式或集中存儲(chǔ)系統(tǒng),單獨(dú)管理數(shù)據(jù)存儲(chǔ)。無(wú)論是虛擬化平臺(tái)還是容器云平臺(tái),都是通過(guò)內(nèi)部網(wǎng)絡(luò)進(jìn)行訪問讀寫操作,網(wǎng)絡(luò)帶寬與數(shù)據(jù)吞吐速率始終是制約衛(wèi)星遙感數(shù)據(jù)處理能力上限的瓶頸。
2)應(yīng)用容器化:
容器的優(yōu)勢(shì)在于輕量化的內(nèi)核、便捷的封裝部署,但并不是所有的應(yīng)用服務(wù)都適合或者能夠被容器化,比如說(shuō)IO交互密集的數(shù)據(jù)庫(kù)、某些license綁定固定硬件的軟件。此外,將應(yīng)用服務(wù)遷移至容器部署需要對(duì)代碼進(jìn)行容器化改造,也需要人力和時(shí)間成本付出,比如地質(zhì)行業(yè)最常用的專業(yè)軟件ArgGIS、GXL等,短期內(nèi)都無(wú)法實(shí)現(xiàn)容器化部署,這也制約了容器技術(shù)在整個(gè)行業(yè)中的推廣應(yīng)用。
3)隔離安全:
容器由于共享操作系統(tǒng)內(nèi)核及驅(qū)動(dòng),容器內(nèi)某應(yīng)用服務(wù)的非法運(yùn)行或者故障報(bào)錯(cuò),可能會(huì)導(dǎo)致物理主機(jī)的操作系統(tǒng)異常,進(jìn)而影響到其他容器及容器內(nèi)的應(yīng)用服務(wù)。此外,也更容易被外部攻擊通過(guò)安全漏洞攻擊操作系統(tǒng),進(jìn)而影響上層應(yīng)用服務(wù)。因而,在當(dāng)前的應(yīng)用場(chǎng)景下,容器還不太適合公有云的運(yùn)行環(huán)境,如有外部接入還需配套設(shè)計(jì)嚴(yán)格的安全防護(hù)機(jī)制。
基于Kubernetes的容器云平臺(tái)是容器技術(shù)在衛(wèi)星遙感行業(yè)的應(yīng)用探索,已能夠初步實(shí)現(xiàn)對(duì)衛(wèi)星遙感數(shù)據(jù)的處理加工,提高了物理主機(jī)的硬件資源利用率,降低了后期運(yùn)維管理成本,并在微服務(wù)、深度學(xué)習(xí)等方向上展現(xiàn)出現(xiàn)了巨大潛力。隨著容器技術(shù)的進(jìn)一步發(fā)展普及,其所面臨的問題和對(duì)應(yīng)的解決方案也會(huì)越來(lái)越多?;贙ubernetes的容器云平臺(tái)為進(jìn)一步建設(shè)功能更為豐富、實(shí)用性更強(qiáng)的容器云平臺(tái)打下了良好的基礎(chǔ),對(duì)推進(jìn)衛(wèi)星遙感行業(yè)后續(xù)傳統(tǒng)業(yè)務(wù)上云改造具有較大借鑒意義。