Kubernetes能夠做爲容器編排引擎、PaaS或者做爲雲原生應用的核心基礎架構被用戶部署到生產環境。這些用例並非相互排斥的。DevOps能夠委託基於Kubernetes的PaaS層完成整個應用生命週期的管理(ALM),也能夠獨立部署Kubernetes管理CI/CD工具部署的應用。對於新應用程序可使用Kubernetes管理微服務架構的雲原始應用,支持先進的場景,如滾動升級和金絲雀的部署。html
這一部分將抓取頂級客戶使用Kubernetes的案例 。在此以前,讓咱們仔細看一個企業的容器管理平臺的重要組件。java
企業容器管理平臺的構成部分linux
客戶須要安裝一套工具來有效地管理容器化應用程序的生命週期。它們構成容器管理平臺核心組成部分。這種模式的平臺變得愈來愈廣泛,對於部署和管理生產級容器,相當重要。ios
操做系統安全
容器減小應用程序對底層操做系統的依賴性。運行容器的工做負載喜歡選擇輕量級的操做系統,像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大會上發佈。
原文來自:http://www.yunweipai.com/archives/18434.html
本文地址:https://www.linuxprobe.com/kubernetes-deployment-scenarios.html編輯員:郭建鵬,審覈員:逄增寶