资源描述:
《容器扫盲课件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
容器在IT领域的发展容量技术发展历史:古老而又生机勃勃
1什么是软件容器-container2LXC容器LXC(LinuxContainer)容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。一种介于“软件包”和“虚拟机”之间的概念。LXC容器实现Warden(PaaS平台CloudFoundry内的资源管理容器)Docker(PaaS提供商dotCloud开源的容器引擎)Rocket(云服务器Linux操作系统发行商CoreOS另立门户,刚刚于2014年12月初发布了新的容器引擎Rocket,目前版本0.13)
2虚拟化技术:VM与Container比较虚拟化技术与容器
3虚拟化技术与容器容器技术虚拟机技术占用磁盘空间小,甚至几十KB(镜像层的情况)非常大,上GB启动速度快,几秒钟慢,几分钟运行形态直接运行于宿主机的内核上,不同容器共享同一个Linux内核运行于Hypervisior上并发性一台宿主机可以启动成千上百个容器最多几十个虚拟机性能接近宿主机本地进程逊于宿主机资源利用率高低
4容器关键技术介绍-namespace
5
6什么是Docker7Docker是一个开源的容器引擎,可以打包应用以及依赖包到一个可移植的容器中,将应用变成一种标准化的、可移植的、自管理的组件,在主流Linux系统中开发、调试和运行。几乎没有性能开销,可以很容易地在机器和数据中心中运行。基于LXC(LinuxContainer)实现。来源PaaS提供商dotCloud开源,遵循Apache2.0开源协议Go语言编写首个版本:2013年3月正式版本Docker1.0:2014年6月;最新1.9版本与2015年10月www.docker.com
7Docker主要功能特征8Staticwebsite集装箱Docker容器内容无关性相同的集装箱可以容纳几乎任何类型的货物可以封装任何应用及其依赖包硬件无关性同一标准的容器允许把货物从船上运输到火车、卡车上,直到运输到仓库,整个过程无需整理货物或打开容器几乎可以在任何Linux平台上运行——虚拟机、裸机、OpenStack、公共IaaS等,并且无需修改内容隔离和交互无需担心铁压在香蕉上,容器可以堆积运输资源、网络和内容隔离,避免处理复杂的依赖关系自动化标准的接口可以很容易的实现自动化装卸、搬运等运行、启动、停止、提交、搜索等都有标准的操作,非常适合devops高效无需打开集装箱,可以在起始两地快速地移动/运输轻量级,启动速度快,容器可以进行快速移动和操作职责分离托运人关心集装箱内部、承运人关心集装箱外部开发人员关心代码,运营人员关心基础设施
8Docker的增量更新9Docker引擎Docker容器镜像库Docker引擎推送更新动态库AppAAppΔBins/基础容器镜像已经更新到A”运行修改后的容器A”AppΔBins/动态库AppABins/动态库AppA’’运行A应用的主机更新应用到A”,只需要更新不同的部分修改后的容器A’
9虚拟化VSDocker应用运行环境互相隔离共享操作系统内核和动态库轻量化方便快速部署方便迁移启动快资源占用少(CPU,内存、存储)无需共享存储
10数据中心操作系统DCOS数据中心操作系统(DataCenterOperatingSystem,简称DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件堆栈,它将所有数据中心的资源当做一台大型计算机来调度,可以视作这个大型主机的操作系统。(以Mesos为例)LinuxOSDCOSResourceManagementLinuxKernelMesosProcessManagementLinuxKernelDockerJobSchedulinginit.d,cronMarathon,ChronosInter-ProcessCommunicationPipe,SocketActiveMQ、RabbitMQFileSystemext4HDFS,Ceph
11数据中心操作系统的特征数据中心操作系统终极目标是提供一个通用的标准化运维系统高效率可靠安全地管理数据中心,同时简化应用程序的开发、部署难度,协调各类资源,确保各类资源随着应用的需求动态调度DCOS特征弹性伸缩敏捷开发根据应用的负载和容量情况自动增加和删除节点,支持细粒度资源调度,多个计算框架或应用程序可共享资源和数据,高资源利用率快速部署通过抽象,隐藏数据中心硬件和软件运行环境的复杂性,降低应用的开发难度,高可用传统的部署模式为安装(包管理工具或者源码包编译)->配置->运行,DCOS支持将数据中心应用和它的依赖进行封装,实际部署时只需复制->运行根据某种负载策略把请求分发到集群中的每一个节点上,让整个集群来处理应用的请求,自动为宕机服务器上运行的节点重新分配资源,保障业务不掉线
12DCOS解决方案Mesos:Mesos由加州大学伯克利分校AMPLab开发,后在Twitter广泛使用,成熟度高。Mesosphere公司DCOS,以Mesos为核心,支持多领域的分布式集群调度框架:Marathon、Chronos和Hadoop、Spark等的集群调度框架,实现系统的资源弹性调度。ApacheHadoopYARN:一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。Kubernetes:是Google多年大规模容器管理技术的开源版本,面世以来就受到各大巨头及初创公司的青睐,社区活跃。DockerMachine+Compose+Swarm:Docker公司的容器编排工具。PaaS产品:CloudFoundry/OpenShift等PaaS解决方案。Google:Borg/OmegaTwitter、Apple、Netflix:Mesos典型案例解决方案
13技术架构选型MesosYarnKubernetesDockerM+C+SCF/OpenShift调度级别二级调度(DominantResourceFairness)二级调度(FIFO,CapacityScheduler,FairScheduler)二级调度(基于Predicates和Priorities两阶段算法)一级调度(提供Strategy和Filter两种调度策略)CF一级调度(基于Highest-scoring调度策略)/OpenShift使用Kubernetes生态活跃活跃活跃非常活跃活跃一般适用场景通用性高,混合场景大数据生态场景目前较单一较单一较单一成熟度高高中低中应用与平台耦合度低中中低高应用案例分析Twitter、Apple、Airbnb、Yelp、Netflix、ebay、VerizonHadoop生态圈应用目前快速发展中,生产环境应用较少很少较少,PaaS整体解决方案,应用与平台的耦合度较高根据对适合构建DCOS的各种技术架构的评估,选择以Mesos为基础的方案。优点是成熟度高、两级调度框架、适合多种应用场景、混合部署、应用与平台耦合度低。同时跟踪Kubernetes的发展,考虑Kubernetes作为Mesos的调度框架。
14关键技术选型-应用封装serverHostOSserverDockerEngineBin/libsappBin/libsHypervisorGuestOSBin/libsGuestOSBin/libsappapp容器虚拟机DockerEngine可以自动化地部署应用到可移植的的容器中,这些容器独立于硬件、语言、框架、打包系统。一个标准的Docker容器包含一个软件组件及其所有的依赖,包括二进制文件,库,配置文件,脚本等,实现持续集成与部署,快速迭代应用程序PaaS平台作为云平台的核心组成部分,为整个云平台提供了服务标准化和自动弹性扩展能力,Docker及相关生态圈系统天然具备服务发现和资源调度能力,为构建具备弹性扩展能力的PaaS平台提供有效的解决方案Docker容器可以封装任何有效负载,几乎可以在任何服务器之间进行一致性运行。开发者构建的应用只需一次构建即可多平台运行。运营人员只需配置他们的服务,即可运行所有应用Docker为开源的应用容器引擎,在标准的LXC之上融合AUFS分层镜像管理机制,抛弃传统VM试图模拟完整机器的思路,而是以应用为单元进行“集装封箱”,是轻量级的虚拟化技术
15MesosMaster负责将资源分配给各个框架,而各个框架的Scheduler进一步将资源分配给其内部的各个应用程序Mesos能和不同类型的Framework或Application通信,每种Framework或Application由相应的应用集群管理MesosSlave的Executor具备调用Docker能力,也就是Executor接收到的Task时启动Docker容器时,其可以调用Docker去启动一个容器关键技术选型-资源调度
16关键技术选型-任务调度Mesos集群可以混合运行来自Marathon的不同类型的任务Marathon基于Mesos的任务调度为动态调度,即每个任务在执行之前是不知道将在哪一台服务器上执行和绑定哪一个端口9台服务器(灰色)组成的Mesos集群上混合运行各种Marathon调度的任务,其中一台服务器坏掉以后,这台服务器上的任务就受影响,Marathon可把任务迁移到其他服务器上,实现容错Marathon是基于Mesos来做任务调度,Mesos仅负责布式集群资源分配,不负责任务调度。