Mirantis MCP 1.0:OpenStack 和 Kubernetes 整合的第一步

 

1.前言

    Mirantis 公司在2014年9月14日宣佈收購 TCPCloud,而後宣佈在2017年第一季度會推出全新的私有云產品。從那時候開始,我就一直滿懷期待。終於,今年4月19日,Mirantis 宣佈推出全新的 MCP 1.0。本文根據公開的文檔,試着對該產品作些分析和總結,而且展望一下其將來。由於只是看文檔和視頻,並無進行實際部署和操做,所以,可能有一些錯誤。本文會持續進行更新。node

2. MCP 1.0 概況

2.1 MCP 1.0 的組成

 

MCP 1.0 主要包括三大部分:mysql

  • DriveTrain:即部署和變動系統,用於整個平臺的部署(Day 1)和部署後的變動(Day 2)。
  • 雲系統:包括支持物理機和虛機的 OpenStack,支持容器的 Kubernetes,分佈式塊和對象存儲 Ceph,面向 OpenStack 集羣的SDN OpenContrail,面向 Kubernetes 的 SDN Calico。
  • StackLight:即日誌、監控和告警系統,爲雲平臺提供運維支持。

2.2 設計出發點

Mirantis 設計 MCP 1.0 的出發點包括但不限於:nginx

  • 基礎架構的消費模式是由公有云定義的,它的主要特徵包括 API 驅動(API driven)、持續交付(continuously delivered)和託管模式(managed)。所以,MCP 1.0 就由以前的以安裝爲中心的架構(installer-centric architecture)變爲以運維爲中心的架構(operations-centric architecture)。
  • 面向各類工做負載的統一雲平臺,包括爲遷移到雲上的傳統應用(cloud hosted)提供虛機和裸機;爲已經爲雲作過優化的應用(cloud optimized)提供虛機;爲雲原生應用(cloud native)提供虛機和容器。

 

 

  • 變動再也不以6到12個月爲週期,而是以周爲週期進行小迭代(minor increments)而持續發生。

3. MCP 1.0 具體

下面具體分析 MCP 1.0 中的具體組件。git

3.1 DriveTrain

3.1.1 概況

(1)理念:Infrasture-as-code 基礎架構即代碼,將基礎架構代碼化。github

(2)目標:支持 Day 1 定製化安裝和 Day 2 部署後配置,包括功能和架構變動。sql

(3)方法:採用 CI/CD 工具和流程,實現 DevOps 模式。數據庫

(4)支持:當前支持 OpenStack 集羣和 Kubernets 集羣,未來會增長更多集羣支持。後端

(5)界面:DriveTrain 的界面集成在 DevOps 界面中。安全

3.1.2 組件

DriveTrain 是 DevOps 形式的雲平臺部署和配置系統。它主要包括如下生命週期管理工具:服務器

  • SaltStack + Reclass:SlatStack 相似Puppet 和 Chef,提供配置管理和 MCP 集羣的部署和變動;Reclass 結合 SaltStack 使用。
  • Gerrit:提供 Git 庫和代碼檢視管理系統,保存源代碼、SaltStack 程序(formulas)、Reclass 模型(models)。
  • Jenkins:job 自動化工具。它檢測提交到 Gerrit 的針對 MCP 集羣配置的變化,而後經過執行一系列 jobs,將相應的 SaltStack 程序和Reclass 模型應用到 MCP 集羣。
  • MCP Registry:保存 MCP 集羣所需的軟件庫,好比 Docker 鏡像、Debian 包等。

3.1.3 部署

要部署DriveTrain,至少須要3個虛機。它的組件運行在由 Docker Swarm 管理的容器之中。

  • 使用三節點 Docker Swarm 部署模式,每一個 DriveTrain 組件運行在 Docker Swarm 容器中,確保提供高可用的服務。(mysql 如何運行在容器中,沒有具體說明)
  • 使用 GlusterFS 共享文件系統做爲共享存儲
  • 使用 Keepalived 對各個 service 提供 HA VIP
  • 使用 nginx 提供公網訪問能力

3.1.4 CI/CD 流程

  1. 當運維人員要進行 MCP 部署或者變動時,他首先在 Gerrit 中提交 SaltStack 程序 或者 Reclass 模型的代碼檢視申請。
  2. 代碼檢視結束後,根據配置的不一樣(有沒有staging環境),觸發Jenkins 相應的變動 job。
  3. Jenkins job 從 Jenkins 中獲取SaltStack 程序 或者 Reclass 模型的代碼,以及從  MCP 庫中獲取二進制文件。
  4. SaltStack 將更改應用到 MCP 集羣 

3.1.5 簡單分析

與Mirantis以前的 Fuel 作比較,

  • Fuel 使用 Puppet 來作配置管理,如今改成使用 SlatStack,應該是吸取了 TCPCloud 的成果。在 Github 上有看到有大量的 TCPCloud 寫的 Slat 程序,好比 https://github.com/tcpcloud
  • Fuel 主要是在 Day 1 部署,而 DriveTrain 則 Day 1 部署和 Day 2 變動並重。固然,如今的 Day 2 變動主要還只是作一些小的變動,好比安全補丁之類的。可是,長期看,二者都是必須的。
  • 客戶有了 DriveTrain 並接受了培訓以後,就能夠自動地進行變動了,這爲 Mirantis 推行新的 build-operate-transfer 交付模式提供了產品基礎。

3.2 MCP 集羣

MCP 1.0 支持 OpenStack 集羣和 Kubernetes 集羣。

3.2.1 OpenStack 集羣

一個部署實例:

MCP OpenStack 集羣的特色:

  • 採用 DriveTrain 進行部署和變動
  • 使用 StackLight 做爲 LMA(Logging, Metering, Alerting) 系統
  • 每一個組件使用多個分佈在不一樣物理服務器上的虛機來實現高可用
  • SDN 支持 OpenContrail 或者 Neutron OVS,前者是推薦配置
  • 推薦採用 Ceph 作塊和對象存儲。
  • 支持多種 OpenStack 服務,支持物理機和虛機:
  •  

3.2.2 Kubernetes 集羣

MCP 1.0 支持單獨部署一個 K8S 集羣,也支持在 OpenStack 集羣旁邊部署一個 K8S 集羣。一個部署示例以下:

特色:

  • K8S 集羣和 OpenStack 集羣目前沒有關聯。
  • 採用 Calico 做爲SDN。使用 OpenContrail 處於 technical preview 狀態,也就是測試可用,但生產別用。
  • 採用 Ceph 提供卷。
  • 採用 DriveTrain 進行集羣部署和變動。
  • 典型地,K8S 集羣會部署在裸金屬服務器上。MCP 採用基於 Ironic 的 MaaS 組件來準備物理環境。

3.2.3 簡單分析

  • MCP 中的 OpenStack 和 K8S 集羣目前是獨立的,二者之間沒有關聯
  • OpenStack 和 K8S 集羣使用同一的部署和配置工具 DriveTrain,以及 LMA 工具 StackLight。
  • Mirantis 強調 100% 開源。 

 3.3 StackLight

MCP StackLight 是 Mirantis 的日誌(收集、分析、可視化)、監控(包括設備,服務,和租戶資源等)和告警系統。

3.3.1 功能彙總

3.3.2 整體架構

3.3.2 日誌(logging)

(1)日誌收集目標包括:

(2)特色

  • 採用 Heka 做爲日誌收集器。它被安裝在MCP集羣的每一個節點上,負責收集這些節點上的日誌。
  • 採用 ElasticSearch 做爲日誌存儲
  • 使用 Kabana 做可視化

3.3.3 監控 (Metering)

特色:

  • 包括雲物理環境監控和租戶環境監控。
  • 租戶資源監控基於 Ceilometer。它將監控指標數據保存在 InfluxDB 中,將資源數據保存在 Elasticsearch 中。
  • 採用 InfluxDB 時間序列數據庫保存監控數據
  • 採用 Grafana 做爲可視化

 

3.3.4 告警(Altering)

 特色:

  • 採用  Sensu 和 Uchiwa,支持集羣
  • 支持經過標準協議將告警導向第三方系統

3.4 DevOps Portal

MCP 1.0 還提供了處於技術預覽狀態的 DevOps 界面。它是 MCP 管理員的主要入口。它的主要內容有:

  • 經過各類圖標和狀態等展現雲環境的各類信息
  • 提供連接到其它工具的連接,包括 Grafana,Kibana 和 Rundeck等。

3.4.1 架構

3.4.2 Cloud Intelligence Service (CIS,雲智能服務)

CIS 包括一系列用於收集系統信息的收集器(collectors),包括 OpenStack 集羣和MaaS 等等。CIS 保存這些信息,跟蹤它們的變化,並進行分類。CIS 會查詢各類服務的API,而且鏈接到特定的數據庫去加速數據收集。儘管 CIS 的搜索功能很強大,可是它不能修改任何資源。

Runbooks 每隔5分鐘會運行這些收集器去收集各類信息,並保存到 ElasticSearch 中。

3.4.3 Cloud Health Service 服務(CHS,雲狀態服務)

CHS 也包括一組收集器,它們經過各類資源的通知來提供雲的狀態概要,包括網絡、存儲、計算節點等。這些結果會被展現在 DevOps 界面中。

Runbook 會執行 FCI,API 測試,並將數據保存在 LMA 中。DevOps 界面查詢 LMA,建立雲狀態的各類圖表。雲管理員監控這些圖表。

3.4.4 Runbook 後端和UI

Runbooks Auotmation 是一個自動化服務。用戶能夠在其UI中建立工做流任務,這些任務會被定時或者週期性執行。其它 OSS 組件會使用 Runbooks 服務來自動化執行這些任務,好比建立備份、監控數據查詢、生成報表、雲維護等等。Runbooks 是有 Rundeck 工具提供的,它使得用戶能夠方便地添加 Rundeck 任務,並將它們嵌入工做流。 Jenkins 和 SaltStack 主要用於部署和生命週期管理,Rundeck 則會幫助用戶執行天天的運維和維護任務。

3.4.5 Capacity Management Serice (CMS, 容量管理服務)

CMS 服務利用LMA 和 CIS 產生的數據,提供多個界面來顯示雲中的資源使用狀況。它的內容包括:

  • 按照可用區(AZ)分組的計算節點的 CPU 和內存利用率
  • 在用內存容量
  • 在用存儲容量
  • 計算節點總數

它的部分界面會集成到Horizon 中:

 3.5 多集羣支持

3.5.1 DriveTrain 能支持多集羣 

一套包含 SlatStack 和 Reclass 的 DriveTrain 環境能支持多集羣的配置:

  • 一個 Service class 定義MCP 集羣中的一個組件(component),好比 RabbitMQ,MySql 等。Service class 定義爲 SlatStack 程序。
  • 一個 System class 定義 MCP 集羣中的一個節點(node),好比控制節點和計算節點,以及部署在節點上的 service。
  • 一個 Cluster class 定義一個 MCP 集羣,好比一個 demo OpenStack 集羣,一個生產 K8S 集羣等。一個 cluster class 組合多個 system classes。

經過 DriveTrain 的 CI/CD 流程,管理員就能夠定義、部署、維護多個 MCP 雲環境。

3.5.2 StackLight 能支持多集羣

 

 

4. 總結和展望

4.1 總結

根據上面的信息,對 Mirantis MCP 1.0 作個簡單的總結:

  • 產品化思路很是直接:將合適用戶工做負載的雲環境(當前是OpenStack環境和K8S環境)經過好用的部署和變動工具(DriveTrain)和 LMA 系統(StackLight)提供給用戶,使得這個產品既能解決業務須要,又好用。
  • OpenStack 地位肯定:由神化(無所不能)回到人間(支持物理機和虛機),在整個 Mirantis 私有云產品中的份量由以前的 100% 降低到當前的 60%,未來應該會進一步降低。
  • OpenStack 功能獲得聚焦:MCP 1.0 使用 Salt 而不是 OpenStack 自帶的 Magnum 項目來編排 K8S 集羣,顯示出 Mirantis 有將 OpenStack 功能收縮到核心組件的趨勢,這應該和 Mirantis 減小 OpenStack 研發人員同時TCPCloud 團隊有很是強大的 SaltStack 能力有必定關係。
  • K8S 地位清晰:即定位在 CAAS 平臺。它既不能取代OpenStack,也不是 PAAS,而是在其該在的 CAAS 位置。
  • 強調 Day 2 (部署後運維),推行 CI/CD 模式的自動化運維平臺。
  • 強調 LMA (日誌-監控-告警),並強調事前分析告警。

4.2 展望

如本文標題,MCP 1.0 只是 Mirantis 新私有云產品的第一個版本,還處於 OpenStack 和  K8S 整合的第一步。不負責任地預測,未來 MCP 會:

(1)經過 OpenContrail 將 K8S 和 OpenStack 作進一步的整合,打通 物理機-虛機-容器 的網絡。這方面以前 TCPCloud 已經有了不少的嘗試,相信未來會進一步利用起來。

這是 TCPCloud 以前放的一篇文章:

這是 Mirantis 在今年波士頓OpenStack 峯會上的展現,它將大數據不一樣的組件做爲不一樣的工做負載運行在不一樣的環境中,在使用 OpenContrail 做爲統一的 SDN:

 

(2)進一步拓寬雲產品棧,OpenStack 的份量會進一步降低,也許會到 30% 左右。

經過 DriveTrain 和 StackLight 支持更多的雲產品,好比大數據、AI 等雲技術棧。相信 Mirantis 也不會限於 OpenStack 和  K8S,而是會選擇更多的開源雲產品。咱們也許會看到 Mirantis 參與到更多的開源雲項目中。

 

(3)用戶體驗(UI)的進一步優化,包括 DriveTrain UI, StackLight UI,DevOps 界面等的加強,以及多個界面之間的整合。

(4)DriveTrain 功能的進一步豐富。當前它更多的只能支持 Day 1 部署,未來會在 Day 2 部署後變動方面作加強,使它真正成爲 DevOps 樣式的完整的系統。

 

 

 參考連接

相關文章
相關標籤/搜索