什么是容器编排?
如今,像Docker这样的容器平台非常流行,用于基于微服务架构的应用程序打包。可以使容器具有高度可伸缩性,可以按需创建容器。虽然这对于几个容器来说是很好的,但请想象您有数百个。
当数量随需求动态增加时,管理容器生命周期及其管理变得极为困难。
容器编排通过自动化容器的调度,部署,可伸缩性,负载平衡,可用性和联网来解决该问题。容器编排是容器和服务生命周期的自动化和管理。
1.Kubernetes
Kubernetes是一个开源平台,最初由Google设计,现在由Cloud Native Computing Foundation维护。Kubernetes支持声明性配置和自动化。它可以帮助自动化容器化工作负载和服务的部署,扩展和管理。
Kubernetes API有助于在用户,集群组件和外部第三方组件之间建立通信。Kubernetes控制平面,并且节点在一组一起构成集群的节点上运行。应用程序工作负载由一个或多个在工作程序节点上运行的Pod组成。控制平面管理Pod和工作程序节点。
2.OpenShift
Redhat提供了OpenShift容器平台即服务(PaaS)。它有助于在混合云环境中自动化安全和可扩展资源上的应用程序。它提供了用于构建,部署和管理容器化应用程序的企业级平台。
它基于Redhat企业Linux和Kubernetes引擎构建。Openshift具有多种功能,可通过UI和CLI管理集群。Redhat还提供了Openshift的两个变体,
· Openshift Online –作为软件即服务(SaaS)提供
· OpenShift专用–作为托管服务提供
Openshift Origin(原始社区分发)是一个开源上游社区项目,在OpenShift Container Platform,Openshift Online和OpenShift Dedicated中使用。
3.Nomad
Nomad是一个简单,灵活且易于使用的工作负载协调器,可在内部部署和云范围内大规模部署和管理容器和非容器化应用程序。Nomad以单个二进制文件的形式运行,占用资源少(35MB),并在macOS,Windows和Linux上受支持。
开发人员使用声明性基础架构代码(IaC)来部署其应用程序,并定义应如何部署应用程序。Nomad会自动从故障中恢复应用程序。
任何类型的Nomad Orchestrate应用程序(不仅是容器)。它为Docker,Windows,Java,VM等提供一流的支持。
特征
· 简单可靠
· 使旧版应用程序现代化,而无需重写
· 轻松规模联盟
· 经验证的可扩展性
· 轻松多云
· 与Terraform,Consul和Vault的本机集成
4.Docker Swarm
Docker Swarm使用声明性模型。您可以定义服务的所需状态,Docker将维护该状态。Docker Enterprise Edition已将Kubernetes与Swarm集成在一起。Docker现在提供了编排引擎选择的灵活性。Docker引擎CLI用于创建大量Docker引擎,可在其中部署应用程序服务。
Docker命令用于与集群进行交互。加入集群的机器称为节点,而Swarm管理器处理集群的活动。
Docker Swarm由两个主要组件组成:
· 管理器–管理器节点将任务分配给集群中的工作器节点。根据Raft共识算法选举领导者。领导负责处理所有群集管理和任务编排决策。
· 工作节点-工作节点从管理节点接收任务并执行。
特征
· 与Docker Engine集成的集群管理
· 分散式设计
· 声明式服务模型
· 缩放比例
· 所需状态对帐
· 多主机联网
· 服务发现
· 负载均衡
· 默认安全
· 滚动更新
5.Docker Compose
Docker Compose用于定义和运行可协同工作的多容器应用程序。Docker-compose描述了相互共享的服务组,这些服务组共享软件依赖关系,并进行编排和扩展。
您可以使用YAML文件(dockerfile)来配置应用程序的服务。然后,使用docker-compose up命令,从您的配置中创建并启动所有服务。
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将应用程序代码分解为几个独立运行的服务,这些服务使用内部网络进行通信。该工具提供了用于管理应用程序整个生命周期的CLI。Docker Compose传统上一直专注于开发和测试工作流,但现在他们专注于更多面向生产的功能。
Docker Engine可以是配备有Docker Machine或整个Docker Swarm集群的独立实例。
特征
· 单个主机上的多个隔离环境
· 创建容器时保留卷数据
· 仅重新创建已更改的容器
· 变量和环境之间的合成移动
6.Minikube
Minikube允许用户在本地运行Kubernetes。使用Minikube,您可以在个人计算机上的单节点Kubernetes群集内本地测试应用程序。Minikube对Kubernetes仪表板提供了集成支持。
Minikube运行Kubernetes的最新稳定版本并支持以下功能。
· 负载均衡
· 多集群
· 持久卷
· 节点端口
· ConfigMap和秘密
· 容器运行时:Docker,CRI-O和容器化
· 启用CNI(容器网络接口)
7.Marathon
Marathon适用于Apache Mesos,它具有协调应用程序和框架的能力。
Apache Mesos是一个开源集群管理器。Mesos是Apache的一个项目,能够运行容器化和非容器化工作负载。Mesos群集中的主要组件是Mesos代理节点,Mesos主服务器,ZooKeeper,框架–框架与主框架协调以将任务调度到代理节点上。用户与Marathon框架进行交互以安排作业。
Marathon调度程序使用ZooKeeper来定位当前的主机以提交任务。马拉松调度程序和Mesos主服务器具有运行中的辅助主服务器,以确保高可用性。客户端使用REST API与Marathon进行交互。
特征
· 高可用性
· 有状态的应用
· 美丽而强大的用户界面
· 约束条件
· 服务发现和负载平衡
· 健康检查
· 活动订阅
· 指标
· REST API
8.Cloudify
Cloudify是一个开源的云编排工具,用于容器和微服务的部署自动化以及生命周期管理。它提供了一些功能,例如按需群集,自动修复以及在基础架构级别进行扩展。Cloudify可以管理容器基础架构并协调在容器平台上运行的服务。
它可以轻松地与Docker和基于Docker的容器管理器集成,包括以下内容。
· Docker Swarm
· Docker撰写
· Kubernetes
· Apache Mesos
Cloudify可以帮助创建,修复,扩展和拆除容器集群。容器编排是提供可运行的容器管理器的可扩展且高度可用的基础结构的关键。Cloudify提供了跨平台协调异构服务的能力。您可以使用CLI和Cloudify Manager部署应用程序。
9.Rancher
Rancher是一个使用容器编排(称为牛)的开源平台。它使您可以利用Kubernetes,Swarm,Mesos等编排服务。Rancher提供了管理容器所需的软件,因此组织无需使用一套独特的开源技术从头开始构建容器服务平台。
Rancher 2.x允许管理在客户指定的提供商上运行的Kubernetes集群。
Rancher入门需要两个步骤。
1.准备Linux主机
准备一个具有64位Ubuntu 16.04或18.04(或其他受支持的Linux发行版,至少有4GB内存)的Linux 主机。在该主机上安装受支持的Docker版本。
2.启动服务器
要安装和运行Rancher,请在主机上执行以下Docker命令:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
用户界面允许管理数千个Kubernetes集群和节点。
10.Containership
Containership用于实现多云Kubernetes基础架构的部署和管理。通过单个工具可以灵活地在公共,私有云和本地环境中进行操作。它使您能够跨所有主要云提供商配置,管理和监视您的Kubernetes集群。
使用云原生工具(例如用于配置的Terraform, Prometheus进行监视以及Calico进行网络和策略管理。它建立在香草Kubernetes的顶部。Containership平台提供直观的仪表板,以及用于复杂自动化的强大REST API。
特征
多云仪表板
审核日志
GPU实例支持
无中断升级
可调度大师
综合指标
实时记录
零停机时间部署
持久存储支持
私人注册支持
工作负载自动缩放
SSH密钥管理
11.AZK
AZK是一个通过清单文件(Azkfile.js)用于开发环境的开源编排工具,该文件可帮助开发人员安装,配置和运行用于使用不同开源技术开发Web应用程序的常用工具。
AZK使用容器而不是虚拟机。容器就像虚拟机一样,具有更好的性能和更低的物理资源消耗。
可以重复使用Azkfile.js文件来添加新组件或从头开始创建新组件。它可以共享,从而确保不同编程器机器上的开发环境之间的总体平衡,并减少部署期间发生错误的机会。
12.GKE
GKE为Google Cloud Platform上的容器应用程序编排提供了完全托管的解决方案。GKE集群由Kubernetes提供支持。您可以使用Kubernetes CLI与集群进行交互。Kubernetes命令可用于部署和管理应用程序,执行管理任务,设置策略以及监视已部署工作负载的运行状况。
Google Cloud的高级管理功能也可用于GKE集群,例如Google Cloud的负载平衡,节点池,节点的自动扩展,自动升级,节点自动修复,日志记录以及使用Google Cloud的操作套件进行监视。
Google Cloud提供CI / CD工具来帮助您构建和提供应用程序容器。您可以使用Cloud Build从各种源代码存储库构建容器映像(例如Docker),并可以使用Container Registry存储容器映像。
GKE是具有预建部署模板的企业就绪解决方案。
13.AKS
AKS是Azure提供的完全托管的Kubernetes服务,它提供无服务器的Kubernetes,安全性和治理。AKS管理您的Kubernetes集群,并允许您轻松部署容器化的应用程序。AKS自动配置所有Kubernetes主节点和节点。您只需要管理和维护代理节点。
AKS是免费的;您只需为集群中的代理节点付费,而无需为主节点付费。您可以在Azure门户中或以编程方式创建AKS群集。Azure还支持其他功能,例如高级网络,Azure Active Directory集成以及使用Azure Monitor的监视。
AKS还支持Windows Server容器。可以从Azure Monitor监视其群集和已部署的应用程序性能。日志存储在Azure Log Analytics工作区中。
AKS已通过Kubernetes认证。
14.AWS EKS
AWS EKS是一项完全托管的Kubernetes服务。AWS允许您使用AWS Fragrate(一种用于容器的无服务器计算)运行EKS集群。Fragrance消除了调配和管理服务器的需要,从而允许为每个应用程序按资源付费。
AWS允许通过EKS使用其他功能,例如Amazon CloudWatch,Amazon虚拟私有云(VPC),AWS Identity,Auto Scaling组和访问管理(IAM),监控,扩展和负载平衡应用程序。EKS与AWS App Mesh集成在一起并提供Kubernetes原生体验。EKS运行最新的Kubernetes并通过Kubernetes认证。