《Kubernetes的四種用戶部署場景》要點:
本文介紹了Kubernetes的四種用戶部署場景,希望對您有用。如果有疑問,可以聯系我們。
Kubernetes可以作為容器編排引擎、PaaS或者作為云原生應用的核心基礎架構被用戶部署到生產環境.這些用例并不是相互排斥的.DevOps可以委托基于Kubernetes的PaaS層完成整個應用生命周期的管理(ALM),也可以獨立部署Kubernetes管理CI/CD工具部署的應用.對于新應用程序可以使用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或使用商業版.部署目標可能是私有部署、公共云或混合云.
在這種情況下,客戶可以使用混合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.
客戶部署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配有內置策略管理工具,著眼于用戶認證和管理內置的鏡像倉庫.
業內人士對云原生應用的定義雖然沒有確切的共識,但大多數人同意,云原始應用可以被定義為新的應用程序,打包成容器、微服務架構、運行在彈性基礎架構、并通過敏捷DevOps流程管理.云原生應用與十二因子應用的原則是緊密一致的.
不是每個容器應用都是一個云原生應用.Kubernetes用來部署和管理容器應用程序.同時,Kubernetes可以管理云原生應用程序的生命周期.客戶可以選擇Kubernetes作為部署平臺的首選,設計、開發、測試、部署和管理云原生應用程序.
云原生應用被部署在現有的基礎設施或PaaS的Kubernetes集群上.盡管與上面定義的場景重疊,這種情況適用于組織構建應用,他們不需要與現有的遺留應用程序交互.
云原生應用程序可以利用Kubernetes先進的功能,如滾動更新、金絲雀部署、水平pod和集群伸縮.Kubernetes作為云原生應用的基礎架構,仍是在不斷發展,值得指出的是,這對許多用戶和組織具有戰略價值.
Kubernetes作為云原生應用的基礎架構包括如下項目:Intel和CoreOS的Stackanetes項目.Stackanetes是基于kurbernetes的OpenStack.它提供了高可用性、自愈、OpenStack IaaS的全部特征,并且提供Kubernetes自動化部署和管理.該項目的技術預覽將在巴塞羅那OpenStack大會上發布.
深入淺出學習etcd
etcd為分布式系統提供可靠、高效的配置管理服務,在Docker、Kubernetes、Mesos等平臺中扮演了越來越重要的角色.作為2013年開始的項目,它還很年輕,官方文檔中缺乏實現上全面、系統的介紹,本課程深入淺出地介紹了etcd的實現,并為運維和二次開發提供了系統的指導和建議.
系列文章:
文章來自微信公眾號:Docker