Kubernetes部署場景

CoreOS Docker 軟件 OpenStack 零空科技 2017-05-25

【摘要】這是一篇介紹生產環境使用Kubernetes的用戶部署場景。

Kubernetes可以作為容器編排引擎、PaaS或者作為雲原生應用的核心基礎架構被用戶部署到生產環境。這些用例並不是相互排斥的。DevOps可以委託基於Kubernetes的PaaS層完成整個應用生命週期的管理(ALM),也可以獨立部署Kubernetes管理CI/CD工具部署的應用。對於新應用程序可以使用Kubernetes管理微服務架構的雲原始應用,支持先進的場景,如滾動升級和金絲雀的部署。

這一部分將抓取頂級客戶使用Kubernetes的案例 。在此之前,讓我們仔細看一個企業的容器管理平臺的重要組件。

Kubernetes部署場景

企業容器管理平臺的構成部分

客戶需要安裝一套工具來有效地管理容器化應用程序的生命週期。它們構成容器管理平臺核心組成部分。這種模式的平臺變得越來越普遍,對於部署和管理生產級容器,至關重要。

  • 操作系統

容器減少應用程序對底層操作系統的依賴性。運行容器的工作負載喜歡選擇輕量級的操作系統,像CoreOS和RedHat Atomic Host,降低基礎設施的管理成本。

  • 容器引擎

容器引擎管理特定主機或節點上運行的容器的生命週期,編排工具和容器引擎共同調度管理集群節點的容器。Docker和rkt是兩種容器引擎。

  • 鏡像倉庫

鏡像倉庫是容器鏡像的存儲庫。運行時編排引擎可以通過鏡像倉庫安全訪問鏡像。Docker的Trusted Registry,CoreOS的Quay Enterprise和JFrog的Artifactory都是可選擇的鏡像倉庫。

  • 鏡像安全

鏡像是容器平臺非常重要的基礎,需要掃描鏡像的脆弱性和潛在威脅。CoreOS的Clair、Twistlock和OpenSCAP可以用於鏡像掃描。

  • 容器編排

這是管理容器工作負載的最重要部分。它提供分佈式容器管理和容器調度服務。Kubernetes,Docker原生編排Swarm及Mesosphere DC/OS提供容器編排和容器管理。

  • 分佈式存儲

容器需要一種新的分佈式存儲來管理有狀態的工作負載。產品如ClusterHQ、Portworx、Joyent Manta和Diamanti提供容器存儲。

  • 監測

生產級工作負載需要不斷的查看應用的狀態和健康。容器監測解決方案包括基礎設施監控和運行容器的監控。Datadog、Sysdig、Prometheus提供容器監控服務。

  • 日誌

通過日誌分析,可以瞭解容器及其主機的性能、穩定性和可靠性。同任何生產的工作負載一樣,日誌是非常重要的。Splunk、Loggly、Logentries提供容器日誌服務。

  • 代碼管理

代碼管理(SCM)通常用於維護代碼版本,同時,對容器化工作負載(如:鏡像和Kubernetes對象)的版本也起著重要的作用。現有的SCM解決方案,如GitHub,Bitbucket和Gitlab,可以用於管理代碼和容器化工作負載。

  • 構建自動化

容器鏡像作為構建CI/CD管道的一部分。通過利用現有的工作流和創建自動化管道,客戶可以實現容器化應用的自動部署。專業CI/CD的工具,如Shippable,或現有的工具,像Jenkins,都可以用來擴展,作為容器化應用的自動化部署工具。

  • 配置管理

傳統的配置管理工具已經擴展支持容器。客戶能混合和匹配容器化和虛擬化技術,使用統一的工具提供創建、配置、部署和管理應用程序。Chef、Puppet、Ansible和SaltStack已經增加了容器的支持,可以利用現有的playbooks和recipes管理容器化應用。

  • Kubernetes作為容器編排和管理工具

Kubernetes最常見的用法是管理生產級容器。客戶可以選擇部署開源版本的Kubernetes或使用商業版。部署目標可能是私有部署、公共雲或混合雲。

在這種情況下,客戶可以使用混合DevOps工具管理現有的應用和新的應用程序,並且,可以使用一組異構工具,如:管理鏡像倉庫、安全掃描、存儲、網絡和自動化構建。Kubernetes整合現有的工具構造容器編排和容器管理工具。客戶可以使用商業版kubernetes,如Tectonic,或企業分發版Canonical。

  • CoreOS Tectonic

CoreOS誕生於容器的時代。Tectonic是首個基於kubernetes、端到端的企業容器編排引擎。CoreOS技術棧結合了kubernetes,並做了安全增強。客戶獲得最新的更新以保持他們的基礎架構是最新的。

對比Kubernetes,Tectonic主要做了安全增強。分佈式可信計算(DTC)通過密碼驗證客戶整個環境(從硬件到分佈式集群)的完整性。當企業運行Kubernetes在一個偏遠的、合作的基礎設施上。 添加集群節點,驗證此節點為受信節點是很重要的。即使潛在的缺乏抵抗力的數據中心,DTC同樣能保證集群的完整性。

同時,Tectonic在構建、存儲、部署容器過程中,集成了CoreOS私有鏡像倉庫Quay企業版。

  • Canonical

Canonical提供Ubuntu分發版,並通過提供商業版Kubernetes擠入容器編排市場。Canonical為客戶提供穩定的上游的Kubernetes發佈,以及獲得上游的Kubernetes分支的早期版本。主節點可以擴展獨立的工作節點。工作節點可以自動輕易的移值,從公有云、私有云和裸機到Google Container Engine。Canonical除了管理容器生命週期的功能外,還包括創建刪除用戶訪問、提供維護模式、 支持最新版本的升級。

Canonical包括如下組件:Kubernetes控制檯、基於Prometheus的監控系統(收集和處理系統量度)、基於ELK的日誌監控、Flannel容器網絡、集成Ceph分佈式存儲。

Canonical使用現有的基礎設施和DevOps工具,規範優化了Kubernetes運行。運行Canonical的OpenStack客戶、裸機框架的(MAAS)服務、DevOps工具Juju,都可以輕易集成Kubernetes。

  • Kubernetes作為一個私有PaaS平臺

客戶部署PaaS主要規範了部署和部署環境。通過使用基於Kubernetes的PaaS,他們將在同一個平臺上管理傳統業務應用軟件和新的容器化應用。Kubernetes已被傳統的PaaS供應商採用,給企業客戶提供端到端的平臺。基於核心容器能力,這些PaaS產品提供完整的生命週期管理容器應用。

PaaS供應商添加了額外的功能,如應用分發、消息路由、服務代理、容量規劃、集成日誌。PaaS沒有暴露底層基礎設施,是面向開發者提供通用平臺。PaaS層試圖抽象kubernetes的複雜性、簡化工作流。

在基於kubernetes的PaaS平臺中,Apprenda和紅帽OpenShift是領先的。他們提供商業支持Kubernetes。其他Kubernetes的PaaS平臺,包括AppsCode和Eldarion Cloud,他們發佈做為公共雲服務。

  • Apprenda

Apprenda是一個企業PaaS平臺,針對微軟.NET客戶和java應用程序,提供一個有效的應用部署架構。該平臺設計目標是面向開發和運維團隊,為現有的私有部署的企業應用提供PaaS功能。

近日,Apprenda擁抱Docker和Kubernetes,解決傳統與新應用軟件的差距。客戶將能夠混合和匹配DevOps過程,對於.net應用、還是java應用程序、或容器應用,提供通用的DevOps過程。

開發者和運維團隊可以使用現有的CI/CD工具維持舊的應用程序以及Kubernetes應用。雖然Apprenda PaaS不是開源軟件,但通過hooks和REST API,它能夠集成到其他平臺。部署在Kubernetes應用程序,為傳統的.NET或java應用程序提供標準協議。

Apprenda是一個策略驅動的PaaS平臺,運維團隊通過定義粒度策略,管理應用發佈、監控、合規性和安全性。這種方法滿足企業客戶的目標,作為現有的應用程序門戶,並考慮包括容器應用。它允許部署、安全和合規策略集中定義和管理。同時在可擴展的平臺上,讓開發團隊專注於應用程序開發。

  • Red hat OpenShift

紅帽的OpenShift是基於kubernetes開源企業級PaaS平臺的領先者。Google之後,紅帽的OpenShift工程師是對kubernetes項目最活躍的貢獻者。

同其他競爭者一樣,紅帽早期OpenShift平臺是一個定製化的平臺實現,後來,採用了開發者工具Docker和kubernetes,OpenShift轉移到基於kubernetes引擎的PaaS平臺。

OpenShift提煉Kubernetes基礎結構,它是面向開發者經驗的平臺,它提供了一套用戶接口連接Git,及專有的紅帽企業Linux(RHEL)工具,Docker和kubernetes。開發者通過已有的Git工具或者集成的鏡像倉庫與平臺交互。該平臺包括一個Source-to-Image (S2I)工具,能轉變開發代碼變成運行的Docker容器,並保留Docker鏡像分層結構。紅帽基於 Kubernetes添加企業級特性,如項目、用戶和組、多租戶功能。在同一集群中,多部門或業務單元能部署不同的應用,並達到資源隔離。OpenShift還提供了應用程序日誌的全面視圖,包括實時日誌、構建日誌和部署日誌。

DevOps團隊可以使用熟悉的Docker和Kubernetes工具管理平臺。OpenShift配有內置策略管理工具,著眼於用戶認證和管理內置的鏡像倉庫。

  • Kubernetes作為雲原始基礎架構

業內人士對雲原生應用的定義雖然沒有確切的共識,但大多數人同意,雲原始應用可以被定義為新的應用程序,打包成容器、微服務架構、運行在彈性基礎架構、並通過敏捷DevOps流程管理。雲原生應用與十二因子應用的原則是緊密一致的。

不是每個容器應用都是一個雲原生應用。Kubernetes用來部署和管理容器應用程序。同時,Kubernetes可以管理雲原生應用程序的生命週期。客戶可以選擇Kubernetes作為部署平臺的首選,設計、開發、測試、部署和管理雲原生應用程序。

雲原生應用被部署在現有的基礎設施或PaaS的Kubernetes集群上。儘管與上面定義的場景重疊,這種情況適用於組織構建應用,他們不需要與現有的遺留應用程序交互。

雲原生應用程序可以利用Kubernetes先進的功能,如滾動更新、金絲雀部署、水平pod和集群伸縮。Kubernetes作為雲原生應用的基礎架構,仍是在不斷髮展,值得指出的是,這對許多用戶和組織具有戰略價值。

Kubernetes作為雲原生應用的基礎架構包括如下項目:Intel和CoreOS的Stackanetes項目。Stackanetes是基於kurbernetes的OpenStack。它提供了高可用性、自愈、OpenStack IaaS的全部特徵,並且提供Kubernetes自動化部署和管理。該項目的技術預覽將在巴塞羅那OpenStack大會上發佈。

相關推薦

推薦中...