什么是容器編排划滋?
如今饵筑,像Docker這樣的容器平臺(tái)非常流行,用于基于微服務(wù)架構(gòu)的應(yīng)用程序打包古毛》妫可以使容器具有高度可伸縮性,可以按需創(chuàng)建容器稻薇。雖然這對(duì)于幾個(gè)容器來說是很好的嫂冻,但請(qǐng)想象您有數(shù)百個(gè)。
當(dāng)數(shù)量隨需求動(dòng)態(tài)增加時(shí)塞椎,管理容器生命周期及其管理變得極為困難桨仿。
容器編排通過自動(dòng)化容器的調(diào)度,部署案狠,可伸縮性服傍,負(fù)載平衡,可用性和聯(lián)網(wǎng)來解決該問題骂铁。容器編排是容器和服務(wù)生命周期的自動(dòng)化和管理吹零。
1.Kubernetes
Kubernetes是一個(gè)開源平臺(tái),最初由Google設(shè)計(jì)拉庵,現(xiàn)在由Cloud Native Computing Foundation維護(hù)灿椅。Kubernetes支持聲明性配置和自動(dòng)化。它可以幫助自動(dòng)化容器化工作負(fù)載和服務(wù)的部署钞支,擴(kuò)展和管理茫蛹。
Kubernetes API有助于在用戶,集群組件和外部第三方組件之間建立通信烁挟。Kubernetes控制平面婴洼,并且節(jié)點(diǎn)在一組一起構(gòu)成集群的節(jié)點(diǎn)上運(yùn)行。應(yīng)用程序工作負(fù)載由一個(gè)或多個(gè)在工作程序節(jié)點(diǎn)上運(yùn)行的Pod組成撼嗓〖聿桑控制平面管理Pod和工作程序節(jié)點(diǎn)欢唾。
2.OpenShift
它基于Redhat企業(yè)Linux和Kubernetes引擎構(gòu)建。Openshift具有多種功能警没,可通過UI和CLI管理集群匈辱。Redhat還提供了Openshift的兩個(gè)變體,
· Openshift Online –作為軟件即服務(wù)(SaaS)提供
· OpenShift專用–作為托管服務(wù)提供
Openshift Origin(原始社區(qū)分發(fā))是一個(gè)開源上游社區(qū)項(xiàng)目杀迹,在OpenShift Container Platform亡脸,Openshift Online和OpenShift Dedicated中使用。
3.Nomad
Nomad是一個(gè)簡單树酪,靈活且易于使用的工作負(fù)載協(xié)調(diào)器浅碾,可在內(nèi)部部署和云范圍內(nèi)大規(guī)模部署和管理容器和非容器化應(yīng)用程序。Nomad以單個(gè)二進(jìn)制文件的形式運(yùn)行续语,占用資源少(35MB)垂谢,并在macOS,Windows和Linux上受支持疮茄。
開發(fā)人員使用聲明性基礎(chǔ)架構(gòu)代碼(IaC)來部署其應(yīng)用程序滥朱,并定義應(yīng)如何部署應(yīng)用程序。Nomad會(huì)自動(dòng)從故障中恢復(fù)應(yīng)用程序力试。
任何類型的Nomad Orchestrate應(yīng)用程序(不僅是容器)徙邻。它為Docker,Windows畸裳,Java缰犁,VM等提供一流的支持。
特征
· 簡單可靠
· 使舊版應(yīng)用程序現(xiàn)代化怖糊,而無需重寫
· 輕松規(guī)模聯(lián)盟
· 經(jīng)驗(yàn)證的可擴(kuò)展性
· 輕松多云
· 與Terraform帅容,Consul和Vault的本機(jī)集成
4.Docker Swarm
Docker Swarm使用聲明性模型。您可以定義服務(wù)的所需狀態(tài)伍伤,Docker將維護(hù)該狀態(tài)并徘。Docker Enterprise Edition已將Kubernetes與Swarm集成在一起。Docker現(xiàn)在提供了編排引擎選擇的靈活性扰魂。Docker引擎CLI用于創(chuàng)建大量Docker引擎麦乞,可在其中部署應(yīng)用程序服務(wù)。
Docker Swarm由兩個(gè)主要組件組成:
· 管理器–管理器節(jié)點(diǎn)將任務(wù)分配給集群中的工作器節(jié)點(diǎn)阅爽。根據(jù)Raft共識(shí)算法選舉領(lǐng)導(dǎo)者路幸。領(lǐng)導(dǎo)負(fù)責(zé)處理所有群集管理和任務(wù)編排決策荐开。
· 工作節(jié)點(diǎn)-工作節(jié)點(diǎn)從管理節(jié)點(diǎn)接收任務(wù)并執(zhí)行付翁。
特征
· 與Docker Engine集成的集群管理
· 分散式設(shè)計(jì)
· 聲明式服務(wù)模型
· 縮放比例
· 所需狀態(tài)對(duì)帳
· 多主機(jī)聯(lián)網(wǎng)
· 服務(wù)發(fā)現(xiàn)
· 負(fù)載均衡
· 默認(rèn)安全
· 滾動(dòng)更新
5.Docker Compose
Docker Compose用于定義和運(yùn)行可協(xié)同工作的多容器應(yīng)用程序。Docker-compose描述了相互共享的服務(wù)組晃听,這些服務(wù)組共享軟件依賴關(guān)系百侧,并進(jìn)行編排和擴(kuò)展砰识。
您可以使用YAML文件(dockerfile)來配置應(yīng)用程序的服務(wù)。然后佣渴,使用docker-compose up命令辫狼,從您的配置中創(chuàng)建并啟動(dòng)所有服務(wù)。
docker-compose.yml如下所示:
version:?'3'
volumes:
??app_data:
services:
??elasticsearch:
????image:?docker.elastic.co/elasticsearch/elasticsearch:6.8.0
????ports:
??????-?9200:9200
??????-?9300:9300
????volumes:
??????-?./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
??????-?./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
??????-?./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data
??kibana:
????depends_on:
??????-?elasticsearch
????image:?docker.elastic.co/kibana/kibana:6.8.0
????ports:
??????-?5601:5601
????volumes:
??????-?./kibana.yml:/usr/share/kibana/config/kibana.yml
??app:
????depends_on:
??????-?elasticsearch
????image:?asadali08527/app:latest
????ports:
??????-?8080:8080
????volumes:
??????-?app_data:/var/lib/app/
可以使用Docker Compose將應(yīng)用程序代碼分解為幾個(gè)獨(dú)立運(yùn)行的服務(wù)辛润,這些服務(wù)使用內(nèi)部網(wǎng)絡(luò)進(jìn)行通信膨处。該工具提供了用于管理應(yīng)用程序整個(gè)生命周期的CLI。Docker Compose傳統(tǒng)上一直專注于開發(fā)和測(cè)試工作流砂竖,但現(xiàn)在他們專注于更多面向生產(chǎn)的功能真椿。
Docker Engine可以是配備有Docker Machine或整個(gè)Docker Swarm集群的獨(dú)立實(shí)例。
特征
· 單個(gè)主機(jī)上的多個(gè)隔離環(huán)境
· 創(chuàng)建容器時(shí)保留卷數(shù)據(jù)
· 僅重新創(chuàng)建已更改的容器
· 變量和環(huán)境之間的合成移動(dòng)
6.Minikube
Minikube允許用戶在本地運(yùn)行Kubernetes乎澄。使用Minikube突硝,您可以在個(gè)人計(jì)算機(jī)上的單節(jié)點(diǎn)Kubernetes群集內(nèi)本地測(cè)試應(yīng)用程序。Minikube對(duì)Kubernetes儀表板提供了集成支持置济。
Minikube運(yùn)行Kubernetes的最新穩(wěn)定版本并支持以下功能解恰。
· 負(fù)載均衡
· 多集群
· 持久卷
· 節(jié)點(diǎn)端口
· ConfigMap和秘密
· 容器運(yùn)行時(shí):Docker,CRI-O和容器化
· 啟用CNI(容器網(wǎng)絡(luò)接口)
7.Marathon
Marathon適用于Apache Mesos浙于,它具有協(xié)調(diào)應(yīng)用程序和框架的能力护盈。
Apache Mesos是一個(gè)開源集群管理器。Mesos是Apache的一個(gè)項(xiàng)目路媚,能夠運(yùn)行容器化和非容器化工作負(fù)載黄琼。Mesos群集中的主要組件是Mesos代理節(jié)點(diǎn),Mesos主服務(wù)器整慎,ZooKeeper脏款,框架–框架與主框架協(xié)調(diào)以將任務(wù)調(diào)度到代理節(jié)點(diǎn)上。用戶與Marathon框架進(jìn)行交互以安排作業(yè)裤园。
Marathon調(diào)度程序使用ZooKeeper來定位當(dāng)前的主機(jī)以提交任務(wù)撤师。馬拉松調(diào)度程序和Mesos主服務(wù)器具有運(yùn)行中的輔助主服務(wù)器,以確保高可用性拧揽√甓埽客戶端使用REST API與Marathon進(jìn)行交互。
特征
· 高可用性
· 有狀態(tài)的應(yīng)用
· 美麗而強(qiáng)大的用戶界面
· 約束條件
· 服務(wù)發(fā)現(xiàn)和負(fù)載平衡
· 健康檢查
· 活動(dòng)訂閱
· 指標(biāo)
· REST API
8.Cloudify
Cloudify是一個(gè)開源的云編排工具淤袜,用于容器和微服務(wù)的部署自動(dòng)化以及生命周期管理痒谴。它提供了一些功能,例如按需群集铡羡,自動(dòng)修復(fù)以及在基礎(chǔ)架構(gòu)級(jí)別進(jìn)行擴(kuò)展积蔚。Cloudify可以管理容器基礎(chǔ)架構(gòu)并協(xié)調(diào)在容器平臺(tái)上運(yùn)行的服務(wù)。
它可以輕松地與Docker和基于Docker的容器管理器集成烦周,包括以下內(nèi)容尽爆。
· Docker Swarm
· Docker撰寫
· Kubernetes
· Apache Mesos
Cloudify可以幫助創(chuàng)建怎顾,修復(fù),擴(kuò)展和拆除容器集群漱贱。容器編排是提供可運(yùn)行的容器管理器的可擴(kuò)展且高度可用的基礎(chǔ)結(jié)構(gòu)的關(guān)鍵槐雾。Cloudify提供了跨平臺(tái)協(xié)調(diào)異構(gòu)服務(wù)的能力。您可以使用CLI和Cloudify Manager部署應(yīng)用程序幅狮。
9.Rancher
Rancher是一個(gè)使用容器編排(稱為牛)的開源平臺(tái)募强。它使您可以利用Kubernetes,Swarm崇摄,Mesos等編排服務(wù)钻注。Rancher提供了管理容器所需的軟件,因此組織無需使用一套獨(dú)特的開源技術(shù)從頭開始構(gòu)建容器服務(wù)平臺(tái)配猫。
Rancher 2.x允許管理在客戶指定的提供商上運(yùn)行的Kubernetes集群幅恋。
Rancher入門需要兩個(gè)步驟。
1.準(zhǔn)備Linux主機(jī) 準(zhǔn)備一個(gè)具有64位Ubuntu 16.04或18.04(或其他受支持的Linux發(fā)行版泵肄,至少有4GB內(nèi)存)的Linux 主機(jī)捆交。在該主機(jī)上安裝受支持的Docker版本。
2.啟動(dòng)服務(wù)器 要安裝和運(yùn)行Rancher腐巢,請(qǐng)?jiān)谥鳈C(jī)上執(zhí)行以下Docker命令:
$?sudo?docker?run?-d?--restart=unless-stopped?-p?80:80?-p?443:443?rancher/rancher
用戶界面允許管理數(shù)千個(gè)Kubernetes集群和節(jié)點(diǎn)品追。
10.Containership
Containership用于實(shí)現(xiàn)多云Kubernetes基礎(chǔ)架構(gòu)的部署和管理。通過單個(gè)工具可以靈活地在公共冯丙,私有云和本地環(huán)境中進(jìn)行操作肉瓦。它使您能夠跨所有主要云提供商配置,管理和監(jiān)視您的Kubernetes集群胃惜。
使用云原生工具(例如用于配置的Terraform泞莉, Prometheus進(jìn)行監(jiān)視以及Calico進(jìn)行網(wǎng)絡(luò)和策略管理。它建立在香草Kubernetes的頂部船殉。Containership平臺(tái)提供直觀的儀表板鲫趁,以及用于復(fù)雜自動(dòng)化的強(qiáng)大REST API。
特征
· 多云儀表板
· 審核日志
· GPU實(shí)例支持
· 無中斷升級(jí)
· 可調(diào)度大師
· 綜合指標(biāo)
· 實(shí)時(shí)記錄
· 零停機(jī)時(shí)間部署
· 持久存儲(chǔ)支持
· 私人注冊(cè)支持
· 工作負(fù)載自動(dòng)縮放
· SSH密鑰管理
11.AZK
AZK是一個(gè)通過清單文件(Azkfile.js)用于開發(fā)環(huán)境的開源編排工具利虫,該文件可幫助開發(fā)人員安裝挨厚,配置和運(yùn)行用于使用不同開源技術(shù)開發(fā)Web應(yīng)用程序的常用工具。
AZK使用容器而不是虛擬機(jī)糠惫。容器就像虛擬機(jī)一樣疫剃,具有更好的性能和更低的物理資源消耗。
可以重復(fù)使用Azkfile.js文件來添加新組件或從頭開始創(chuàng)建新組件硼讽。它可以共享巢价,從而確保不同編程器機(jī)器上的開發(fā)環(huán)境之間的總體平衡,并減少部署期間發(fā)生錯(cuò)誤的機(jī)會(huì)。
12.GKE
GKE為Google Cloud Platform上的容器應(yīng)用程序編排提供了完全托管的解決方案蹄溉。GKE集群由Kubernetes提供支持。您可以使用Kubernetes CLI與集群進(jìn)行交互您炉。Kubernetes命令可用于部署和管理應(yīng)用程序柒爵,執(zhí)行管理任務(wù),設(shè)置策略以及監(jiān)視已部署工作負(fù)載的運(yùn)行狀況赚爵。
Google Cloud的高級(jí)管理功能也可用于GKE集群棉胀,例如Google Cloud的負(fù)載平衡,節(jié)點(diǎn)池冀膝,節(jié)點(diǎn)的自動(dòng)擴(kuò)展唁奢,自動(dòng)升級(jí),節(jié)點(diǎn)自動(dòng)修復(fù)窝剖,日志記錄以及使用Google Cloud的操作套件進(jìn)行監(jiān)視麻掸。
Google Cloud提供CI / CD工具來幫助您構(gòu)建和提供應(yīng)用程序容器。您可以使用Cloud Build從各種源代碼存儲(chǔ)庫構(gòu)建容器映像(例如Docker)赐纱,并可以使用Container Registry存儲(chǔ)容器映像脊奋。
GKE是具有預(yù)建部署模板的企業(yè)就緒解決方案。
13.AKS
AKS是Azure提供的完全托管的Kubernetes服務(wù)疙描,它提供無服務(wù)器的Kubernetes诚隙,安全性和治理。AKS管理您的Kubernetes集群起胰,并允許您輕松部署容器化的應(yīng)用程序久又。AKS自動(dòng)配置所有Kubernetes主節(jié)點(diǎn)和節(jié)點(diǎn)。您只需要管理和維護(hù)代理節(jié)點(diǎn)效五。
AKS是免費(fèi)的地消;您只需為集群中的代理節(jié)點(diǎn)付費(fèi),而無需為主節(jié)點(diǎn)付費(fèi)畏妖。您可以在Azure門戶中或以編程方式創(chuàng)建AKS群集犯建。Azure還支持其他功能,例如高級(jí)網(wǎng)絡(luò)瓜客,Azure Active Directory集成以及使用Azure Monitor的監(jiān)視适瓦。
AKS還支持Windows Server容器∑滓牵可以從Azure Monitor監(jiān)視其群集和已部署的應(yīng)用程序性能玻熙。日志存儲(chǔ)在Azure Log Analytics工作區(qū)中。
AKS已通過Kubernetes認(rèn)證疯攒。
14.AWS EKS
AWS EKS是一項(xiàng)完全托管的Kubernetes服務(wù)嗦随。AWS允許您使用AWS Fragrate(一種用于容器的無服務(wù)器計(jì)算)運(yùn)行EKS集群。Fragrance消除了調(diào)配和管理服務(wù)器的需要,從而允許為每個(gè)應(yīng)用程序按資源付費(fèi)枚尼。
AWS允許通過EKS使用其他功能贴浙,例如Amazon CloudWatch,Amazon虛擬私有云(VPC)署恍,AWS Identity崎溃,Auto Scaling組和訪問管理(IAM),監(jiān)控盯质,擴(kuò)展和負(fù)載平衡應(yīng)用程序袁串。EKS與AWS App Mesh集成在一起并提供Kubernetes原生體驗(yàn)。EKS運(yùn)行最新的Kubernetes并通過Kubernetes認(rèn)證呼巷。