云原生應用創新實踐聯盟通過課題方向專家組在“容器云自動化運維方向”的課題研究,重點圍繞構建容器云自動化運維體系、容器云監控體系的分層以及實現方式、容器云運維與企業運維流程對接融合三方面為企業提供決策參考。幫助企業運維人員提升對容器云的理解、升級運維思維,為運維人員提供容器云自動化運維建設的方法建議。
本期介紹容器云自動化運維方向課題組階段性研究成果“容器云資源數據關聯和數據聯動的難點和解決思路”。
導讀
本文探討了基于容器云場景下資源數據的管理,指出了傳統架構與云原生架構下數據管理的區別。文中定義了數據資源的范圍,并展開論述了對數據進行管理后的運維獲益場景。企業在云原生改造過程中,往往會面臨動態資源感知問題,作者也給出了一些切實而有效的解決方向。
前言
在云原生的背景下,運維體系的構建和能力面臨了很大的挑戰,在傳統的運維場景中,有固定的資源管理方式和流程支撐,同樣,運維對于業務的支撐也無法進行大面積的覆蓋。在云原生或DevOps的場景中,運維工程師或云原生工程師需要對運維場景的能力進行升級,比較典型的有,需要具備服務全鏈路質量監控覆蓋,涵蓋數據域與業務域;需要具備智能化的、集約化的資源動態調度和伸縮機制;需要具備面向終態的監控體系,解決故障預警和問題定位的能力;需要在“價值”交付過程中的各個階段,具備能夠防御不可靠因素的能力;需要具備資源高效交付的流程機制與快速上線的能力;需要在IT組織內部推進業務快速上云的能力。
我們可以發現,在以上的所有能力中,有一個核心的要素,數據需要在云原生的各場景或各能力中,處于中樞地位,需要對資源進行統籌和管理,實現數據之間的關聯和聯動。
一、資源數據的管理方式
1、傳統的資源管理方式
容器云資源數據的管理和傳統的CMDB有本質的區別,在很多人的理解中,傳統的CMDB僅僅是一個管理IT設備配置的數據庫,其功能局限于采集設備配置和存儲設備配置,進行配置數據的粗加工,如配置報表和成本報表,如下圖所示。

2、面向自動化運維的資源管理方式
隨著自動化運維理念的普及,以及運維技術的發展,資源管理的方式或方法也悄然“升級”,主要有兩個方面,分別是數據中心的資源管理和應用的資源管理,前者在IT資產管理的功能進行擴充,后者為了更好的為應用數據進行支撐,這兩個方面的核心功能在本質上而言,都是自動化運維推進或落地的重要步驟,如下圖所示,通過問題診斷、資源批量管理、自動巡檢、SLA保障和資源利用率管理的方式提升運維的效率,通過數據自動采集、開放API、可視化視圖、資源標準化、服務管理的方式為運維自動化提供支撐。

在面向自動化運維的場景中,資源管理是底層的管理能力,通過API能力為上層的應用提供支撐,比較典型的有標準的一致性數據支撐和固化的無障礙流程支撐。
3、面向DevOps的資源管理方式
面向DevOps的資源管理,其實是DevOps和CMDB二者的集成,作者的《DevOps權威指南》中有詳細的描述,在此進行提煉。
CMDB和DevOps的集成場景主要包括業務場景、架構場景、部署場景、數據輸出場景和傳統的基礎架構場景。在業務場景方面,基于業務訪問流的方式,對服務進行可視化呈現;在架構場景方面,基于架構視圖,對應用的顆粒度進行整合,形成完整的業務和業務的全景視圖;在部署場景方面,包含應用對應的節點和組件,形成應用的部署視圖;在數據輸出場景方面,包括CMDB提供的數據所有的對外輸出場景,該場景主要與其他集成場景進行單向和雙向的數據交互;傳統的基礎架構場景是指對底層的基礎設施進行視圖輸出,并提供采集、查詢、存儲和展示功能。
在應用方面,CMDB輔助業務場景,通過DevOps驅動業務流程。在價值交付流水線中,CMDB為各業務流程提供準確的配置數據。業務系統在架構設計、容量管理、持續交付和業務域保障過程中,通過數據賦能,進行業務流程的落地。同時,CMDB提供的數據的高階使用方式主要是多場景的數據關聯和通過端到端的視圖輔助DevOps在監控領域進行根因分析、故障定位和快速“自愈”。在DevOps的度量和反饋環節,對CMDB提供的數據進行服務化運營,實現業務的運營分析和成本復盤,以及資源的容量規劃和管理。
二、容器云資源的管理方式
無論是私有云、公有云,還是容器云的場景中,都將面臨云原生的資源管理方式,也叫云原生資產管理,包括了應用、數據、組件。云原生的資源管理方式和傳統的資源方式存在很大的不同,在云原生的環境中,所有的資源都是不停的在變化,因此支撐的應用和場景也是復雜多變的,同時云原生的應用大都采用微服務的方式,因此管理的配置項數量也呈現幾何級的增加。
在這種情況下,容器云資源的管理方式需要通過資源數據管理和資源場景管理相結合的方式,通過資源數據定義資源管理的模型、屬性、組合關系,通過資源場景的方式對資源進行描述并對數據類型進行標準化。常見的容器云資源管理場景如下圖所示。

應用資源管理,包括應用的拓撲信息,應用的基本信息如程序包目錄、啟停腳本等,應用的部署信息如集群、環境、主機、進程等,以及應用與應用之間、應用與基礎資源之間的調用信息等。
基礎資源管理,應用是由各種基礎資源構成的,需要支持各種基礎資源的配置信息管理。
應用制品管理,一般而言,資源管理中不會納管制品,但需要支持與外部制品庫對接,對制品與應用之間的關系進行管理。
作者舉一個典型的例子,便于讀者理解。在容器云資源管理過程中,需要定義一個資源管理模型,這個模型代表著一類云資源,如計算資源、存儲資源、網絡資源,也包括了集群模型和制品類型。模型需要以屬性的方式從各個方面云資源,模型的屬性可以根據場景自由定義和擴展。如集群模型的屬性中,包括集群名、集群方式等,主機模型的屬性包括ip、類型、區域等。和傳統資源管理方式最大的不同,隨著業務不斷發展變化,集群和主機的信息也需要進行不斷的擴展。
三、容器云資源數據的關聯
資源數據的關聯,涉及了三個核心問題,分別是如何對資源進行抽象和定義,如何確定資源數據之間的關系,如何在容器云場景中對資源進行鏈路追蹤。
容器云資源數據中,包括了容器云平臺自身的數據,數據中心數據,還包括了面向可靠性保障的事件數據和變更數據,同時也包括面向業務連續性的監控數據、應用配置數據和業務集群數據。作者在此重點分析聚焦在運維領域的數據,如下圖所示,我們可以清晰的看到,機房、機柜、服務器設備、網絡設備、存儲設備之間的關聯關系,也可以看到應用、實體、數據庫、系統之間的關聯,這是一種典型的以IP地址為基礎的數據關聯方式。

在上述的容器云資源數據關聯的場景中,我們可以明顯的看到,應用、數據庫、負載均衡,這三個模型的關聯是雙向的,而物理設備、網絡設備和存儲設備的數據關聯是單向的,這是容器的特性所造成。如果將任何一個實例進行模型化展示,PaaS層模型之上會關聯另一個模型,每個模型都有一個屬性數據供其他模型進行使用,從而衍生出一個龐大的數據關聯圖。因此只要任何一個屬性數據發生了變化,相關的數據關聯都會發生變化,甚至會引發數據聯動的情況。
作者同樣舉一個簡單的例子來描述容器云資源的數據關聯,當運維團隊對某個對象進行監控時,收到一個監控指標的預警信息,運維負責人首先關注是否影響業務連續性或可持續提供服務的能力是否受到影響,具體負責這個對象的工程師需要在短時間內對這個對象的上下游關系進行故障排查,如這個對象的故障是否因下游組件造成,是否對上游系統造成問題,這個對象在應用服務中處在什么環境,是否具備高可用能力,所承載的應用屬于那個團隊,近期是否有變更,是否和其他組件存在依賴關系,是否因為容器云平臺自身的原因造成。在這個時候,就需要一套完整的容器云資源數據關聯的拓撲圖譜,如應用拓撲、集群拓撲、模塊拓撲、容器云資源拓撲、數據關聯關系。
資源數據的關聯,不僅僅需要容器云平臺自身具備數據關聯的能力,還需要和第三方系統進行對接,如接口系統、應用監控系統、配置中心系統、組織架構系統、運維流程系統,雙邊系統在對接過程中,任意兩個模型都需要通過數據關聯的方式,形成單向或多向的關系。
四、容器云資源數據的聯動
當容器云資源數據具備了數據關聯的能力,便需要和具體的場景進行適配,進行數據聯動。通常,在容器云環境下,運維團隊面臨了各類環境和資源的操作,雖然容器云平臺具備自身資源數據的聯動,和應用的聯動依然不友好。因此,需要在容器云平臺內部的資源編排能力之上,通過開發、封裝可編排的組件和插件的方式,將資源數據以數據聯動的方式提供靈活、可定制、可管理的模板化運維能力,覆蓋面向業務連續性管理過程中的運維管理、運維審批、運維決策和運維執行的場景,最終實現運維自動化和運維智能化。
可以將容器云資源數據聯動分為三層,分別為基礎設施層、容器服務層、應用層,其中基礎設施層對應了云資源聯動,容器服務層對應了kubernetes聯動,應用層對應了運維聯動,還可以對應IT組織內部的其他能力子域的聯動,如下圖所示。

云資源聯動,聯動對象是各類云資源,包括計算資源、網絡資源和存儲資源,主要通過容器云平臺內部的編排功能,達到基礎資源彈性伸縮的能力。kubernetes聯動,聯動對象是kubernetes集群資源數據,主要通過Helm或YAML進行編排。運維聯動,主要面向運維保障、運維監控和運維流程場景,達到自動化運維或智能化運維的能力。
通常,資源數據聯動在運維場景內主要有四種方式,分別是運維事件的管理、應用調用管理、服務部署管理和變更影響管理。事件管理方面,可以通過容器云平臺和事件系統進行對接,可以對告警進行分析,達到事件數據和發布數據之間的聯動。應用調用管理方面,可以通過容器云平臺和應用鏈路系統進行對接,對故障應用的上下游調用鏈路進行分析,匹配服務異常原因和應用鏈路調用之間的影響關系。服務部署管理方面,可以通過容器云平臺自身的數據進行關聯分析,及時的辨識變更和告警之間關系。變更影響管理方面,可以通過容器云平臺和變更系統進行對接,打通業務連續性各項指標之間的關聯,通過數據聯動的方式明確變更可能發生影響的范圍。