容器技术与应用(第2版)(微课版) 课件 任务5.2 Swarm编排工具的使用_第1页
容器技术与应用(第2版)(微课版) 课件 任务5.2 Swarm编排工具的使用_第2页
容器技术与应用(第2版)(微课版) 课件 任务5.2 Swarm编排工具的使用_第3页
容器技术与应用(第2版)(微课版) 课件 任务5.2 Swarm编排工具的使用_第4页
容器技术与应用(第2版)(微课版) 课件 任务5.2 Swarm编排工具的使用_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Docker容器技术与应用湖北轻工职业技术学院Docker编排工具项目5项目背景随着容器技术的飞速发展,Docker成为应用部署的热门选择。但单个容器难以满足复杂业务需求,多容器协作成为常态。在此背景下,如何高效管理容器生命周期和部署复杂工作负载成为关键。Docker编排工具项目5

Docker平台及周边生态系统提供了很多工具来管理容器的生命周期。容器编排工具将生命周期管理能力扩展到可在集群上部署复杂的、多容器的工作负载。本项目通过两个任务介绍了Compose编排工具和Swarm编排工具的使用方法。项目五:Docker编排工具目录任务5.1、Compose编排工具的使用任务5.2、Swarm编排工具的使用Compose编排工具的使用回顾1、了解容器编排的管理方法。2、Compose编排工具的使用方法。知识目标了解容器集群的管理方法。了解容器集群的基本使用方法。能力目标掌握Swarm编排工具的管理方法。掌握Swarm编排工具的使用方法素质目标培养勇于探索、尊重科学的精神。锻炼沟通交流的能力。工程师小王在对Docker技术进行学习后发现,当有大量Docker容器需要跨主机部署时,Swarm工具能够更高效地完成部署工作,于是公司安排小王编写Swarm工具的安装及使用手册,以供公司相关技术人员学习,并在公司内部推广该技术。任务5.2Swarm编排工具的使用任务要求5.2Swarm工具

如果项目是基于单个Docker主机的,那么所有容器都是运行在同一个主机上的,但单个Docker能发挥的作用毕竟有限,也不便于管理,实际生产环境往往会有多个Docker主机,涉及跨主机多子网的容器配置管理,复杂性大大提高,所以Docker集群(Cluster)功能才能发挥其强大的技术优势。容器集群的设计目标是在主机集群之间提供一个能够自动化部署扩容,以及运维的应用容器平台。DockerCompose支持多个服务的编排,但不支持跨主机部署,而集群将多个主机作为一个协同工作的有机整体,使其能够像单个系统那样工作,同时支持高可用、负载平衡和并行处理的功能。在集群中部署应用程序,不必关心具体部署在哪台主机上,只需要关心需要的资源,一切由集群管理程序进行调试。从Docker1.12版本开始引入Swarm模式来实现集群管理,实现应用程序自动化部署、可伸缩、高可用和负载平衡,为大规模分布式应用程序的部署和管理提供解决方案。任务5.2Swarm编排工具的使用相关知识5.2Swarm工具在Docker版本1.12之前,Docker在集群管理上依赖第三方解决方案,其中最著名的就是Kubernetes。Kubernetes简称K8s,是Google提供的开源的容器编排引擎,用于管理云平台主机上的容器化应用,支持容器化应用程序的自动化部署、伸缩和管理。K8s通常结合Docker工作,并且整合多个运行Docker容器的主机集群,它不仅支持Docker,而且支持另一种容器技术Rocket。任务5.2Swarm编排工具的使用相关知识5.2Swarm工具K8s采用不同于Docker的配置和编排方法,比较复杂,适合大中型集群运行复杂应用程序的环境。Docker从1.12版本开始引入Swarm模式来实现集群管理。Swarm本意就是蜂群,表示动物的群体,Docker使用这个概念表示由多个Docker引擎组成的一个整体,也就是集群。DockerSwarm是Docker原生的集群工具,因而无需使用额外的编排软件创建或管理集群。Docker工具和DockerAPI都可以无缝地在DockerSwarm上使用,只是使用环境从单机转变为更高级别的集群。DockerSwarm部署更简单,适合不大的应用程序环境,尤其适用于简单和快速开发。用DockerSwarm创建集群很简单,用户不需要额外安装任何软件,也不需要进行任何额外的配置,很适合作为学习和使用容器集群平台的起点,当然也可用于中小规模的Docker集群实际部署。任务5.2Swarm编排工具的使用相关知识5.2Swarm工具

Swarm是Docker公司在2014年12月初发布的一套用于管理Docker集群的较为简单的工具,由于Swarm使用标准的DockerAPI作为其前端访问入口,所以各种形式的DockerClient(DockerClientinGo、docker_py、Docker等)均可以直接与Swarm通信。旧版本的DockerSwarm使用独立的外部KV存储(如Consul、etcd、ZooKeeper),搭建了独立运行的Docker主机集群,用户可以像操作单台Docker主机一样操作整个集群,DockerSwarm可将多台Docker主机当作一台Docker主机来管理。新的SwarmMode是在Docker1.12中被集成到Docker引擎中的,引入了服务的概念,提供了众多的新特性,如具有容错能力的去中心化设计,内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等功能。任务5.2Swarm编排工具的使用相关知识5.2Swarm工具Swarm和Kubernetes比较类似,但是更加轻量,具有的功能比Kubernetes少一些。DockerSwarm是Docker官方提供的款集群管理工具,能够将多台主机构建成一个Docker集群,其主要作用是把若干台Docker主机抽象为一个整体,并通过一个入口统一管理这些Docker主机的各种Docker资源,通过DockerSwarm来部署管理应用程序,并结合Overlay网络实现容器的调试与相互访问。DockerSwarm的主要概念包括Swarm、节点、服务和任务、高可用性以及负载平衡等。任务5.2Swarm编排工具的使用相关知识5.2Swarm架构Swarm作为一个管理Docker集群的工具使用时,需要先对其进行部署,可以单独将Swarm部署于一个节点。另外,Swarm需要一个Docker集群,集群上的每一个节点均安装Docker。具体的Swarm架构如图所示。Swarm架构中最主要的处理部分是SwarmNode(节点)。Swarm管理的对象是DockerCluster,DockerCluster由多个DockerNode组成,而负责给Swarm发送请求的是DockerClient。任务5.2Swarm编排工具的使用相关知识5.2Swarm架构通常分为管理节点和工作节点。管理节点:要将应用程序部署到swarm,需要向管理节点提交一个服务定义。管理节点将称为任务的工作单元分派给工作节点。执行所需的编排和群集管理功能,以保持群的所需状态。管理节点选择一个领导者来执行编排任务。工作节点:接收并执行从管理节点调度的任务。默认情况下,管理节点也将服务作为工作节点运行,但您可以将它们配置为以独占方式运行管理任务并仅作为管理节点。代理在每个工作节点上运行,并报告分配给它的任务。worker节点将其分配任务的当前状态通知给manager节点,以便manager可以保持每个worker的所需状态。任务5.2Swarm编排工具的使用相关知识5.2Swarm相关概念1.Swarm

集群的管理和编排使用了嵌入到Docker引擎中的SwarmKit,可以在Docker初始化时启动Swarm模式或者加入已存在的Swarm。任务5.2Swarm编排工具的使用相关知识5.2Swarm相关概念2.节点

Node是加入到Swarm集群中的一个Docker引擎实体,可以在一台物理机上运行多个Node,Node可以分为管理节点(manager节点)和工作节点(worker节点)两类。

当一个节点作为Swarm的Docker引擎实体,部署应用到集群中时,会提交服务到管理节点,管理节点调度任务到工作节点,管理节点还要执行维护集群状态的编排和集群管理的功能,工作节点接收并执行来自管理节点的任务。通常,管理节点也可以是工作节点,工作节点会报告当前状态给管理节点。任务5.2Swarm编排工具的使用相关知识5.2Swarm相关概念3.服务

服务是要在管理或工作节点上执行的任务的定义。它是swarm系统的中心结构,是用户与swarm交互的主要根源。创建时,指定要在运行的容器中使用的容器映像和要执行的命令;在复制服务模型中,swarmmanager根据您在所需状态下设置的规模在节点之间分配特定数量的任务,对于全局服务,swarm在集群中的每个可用节点上为服务运行一个任务。

服务是在工作节点上执行任务的定义,在工作节点上执行,创建服务时,需要指定容器镜像。任务5.2Swarm编排工具的使用相关知识5.2Swarm相关概念4.任务

任务是携带一个Docker容器和在容器内运行的命令。它是swarm的原子调度单元。管理节点根据服务规模中设置的副本数将任务分配给工作节点。任务一旦分配给节点,就不能移动到另一个节点。它只能在指定的节点上运行或失败。

任务是指在Docker容器中执行的命令,管理节点根据指定数量的任务副本来分配任务给工作节点。任务5.2Swarm编排工具的使用相关知识5.2Swarm常用命令

Swarm的常用命令有dockerswarm、dockerservice和dockernode。任务5.2Swarm编排工具的使用相关知识5.2dockerswarm常用命令:用于管理Swarm集群命令描述dockerswarminit初始化一个Swarm集群dockerswarmjoin加入集群作为工作节点或管理节点dockerswarmjoin-token管理用于加入集群的令牌dockerswarmleave离开Swarm集群dockerswarmunlock解锁Swarm集群dockerswarmunlock-key管理解锁钥匙dockerswamupdate更新Swarm集群Swarm常用命令dockerswarminit初始化一个Swarm集群,用于Swarm管理Docker集群时,DockerNode的节点发现功能。发起该命令之后,Swarm会前往DockerHub上内建的发现服务中获取一个全球唯一的token,用以唯一的标识Swarm管理的Docker集群。任务5.2Swarm编排工具的使用相关知识5.2Swarm常用命令DockerNode上swarmjoin执行之后,标志着DockerNode向Swarm注册,请求加入Swarm管理的Docker集群中。Swarm通过注册信息,发现DockerNode,并获取DockerNode的状态以及具体信息,以便处理Docker请求时作为调度依据。任务5.2Swarm编排工具的使用相关知识5.2Swarm常用命令

Swarm的常用命令有dockerswarm、dockerservice和dockernode。任务5.2Swarm编排工具的使用相关知识5.2dockerservice常用命令:用于管理服务命令描述dockerservicecreate创建服务dockerserviceinspect显示一个或多个服务的详细信息dockerservicelogs获取服务的日志dockerservicels列出服务dockerservicerm删除一个或多个服务dockerservicescale设置服务的实例数量dockerserviceupdate更新服务dockerservicerollback恢复服务到更新之前的配置部署应用跟docker一样,可以把应用打包成镜像运行设定的副本个数即可。例如:一个工作节点上创建一个名为helloworld的服务,这里是随机指派给一个工作节点dockerservicecreate--replicas1--namehelloworldalpineping解释:该dockerservicecreate命令创建服务。该--name标志为服务命名helloworld。该--replicas标志指定1个运行实例的所需状态。参数alpineping将指定alpine镜像,并在容器启动后执行ping操作。任务5.2Swarm编排工具的使用相关知识5.2Swarm常用命令任务5.2Swarm编排工具的使用相关知识5.2查看应用dockerservicels

Swarm常用命令Swarm常用命令

Swarm的常用命令有dockerswarm、dockerservice和dockernode。任务5.2Swarm编排工具的使用相关知识5.2dockernode常用命令:用于管理Swarm集群中的节点命令描述dockernodedemote从Swarm集群管理器中降级一个或多个节点dockernodeinspect显示一个或多个节点的详细信息dockernodels列出Swarm集群中的节点dockernodepromote将一个或多个节点加入集群管理器中dockernodeps列出一个或多个在节点上运行的任务,默认为当前节点dockernoderm从Swarm集群中删除一个或多个节点dockernodeupdate更新一个节点Swarm常用命令#查看集群节点:#dockernodels#创建nginx服务:#dockerservicecreate--namenginx--replicas2--publish80:80nginx#列出服务:#dockerservicels#kill其中一个容器:#dockerkill96e6bccc2209#修改服务实例数量为3:#dockerservicescalenginx=3#删除nginx服务:#dockerservicermnginx#删除swarm节点:#dockernoderm-fnode1任务5.2Swarm编排工具的使用相关知识5.2Swarm集群的创建与应用1.任务环境准备本任务选用3台部署在VMwareWorkstation16中的RHEL8.1虚拟机,虚拟机均已预先安装好docker-ce26.1.3,并与外网互通,且关闭防火墙和selinux配置。任务5.2Swarm编排工具的使用任务实现5.2主机名IP地址角色master01/24管理节点node102/24工作节点node203/24工作节点表5-1各节点主机环境要求2.修改各节点主机的主机名(1)修改IP地址为01节点主机的主机名为master。 #hostnamectlset-hostnamemaster (2)修改IP地址为02节点主机的主机名为node1。 #hostnamectlset-hostnamenode1(3)修改IP地址为03节点主机的主机名为node2。 #hostnamectlset-hostnamenode23.各节点主机执行以下命令配置时钟同步 #timedatectlset-timezoneAsia/Shanghai #chronycmakestep任务5.2Swarm编排工具的使用任务实现5.24.在各节点主机上编辑docker.service文件,修改ExecStart参数信息 #vi/lib/systemd/system/docker.service//修改如下参数信息 ExecStart=/usr/bin/dockerd-Htcp://:2375-Hunix:///var/run/docker.sock文件编辑完后,保存退出,返回命令行,并重启Docker服务。 #systemctldaemon-reload #systemctlrestartdocker说明:可通过netstat命令查看启动的端口信息,应看到2375端口的信息,该端口为默认的DockerHTTPAPI的端口。如果是一个集群,则集群中所有相关的主机都要启动2375端口的Docker服务。任务5.2Swarm编排工具的使用任务实现5.25.获取swarm镜像,创建swarm集群后查看集群节点信息。(1)在各主机节点上获取swarm镜像。 #dockerpullswarm:latest(2)在master节点上初始化集群,获取唯一的token,作为集群的唯一标识。 #dockerswarminit--advertise-addr01

命令执行后,master节点自动加入Swarm集群中,并会创建一个集群token,获取全球唯一的token,作为集群的唯一标识。后续可利用获取的token值将其他节点加入集群。 --advertise-addr参数表示其他Swarm中的工作节点使用此IP地址与manager节点联系。命令的输出内容中包含了其他节点加入集群的命令。(3)将node1和node2加入集群,在node1和node2节点上执行以下命令。 #dockerswarmjoin--tokenSWMTKN-1-6b7kh7jvf4h77xzs428porckmes5sifxtqd4ft3x4l06totliq-

dnoe5e7n7zg02x4c0uyqgpu8x0:2377(4)在master节点上查看集群中各节点的信息。 #dockernodels任务5.2Swarm编排工具的使用任务实现5.26.在Swarm集群中部署服务,本任务以部署nginx服务为例进行介绍(1)在各主机节点中下载nginx:latest镜像。 #dockerpullnginx:latest(2)在master节点中创建一个网络“nginx_net”,用于使不同主机上的容器网络互通。 #dockernetworkcreate-doverlaynginx_net //创建网络nginx_net #dockernetworkls //列出所有网络(3)在master节点上创建一个副本数为1的nginx容器。 #dockerservicecreate--replicas1--networknginx_net--namemy-test-p9999:80nginx(4)打开浏览器,在地址栏中依次输入“01:9999”“02:9999”和“03:9999”进行验证。返回效果图如图所示。任务5.2Swarm编排工具的使用任务实现5.2任务5.2Swarm编排工具的使用任务实现5.27.swarm常用命令的使用,命令需在master节点上执行(1)列出已创建的服务。 #dockerservicels

从命令的返回结果来看,my-test服务已创建。(2)查看my-test服务的详细信息。 #dockerserviceinspect--prettymy-test//查看服务信息

或利用dockerserviceinspectmy-test命令查看更详细的信息。任务5.2Swarm编排工具的使用任务实现5.2(3)利用dockerserviceps命令查询在哪个节点运行my-test容器。 #dockerservicepsmy-test(4)伸缩容器。将my-test容器扩展到5个,在manager节点上执行以下命令。 #dockerservicescalemy-test=5

和创建服务一样,在增加scale数量之后,将会创建新的容器。执行命令前,my-test容器只在master节点上有一个实例,而现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论