這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
前言
在移動互連網時代,新的技術需要新支援人員環境、新的軟體交付流程和IT架構,從而實現架構平台化,交付持續化,商務服務化。容器將成為新一代應用的標準交付件,容器雲將協助企業使用者構建研發流程和雲平台基礎設施。縮短應用向雲端交付的周期,降低運營門檻。加速向互連網技術和業務的雙轉型。容器雲將對接各類代碼託管庫,實現自動化持續整合和DOCKER鏡像構建,為新一代應用交付和開發營運一體化奠定了基礎。容器雲將支援應用的一鍵式部署交付,提供負載平衡,私人網域名稱綁定,效能監控等應用生命週期管理服務。是微服務架構,輕量級應用部署和營運的理想平台。未來IT界會以容器化應用作為交付的標準。容器云為開發人員和企業提供了一個快速構建、整合、部署、運行容器化應用的平台,從而提高應用開發的迭代效率,簡化營運環節,降低營運成本。
對於企業來說,容器雲價值體現在:
- 作為內部技術紐帶,多應用統一部署平台,提高開發效率,減少營運成本。
- 平台產品化過程中,投入少且產出價值高。可依託現有的IaaS平台資源,相對於傳統的承接項目獲益的方式,容器雲會積累寶貴的客戶資源及資料資源,這些無形資產最終會為公司贏得巨大戰略價值。
- 增加雲企業辨識度,如果只具有IaaS層服務的雲平台是不完整的,對使用者的雲端服務是不充分的,應該具有為使用者提供全方位的雲端服務體系,應該具有先進且高附加值的雲平台。
應用功能架構
基於Kubernetes實現的容器雲平台,就功用而言可以分為四大部分:
- 自動化容器的部署、升級和複製;
- 隨時擴充或收縮容器規模,實現容器的彈性擴充;
- 以叢集的方式運行、管理跨機器的容器,並且提供容器間的負載平衡;
- Kubernetes的自我修複機制使得容器叢集總是運行在使用者期望的狀態。
未來容器雲也可能會成為雲管理平台的統治者,也還會有更多的應用在容器雲上原生運行起來。因為對於容器雲,它可以把很多分散的物理計算資源抽象成一個大的資源集區,利用這些資源來執行使用者的計算任務。對於使用者來說,操作一個分散的叢集資源就像在使用一台電腦。人工智慧的集中式爆發,機器學習的訓練過程對於快速迭代的高要求,讓能夠輕量級接入,並且可以對使用者提供秒級響應的容器雲發揮了巨大的優勢。師出同門的Google Tensorflow項目很早也進行了與Kubernetes的整合,人工智慧平台上實現了Spark on Kubernetes和 Hadoop on Kubernetes。無論是容器技術,還是DevOps和微服務,都說明靈活、彈性、輕量化的IT應用模式逐漸形成。而這種模式的形成對於複雜產品的快速開發有著積極意義,Google等IT巨頭對產業的貢獻,讓初創企業與大型IT企業之間的差距縮短,迎來最好的IT時代。容器雲架構方案,具有六大功能模組,每個部分包含對應的容器技術棧。具體架構如下
儲存方案
後端儲存主要採用 Ceph 驅動。Ceph 獨一無二地用統一的系統提供了對象、塊、和檔案儲存體功能,它可靠性高、管理簡便、並且是自由軟體。 Ceph 的強大足以改變貴公司的 IT 基礎架構、和管理海量資料。 Ceph 可提供極大的伸縮性——供成千使用者訪問 PB 乃至 EB 級的資料。 Ceph-節點以普通硬體和智能守護進程作為支撐點, Ceph 儲存叢集組織起了大量節點,它們之間靠相互連訊來複製資料、並動態地重分布資料。Ceph在容器雲中主要應用情境是具狀態服務。包括關係型資料庫和nosql資料庫等資料需要持久化的業務。
網路方案
底層容器網路我們最初使用的是Calico。 Calico基本架構圖 Calico是一個純三層網路,沒有引入一個DP,沒有封包。在主機內部做另外一個容器,可以三條到達終端,你可以知道是誰出了問題,調試的時候很容易,很好管理。容器內的應用資料傳出來,和二層完全隔離,對於我們絕大多數的應用來講只需要三層就夠了,很少有應用處理二層。而且Calico支援豐富的網路原則,可以實現多租戶管理,對於未來對外提供容器雲端服務至關重要。
容器編排方案
Kubernetes是Google開源的Lark系統,是Google多年大規模容器管理技術Borg的開源版本,主要功能包括:
- 1.基於容器的應用部署、維護和滾動升級
- 2.負載平衡和服務發現
- 3.跨機器和跨地區的叢集調度
- 4.自動調整
- 5.無狀態服務和具狀態服務
- 6.廣泛的Volume支援
- 7.外掛程式機制保證擴充性
Kubernetes發展非常迅速,已經成為容器編排領域的領導者。Kubernetes提供了很多的功能,它可以簡化應用程式的工作流程,加快開發速度。通常,一個成功的應用編排系統需要有較強的自動化能力,這也是為什麼 Kubernetes 被設計作為構建組件和工具的生態系統平台,以便更輕鬆地部署、擴充和管理應用程式。使用者可以使用Label以自己的方式組織管理資源,還可以使用Annotation來自訂資源的描述資訊,比如為管理工具提供狀態檢查等。此外,Kubernetes控制器也是構建在跟開發人員和使用者使用的相同的API之上。使用者還可以編寫自己的控制器和調度器,也可以通過各種外掛程式機制擴充系統的功能。這種設計使得可以方便地在Kubernetes之上構建各種應用系統。目前整個kubernetes叢集採用高可用部署,架構如:
效能監控方案
容器監控的對象主要包括 Kubernetes 叢集(各組件)、應用服務、Pod、容器及網路等。這些對象主要表現為以下三個方面: 1.Kubernetes 叢集自身健康狀態監控(5個基礎組件、Docker、Etcd、Calico等) 2.系統效能的監控,比如:CPU、記憶體、磁碟、網路、filesystem 及 processes 等; 3.業務資源狀態監控,主要包括:rc/rs/deployment、Pod、Service 等; 針對容器的整體健全狀態及效能狀況監控,採用了自研的監控系統實現整體IT資源的統一監控。
日誌收集方案
容器平台的日誌系統一般包括:Kubernetes 組件的日誌,資源的事件記錄及容器所啟動並執行應用的日誌。本容器雲平台,使用fluentd(以DaemonSet的方式啟動)來收集日誌,並將收集的日誌發送給統一日誌平台。
CI/CD方案
CI/CD(持續整合與部署)模組肩負著 DevOps 的重任,是開發與營運人員的橋樑,它實現了業務(應用)從代碼到服務的自動上線,滿足了開發過程中一鍵的持續整合與部署的需求。本容器雲平台,對接持續整合&發布系統。除此之外,實現服務擴縮容,Auto Scaling(HPA)、負載平衡、灰階發布等,也加入了代碼品質檢查(Sonar)、自動化測試及效能測試外掛程式等,這些都是 CI/CD PaaS 平台的重要組成部分。
雲平台功能
通過可視化介面,可以簡單方便的實現對資源的部署、管理與監控,包括:Resource Orchestration Service。可以實現以下功能: 1.全面監控:主機、路由器、硬碟、公網IP、負載平衡器都具備完整全面的曆史監控和即時監控資訊。 2.開放式的圖形化操作: 直觀展示主機及其相關資源,並可以直接操作圖形,所有改動自動更新。 3.動作記錄記錄: 記錄下使用者所有重要操作曆史,方便定位和尋找。 4.網路拓撲結構展示: 用圖形展示複雜的網路拓撲結構,串連私人網路和主機更加方便直觀。 5.備份鏈可視化操作: 對於備份各節點一目瞭然,同時可直接操作建立備份及復原到之前的狀態。 6.自動調整策略: 根據資源監控資訊定義自動調整策略,調節資源配置或叢集規模,無需人工介入。 7.通知清單: 用於接收監控警示通知、定時器任務或自動調整策略的執行結果。 8.快速的系統構建: 使用Resource Orchestration Service,可以在短短几分鐘內迅速複製一套已存在的擁有複雜拓撲的系統;或者迅速規劃您的系統架構並評估成本;還可以實現資源拓撲的跨地區複用。 9.豐富的模板建立方式: 在控制台中,使用者可以從無到有構建模板;也可以從系統推薦的常見模板入手建立,或基於已經建立的模板繼續完善;還可以將已經存在的資源抽取出一套拓撲關係成為模板。
總結
caas平台衍生出來的整個devops體系是至關重要的。最終實現打通日誌,監控和apm資料,演算法實現根因分析,也就是AIOPS。能夠快速定位故障。快速反饋到營運和開發,形成一個閉環。
Gartner定義的AIOps平台擁有11項能力,包括曆史資料管理( Historical data management) 、流資料管理( Streaming data management )、日誌資料提取( Log data ingestion) 、網路資料提取( Wire data ingestion )、演算法資料提取( Metric data ingestion )、文本和NLP文檔提取( Document text ingestion )、自動化模型的發現和預測( Automated pattern discovery and prediction )、異常檢測( Anomaly detection )、根因分析( Root cause determination )、按需交付( On-premises delivery )和軟體服務交付( Software as a service )等。當然這是後續和正在做的工作。