天天看點

k8s與caas--容器雲caas平台的落地實踐

前言

在移動網際網路時代,新的技術需要新技術支援環境、新的軟體傳遞流程和IT架構,進而實作架構平台化,傳遞持續化,業務服務化。容器将成為新一代應用的标準傳遞件,容器雲将幫助企業使用者建構研發流程和雲平台基礎設施。縮短應用向雲端傳遞的周期,降低營運門檻。加速向網際網路技術和業務的雙轉型。容器雲将對接各類代碼托管庫,實作自動化持續內建 和DOCKER鏡像建構,為新一代應用傳遞和開發運維一體化奠定了基礎。容器雲将支援應用的一鍵式部署傳遞,提供負載均衡,私有域名綁定,性能監控等應用生命周期管理服務。是微服務架構,輕量級應用部署和運維的理想平台。未來IT界會以容器化應用作為傳遞的标準。容器雲為開發者和企業提供了一個快速建構、內建、部署、運作容器化應用的平台,進而提高應用開發的疊代效率,簡化運維環節,降低運維成本。

對于企業來說,容器雲價值展現在:

  1. 作為内部技術紐帶,多應用統一部署平台,提高開發效率,減少運維成本。
  2. 平台産品化過程中,投入少且産出價值高。可依托現有的IaaS平台資源,相對于傳統的承接項目獲益的方式,容器雲會積累寶貴的客戶資源及資料資源,這些無形資産最終會為公司赢得巨大戰略價值。
  3. 增加雲企業辨識度,如果隻具有IaaS層服務的雲平台是不完整的,對使用者的雲服務是不充分的,應該具有為使用者提供全方位的雲服務體系,應該具有先進且高附加值的雲平台。

應用功能架構

基于Kubernetes實作的容器雲平台,就功用而言可以分為四大部分:

  1. 自動化容器的部署、更新和複制;
  2. 随時擴充或收縮容器規模,實作容器的彈性擴充;
  3. 以叢集的方式運作、管理跨機器的容器,并且提供容器間的負載均衡;
  4. Kubernetes的自我修複機制使得容器叢集總是運作在使用者期望的狀态。

未來容器雲也可能會成為雲管理平台的統治者,也還會有更多的應用在容器雲上原生運作起來。因為對于容器雲,它可以把很多分散的實體計算資源抽象成一個大的資源池,利用這些資源來執行使用者的計算任務。對于使用者來說,操作一個分散的叢集資源就像在使用一台計算機。人工智能的集中式爆發,機器學習的訓練過程對于快速疊代的高要求,讓能夠輕量級接入,并且可以對使用者提供秒級響應的容器雲發揮了巨大的優勢。師出同門的Google Tensorflow項目很早也進行了與Kubernetes的內建,人工智能平台上實作了Spark on Kubernetes和 Hadoop on Kubernetes。無論是容器技術,還是DevOps和微服務,都說明靈活、彈性、輕量化的IT應用模式逐漸形成。而這種模式的形成對于複雜産品的快速開發有着積極意義,谷歌等IT巨頭對産業的貢獻,讓初創企業與大型IT企業之間的差距縮短,迎來最好的IT時代。容器雲架構方案,具有六大功能子產品,每個部分包含對應的容器技術棧。具體架構如下

k8s與caas--容器雲caas平台的落地實踐

存儲方案

後端存儲主要采用 Ceph 驅動。Ceph 獨一無二地用統一的系統提供了對象、塊、和檔案存儲功能,它可靠性高、管理簡便、并且是自由軟體。 Ceph 的強大足以改變貴公司的 IT 基礎架構、和管理海量資料。 Ceph 可提供極大的伸縮性——供成千使用者通路 PB 乃至 EB 級的資料。 Ceph 節點以普通硬體和智能守護程序作為支撐點, Ceph 存儲叢集組織起了大量節點,它們之間靠互相通訊來複制資料、并動态地重分布資料。Ceph在容器雲中主要應用場景是有狀态服務。包括關系型資料庫和nosql資料庫等資料需要持久化的業務。

網絡方案

k8s與caas--容器雲caas平台的落地實踐

底層容器網絡我們最初使用的是Calico。 Calico基本架構圖 Calico是一個純三層網絡,沒有引入一個DP,沒有封包。在主機内部做另外一個容器,可以三條到達終端,你可以知道是誰出了問題,調試的時候很容易,很好管理。容器内的應用資料傳出來,和二層完全隔離,對于我們絕大多數的應用來講隻需要三層就夠了,很少有應用處理二層。而且Calico支援豐富的網絡政策,可以實作多租戶管理,對于未來對外提供容器雲服務至關重要。

容器編排方案

Kubernetes是谷歌開源的容器叢集管理系統,是Google多年大規模容器管理技術Borg的開源版本,主要功能包括:

  • 1.基于容器的應用部署、維護和滾動更新
  • 2.負載均衡和服務發現
  • 3.跨機器和跨地區的叢集排程
  • 4.自動伸縮
  • 5.無狀态服務和有狀态服務
  • 6.廣泛的Volume支援
  • 7.插件機制保證擴充性

Kubernetes發展非常迅速,已經成為容器編排領域的上司者。Kubernetes提供了很多的功能,它可以簡化應用程式的工作流,加快開發速度。通常,一個成功的應用編排系統需要有較強的自動化能力,這也是為什麼 Kubernetes 被設計作為建構元件和工具的生态系統平台,以便更輕松地部署、擴充和管理應用程式。使用者可以使用Label以自己的方式組織管理資源,還可以使用Annotation來自定義資源的描述資訊,比如為管理工具提供狀态檢查等。此外,Kubernetes控制器也是建構在跟開發人員和使用者使用的相同的API之上。使用者還可以編寫自己的控制器和排程器,也可以通過各種插件機制擴充系統的功能。這種設計使得可以友善地在Kubernetes之上建構各種應用系統。目前整個kubernetes叢集采用高可用部署,架構如下圖:

k8s與caas--容器雲caas平台的落地實踐

性能監控方案

容器監控的對象主要包括 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 的重任,是開發與運維人員的橋梁,它實作了業務(應用)從代碼到服務的自動上線,滿足了開發過程中一鍵的持續內建與部署的需求。本容器雲平台,對接持續內建&釋出系統。除此之外,實作服務擴縮容,彈性伸縮(HPA)、負載均衡、灰階釋出等,也加入了代碼品質檢查(Sonar)、自動化測試及性能測試插件等,這些都是 CI/CD PaaS 平台的重要組成部分。

雲平台功能

通過可視化界面,可以簡單友善的實作對資源的部署、管理與監控,包括:資源編排。可以實作以下功能: 1.全面監控:主機、路由器、硬碟、公網IP、負載均衡器都具備完整全面的曆史監控和實時監控資訊。 2.開放式的圖形化操作: 直覺展示主機及其相關資源,并可以直接操作圖形,所有改動自動更新。 3.記錄檔記錄: 記錄下使用者所有重要操作曆史,友善定位和查找。 4.網絡拓撲結構展示: 用圖形展示複雜的網絡拓撲結構,連接配接私有網絡和主機更加友善直覺。 5.備份鍊可視化操作: 對于備份各節點一目了然,同時可直接操作建立備份及復原到之前的狀态。 6.自動伸縮政策: 根據資源監控資訊定義自動伸縮政策,調節資源配置或叢集規模,無需人工介入。 7.通知清單: 用于接收監控告警通知、定時器任務或自動伸縮政策的執行結果。 8.快速的系統建構: 使用資源編排,可以在短短幾分鐘内迅速複制一套已存在的擁有複雜拓撲的系統;或者迅速規劃您的系統架構并評估成本;還可以實作資源拓撲的跨區域複用。 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 )等。當然這是後續和正在做的工作。

本文轉自SegmentFault-

k8s與caas--容器雲caas平台的落地實踐