《Kubernetes的四種用戶部署場景》要點(diǎn):
本文介紹了Kubernetes的四種用戶部署場景,希望對您有用。如果有疑問,可以聯(lián)系我們。
Kubernetes可以作為容器編排引擎、PaaS或者作為云原生應(yīng)用的核心基礎(chǔ)架構(gòu)被用戶部署到生產(chǎn)環(huán)境.這些用例并不是相互排斥的.DevOps可以委托基于Kubernetes的PaaS層完成整個(gè)應(yīng)用生命周期的管理(ALM),也可以獨(dú)立部署Kubernetes管理CI/CD工具部署的應(yīng)用.對于新應(yīng)用程序可以使用Kubernetes管理微服務(wù)架構(gòu)的云原始應(yīng)用,支持先進(jìn)的場景,如滾動升級和金絲雀的部署.
這一部分將抓取頂級客戶使用Kubernetes的案例 .在此之前,讓我們仔細(xì)看一個(gè)企業(yè)的容器管理平臺的重要組件.
客戶需要安裝一套工具來有效地管理容器化應(yīng)用程序的生命周期.它們構(gòu)成容器管理平臺核心組成部分.這種模式的平臺變得越來越普遍,對于部署和管理生產(chǎn)級容器,至關(guān)重要.
操作系統(tǒng)
容器減少應(yīng)用程序?qū)Φ讓硬僮飨到y(tǒng)的依賴性.運(yùn)行容器的工作負(fù)載喜歡選擇輕量級的操作系統(tǒng),像CoreOS和RedHat Atomic Host,降低基礎(chǔ)設(shè)施的管理成本.
容器引擎
容器引擎管理特定主機(jī)或節(jié)點(diǎn)上運(yùn)行的容器的生命周期,編排工具和容器引擎共同調(diào)度管理集群節(jié)點(diǎn)的容器.Docker和rkt是兩種容器引擎.
鏡像倉庫
鏡像倉庫是容器鏡像的存儲庫.運(yùn)行時(shí)編排引擎可以通過鏡像倉庫安全訪問鏡像.Docker的Trusted Registry,CoreOS的Quay Enterprise和JFrog的Artifactory都是可選擇的鏡像倉庫.
鏡像安全
鏡像是容器平臺非常重要的基礎(chǔ),需要掃描鏡像的脆弱性和潛在威脅.CoreOS的Clair、Twistlock和OpenSCAP可以用于鏡像掃描.
容器編排
這是管理容器工作負(fù)載的最重要部分.它提供分布式容器管理和容器調(diào)度服務(wù).Kubernetes,Docker原生編排Swarm及Mesosphere DC/OS提供容器編排和容器管理.
分布式存儲
容器需要一種新的分布式存儲來管理有狀態(tài)的工作負(fù)載.產(chǎn)品如ClusterHQ、Portworx、Joyent Manta和Diamanti提供容器存儲.
監(jiān)測
生產(chǎn)級工作負(fù)載需要不斷的查看應(yīng)用的狀態(tài)和健康.容器監(jiān)測解決方案包括基礎(chǔ)設(shè)施監(jiān)控和運(yùn)行容器的監(jiān)控.Datadog、Sysdig、Prometheus提供容器監(jiān)控服務(wù).
日志
通過日志分析,可以了解容器及其主機(jī)的性能、穩(wěn)定性和可靠性.同任何生產(chǎn)的工作負(fù)載一樣,日志是非常重要的.Splunk、Loggly、Logentries提供容器日志服務(wù).
代碼管理
代碼管理(SCM)通常用于維護(hù)代碼版本,同時(shí),對容器化工作負(fù)載(如:鏡像和Kubernetes對象)的版本也起著重要的作用.現(xiàn)有的SCM解決方案,如GitHub,Bitbucket和Gitlab,可以用于管理代碼和容器化工作負(fù)載.
構(gòu)建自動化
容器鏡像作為構(gòu)建CI/CD管道的一部分.通過利用現(xiàn)有的工作流和創(chuàng)建自動化管道,客戶可以實(shí)現(xiàn)容器化應(yīng)用的自動部署.專業(yè)CI/CD的工具,如Shippable,或現(xiàn)有的工具,像Jenkins,都可以用來擴(kuò)展,作為容器化應(yīng)用的自動化部署工具.
配置管理
傳統(tǒng)的配置管理工具已經(jīng)擴(kuò)展支持容器.客戶能混合和匹配容器化和虛擬化技術(shù),使用統(tǒng)一的工具提供創(chuàng)建、配置、部署和管理應(yīng)用程序.Chef、Puppet、Ansible和SaltStack已經(jīng)增加了容器的支持,可以利用現(xiàn)有的playbooks和recipes管理容器化應(yīng)用.
Kubernetes最常見的用法是管理生產(chǎn)級容器.客戶可以選擇部署開源版本的Kubernetes或使用商業(yè)版.部署目標(biāo)可能是私有部署、公共云或混合云.
在這種情況下,客戶可以使用混合DevOps工具管理現(xiàn)有的應(yīng)用和新的應(yīng)用程序,并且,可以使用一組異構(gòu)工具,如:管理鏡像倉庫、安全掃描、存儲、網(wǎng)絡(luò)和自動化構(gòu)建.Kubernetes整合現(xiàn)有的工具構(gòu)造容器編排和容器管理工具.客戶可以使用商業(yè)版Kubernetes,如Tectonic,或企業(yè)分發(fā)版Canonical.
CoreOS Tectonic
CoreOS誕生于容器的時(shí)代.Tectonic是首個(gè)基于Kubernetes、端到端的企業(yè)容器編排引擎.CoreOS技術(shù)棧結(jié)合了Kubernetes,并做了安全增強(qiáng).客戶獲得最新的更新以保持他們的基礎(chǔ)架構(gòu)是最新的.
對比Kubernetes,Tectonic主要做了安全增強(qiáng).分布式可信計(jì)算(DTC)通過密碼驗(yàn)證客戶整個(gè)環(huán)境(從硬件到分布式集群)的完整性.當(dāng)企業(yè)運(yùn)行Kubernetes在一個(gè)偏遠(yuǎn)的、合作的基礎(chǔ)設(shè)施上. 添加集群節(jié)點(diǎn),驗(yàn)證此節(jié)點(diǎn)為受信節(jié)點(diǎn)是很重要的.即使?jié)撛诘娜狈Φ挚沽Φ臄?shù)據(jù)中心,DTC同樣能保證集群的完整性.
同時(shí),Tectonic在構(gòu)建、存儲、部署容器過程中,集成了CoreOS私有鏡像倉庫Quay企業(yè)版.
Canonical
Canonical提供Ubuntu分發(fā)版,并通過提供商業(yè)版Kubernetes擠入容器編排市場.Canonical為客戶提供穩(wěn)定的上游的Kubernetes發(fā)布,以及獲得上游的Kubernetes分支的早期版本.主節(jié)點(diǎn)可以擴(kuò)展獨(dú)立的工作節(jié)點(diǎn).工作節(jié)點(diǎn)可以自動輕易的移值,從公有云、私有云和裸機(jī)到Google Container Engine.Canonical除了管理容器生命周期的功能外,還包括創(chuàng)建刪除用戶訪問、提供維護(hù)模式、 支持最新版本的升級.
Canonical包括如下組件:Kubernetes控制臺、基于Prometheus的監(jiān)控系統(tǒng)(收集和處理系統(tǒng)量度)、基于ELK的日志監(jiān)控、Flannel容器網(wǎng)絡(luò)、集成Ceph分布式存儲.
Canonical使用現(xiàn)有的基礎(chǔ)設(shè)施和DevOps工具,規(guī)范優(yōu)化了Kubernetes運(yùn)行.運(yùn)行Canonical的OpenStack客戶、裸機(jī)框架的(MAAS)服務(wù)、DevOps工具Juju,都可以輕易集成Kubernetes.
客戶部署PaaS主要規(guī)范了部署和部署環(huán)境.通過使用基于Kubernetes的PaaS,他們將在同一個(gè)平臺上管理傳統(tǒng)業(yè)務(wù)應(yīng)用軟件和新的容器化應(yīng)用.Kubernetes已被傳統(tǒng)的PaaS供應(yīng)商采用,給企業(yè)客戶提供端到端的平臺.基于核心容器能力,這些PaaS產(chǎn)品提供完整的生命周期管理容器應(yīng)用.
PaaS供應(yīng)商添加了額外的功能,如應(yīng)用分發(fā)、消息路由、服務(wù)代理、容量規(guī)劃、集成日志.PaaS沒有暴露底層基礎(chǔ)設(shè)施,是面向開發(fā)者提供通用平臺.PaaS層試圖抽象Kubernetes的復(fù)雜性、簡化工作流.
在基于Kubernetes的PaaS平臺中,Apprenda和紅帽O(jiān)penShift是領(lǐng)先的.他們提供商業(yè)支持Kubernetes.其他Kubernetes的PaaS平臺,包括AppsCode和Eldarion Cloud,他們發(fā)布做為公共云服務(wù).
Apprenda
Apprenda是一個(gè)企業(yè)PaaS平臺,針對微軟.NET客戶和java應(yīng)用程序,提供一個(gè)有效的應(yīng)用部署架構(gòu).該平臺設(shè)計(jì)目標(biāo)是面向開發(fā)和運(yùn)維團(tuán)隊(duì),為現(xiàn)有的私有部署的企業(yè)應(yīng)用提供PaaS功能.
近日,Apprenda擁抱Docker和Kubernetes,解決傳統(tǒng)與新應(yīng)用軟件的差距.客戶將能夠混合和匹配DevOps過程,對于.net應(yīng)用、還是java應(yīng)用程序、或容器應(yīng)用,提供通用的DevOps過程.
開發(fā)者和運(yùn)維團(tuán)隊(duì)可以使用現(xiàn)有的CI/CD工具維持舊的應(yīng)用程序以及Kubernetes應(yīng)用.雖然Apprenda PaaS不是開源軟件,但通過hooks和REST API,它能夠集成到其他平臺.部署在Kubernetes應(yīng)用程序,為傳統(tǒng)的.NET或java應(yīng)用程序提供標(biāo)準(zhǔn)協(xié)議.
Apprenda是一個(gè)策略驅(qū)動的PaaS平臺,運(yùn)維團(tuán)隊(duì)通過定義粒度策略,管理應(yīng)用發(fā)布、監(jiān)控、合規(guī)性和安全性.這種方法滿足企業(yè)客戶的目標(biāo),作為現(xiàn)有的應(yīng)用程序門戶,并考慮包括容器應(yīng)用.它允許部署、安全和合規(guī)策略集中定義和管理.同時(shí)在可擴(kuò)展的平臺上,讓開發(fā)團(tuán)隊(duì)專注于應(yīng)用程序開發(fā).
Red hat OpenShift
紅帽的OpenShift是基于Kubernetes開源企業(yè)級PaaS平臺的領(lǐng)先者.Google之后,紅帽的OpenShift工程師是對Kubernetes項(xiàng)目最活躍的貢獻(xiàn)者.
同其他競爭者一樣,紅帽早期OpenShift平臺是一個(gè)定制化的平臺實(shí)現(xiàn),后來,采用了開發(fā)者工具Docker和Kubernetes,OpenShift轉(zhuǎn)移到基于Kubernetes引擎的PaaS平臺.
OpenShift提煉Kubernetes基礎(chǔ)結(jié)構(gòu),它是面向開發(fā)者經(jīng)驗(yàn)的平臺,它提供了一套用戶接口連接Git,及專有的紅帽企業(yè)Linux(RHEL)工具,Docker和Kubernetes.開發(fā)者通過已有的Git工具或者集成的鏡像倉庫與平臺交互.該平臺包括一個(gè)Source-to-Image (S2I)工具,能轉(zhuǎn)變開發(fā)代碼變成運(yùn)行的Docker容器,并保留Docker鏡像分層結(jié)構(gòu).紅帽基于 Kubernetes添加企業(yè)級特性,如項(xiàng)目、用戶和組、多租戶功能.在同一集群中,多部門或業(yè)務(wù)單元能部署不同的應(yīng)用,并達(dá)到資源隔離.OpenShift還提供了應(yīng)用程序日志的全面視圖,包括實(shí)時(shí)日志、構(gòu)建日志和部署日志.
DevOps團(tuán)隊(duì)可以使用熟悉的Docker和Kubernetes工具管理平臺.OpenShift配有內(nèi)置策略管理工具,著眼于用戶認(rèn)證和管理內(nèi)置的鏡像倉庫.
業(yè)內(nèi)人士對云原生應(yīng)用的定義雖然沒有確切的共識,但大多數(shù)人同意,云原始應(yīng)用可以被定義為新的應(yīng)用程序,打包成容器、微服務(wù)架構(gòu)、運(yùn)行在彈性基礎(chǔ)架構(gòu)、并通過敏捷DevOps流程管理.云原生應(yīng)用與十二因子應(yīng)用的原則是緊密一致的.
不是每個(gè)容器應(yīng)用都是一個(gè)云原生應(yīng)用.Kubernetes用來部署和管理容器應(yīng)用程序.同時(shí),Kubernetes可以管理云原生應(yīng)用程序的生命周期.客戶可以選擇Kubernetes作為部署平臺的首選,設(shè)計(jì)、開發(fā)、測試、部署和管理云原生應(yīng)用程序.
云原生應(yīng)用被部署在現(xiàn)有的基礎(chǔ)設(shè)施或PaaS的Kubernetes集群上.盡管與上面定義的場景重疊,這種情況適用于組織構(gòu)建應(yīng)用,他們不需要與現(xiàn)有的遺留應(yīng)用程序交互.
云原生應(yīng)用程序可以利用Kubernetes先進(jìn)的功能,如滾動更新、金絲雀部署、水平pod和集群伸縮.Kubernetes作為云原生應(yīng)用的基礎(chǔ)架構(gòu),仍是在不斷發(fā)展,值得指出的是,這對許多用戶和組織具有戰(zhàn)略價(jià)值.
Kubernetes作為云原生應(yīng)用的基礎(chǔ)架構(gòu)包括如下項(xiàng)目:Intel和CoreOS的Stackanetes項(xiàng)目.Stackanetes是基于kurbernetes的OpenStack.它提供了高可用性、自愈、OpenStack IaaS的全部特征,并且提供Kubernetes自動化部署和管理.該項(xiàng)目的技術(shù)預(yù)覽將在巴塞羅那OpenStack大會上發(fā)布.
深入淺出學(xué)習(xí)etcd
etcd為分布式系統(tǒng)提供可靠、高效的配置管理服務(wù),在Docker、Kubernetes、Mesos等平臺中扮演了越來越重要的角色.作為2013年開始的項(xiàng)目,它還很年輕,官方文檔中缺乏實(shí)現(xiàn)上全面、系統(tǒng)的介紹,本課程深入淺出地介紹了etcd的實(shí)現(xiàn),并為運(yùn)維和二次開發(fā)提供了系統(tǒng)的指導(dǎo)和建議.
系列文章:
文章來自微信公眾號:Docker
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4082.html