《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx
《《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx》由会员分享,可在线阅读,更多相关《《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx(56页珍藏版)》请在文库网上搜索。
1、本章重点1.了解容器集群管理的概念。2.了解常用的容器集群管理工具。3.理解Docker Swarm中的重要概念。4.掌握Docker Swarm集群的搭建方法。5.理解Kubernetes中的重要概念及其功能架构。6.掌握Kubernetes集群的搭建方法。7.掌握在Kubernetes集群中部署应用的简单方式。容器集群管理技术1.容器技术快速发展2.容器集群管理优势0 11.容器技术快速发展1.由Docker引领先锋,容器在过去的几年里得到了飞速发展。容器技术提供了组件化环境,能够帮助应用在云之间轻松迁移。容器技术还提供轻量化打包应用的方式,是所有DevOps(Development和Op
2、erations的组合)工具的重要组成部分。2.几乎所有需要快速且经常更改和重新部署的应用程序都非常适合集装箱化。3.使用微服务架构的应用程序是一种自然选择,容器为基于微服务的应用程序提供了一个理想的应用程序部署单元和自包含的执行环境。4.容器解决了开发人员的生产力问题,使DevOps工作流变得异常流畅。2.容器集群管理优势运行一个容器就像一个单独的乐器,单独播放它的交响乐乐谱。容器集群管理允许指挥家通过管理和塑造整个乐团的声音来统一管弦乐队。在单机上运行容器,无法发挥它的最大效能,只有形成集群,才能最大程度发挥容器的良好隔离、资源分配与编排管理的优势。所以用户需要一套管理系统,对Docker
3、及容器进行更高级更灵活的管理,按照用户的意愿和整个系统的规则,完全自动化的处理好容器之间的各种关系,这些任务都属于容器集群管理的范畴。目前,正在影响现代基础设施的两个趋势分别是容器和DevOps。DevOps生态系统正不断发展,提供着持续集成、持续测试、持续部署和持续监控的功能,从而提高了软件开发的速度。另一方面,容器正与DevOps实践相结合,以实现大规模的快速部署。2.容器集群管理优势容器集群管理的优势包括以下几个方面:1.容器的短生命周期和增加的部署密度使得基础设施监控愈加重要,需要被单独监控的事物以指数的数量级增加。容器有助于提高开发人员的生产效率,容器集群管理工具则是为组织优化其De
4、vOps和运营投资提供了帮助。2.容器集群管理工具提供容器调度和集群管理的技术,提供基于容器应用可扩展性的基本机制,用于跨多个主机协调创建、管理和更新多个容器。3.容器集群管理工具可用于自动化管理任务,能够进行资源的调配和部署,能够进行负载均衡和流量路由,能够监控容器运行状况,根据需求对容器进行配置应用,还能保障容器间交互的安全性和可用性。4.容器集群管理的优势还包括:高效的资源管理;可无缝扩展的服务;集群的高可用性;低成本的大规模运营等。Docker Swarm概述1.Docker Swarm简介2.Docker Swarm关键概念3.Docker Swarm常见命令0 21.Docker
5、Swarm简介Docker Swarm是Docker公司推出的用来管理Docker集群的平台,主要使用Go语言开发完成,代码开源在https:/ Swarm和Docker Compose一样,都是Docker官方容器编排项目。Docker Compose是一个在单个服务器或主机上创建多个容器的工具Docker Swarm则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然Docker Swarm更加适合。从Docker v1.12开始,Docker SwarmKit项目开启并且被集成进Docker Engine,并内置服务发现工具。其主要作用是把若干台Docker主机抽象为一个整
6、体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。与Kubernetes相比,Docker Swarm更加轻量级,具有的功能也较Kubernetes更少。1.Docker Swarm简介如图Docker Swarm集群,里面有多台物理服务器,每台服务器上都装有Docker并且开启了基于HTTP的Docker API。Swarm Manager用来管理集群中的容器资源。它的管理对象是集群层面的,只能笼统地向集群发出指令而不能具体到某台具体的服务器上。Manager向外暴露了一个HTTP接口,外部用户通过这个HTTP接口来实现对集群的管理。Docker Swarm的基本架构
7、2.Docker Swarm关键概念1.Swarm集群的管理和编排是使用嵌入Docker引擎的SwarmKit。当Docker Engine初始化了一个Swarm或者加入到一个存在的Swarm时,它就启动了Swarm Node。没启动Swarm Node时,Docker执行的是容器命令。运行Swarm Node后,Docker增加了编排Service的能力。Docker允许在同一个Docker主机上既运行Swarm Service,又运行单独的容器。2.Node一个节点Node是Docker引擎集群的一个实例。Swarm中的每个Docker Engine都是一个Node,有两种类型的Node:
8、Manager Node和Worker Node。3.Service服务Service定义了Worker Node上要执行的任务。Swarm的主要编排任务就是保证Service处于期望的状态下。4.Task任务Task是在Docker容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给Worker节点。Task是Service的执行实体,Task启动Docker容器并在容器中执行任务。2.Docker Swarm关键概念1.Manager Node负责执行编排和集群管理工作,保持并维护Swarm状态。Swarm中如果有多个Manager Node,集群会自动协商并选举出一个Le
9、ader执行编排任务。Worker Node接受并执行由Manager Node派发的任务。在默认配置下,Manager Node同时也是一个Worker Node,不过也可以将其配置成Manager-only Node,让其专职负责编排和集群管理工作。2.Worker Node会定期向Manager Node报告自己的状态和它正在执行的任务状态,这样Manager就可以维护整个集群的状态。3.为了在Swarm中部署应用,需要在Manager Node上执行部署命令,Manager Node会将部署任务拆解并分配给一个或多个Worker Node完成部署。3.Docker Swarm常见命令命
10、令命令说明明docker swarm init用于创建一个新的Swarm。执行该命令的节点会成为第一个管理节点,并且会切换到 Swarm 模式。docker swarm join-token用于查询加入管理节点和工作节点到现有Swarm时所使用的命令和Tokendocker swarm join加入Swarm 集群docker swarm leave离开Swarm 集群docker swarm update对Swarm集群更新配置docker node ls用于列出Swarm中的所有节点及相关信息docker node rm 只能删除down状态的节点,要删除active状态的,需要加上for
11、ce参数docker service ls查看服务列表docker service ps 查看具体服务信息docker service inspect用于获取关于服务的详尽信息docker service create用于创建一个新服务docker service update用于对运行中的服务的属性进行变更docker service logs用于查看服务的日志Docker Swarm集群搭建与实践1.Docker Swarm集群搭建2.Docker Swarm集群服务创建3.Docker Swarm服务扩容4.Docker Swarm集群节点离开5.Docker Swarm集群服务滚动升级
12、0 31.Docker Swarm集群搭建本小节以一个Manager节点和两个Worker节点为例,讲解集群的搭建过程。首先准备三台物理器或者虚拟机,这里都已经安装好Docker Engine。具体情况如下:manager是Manager Node,IP为192.168.3.204。worker1和worker2是Worker Node,IP为192.168.3.206和192.168.3.207。manager、worker1和worker2均为Linux虚拟机节点,系统为CentOS7。1.Docker Swarm集群搭建1.第一步,初始化Manager节点。在Manager节点上,使用d
13、ocker swarm init创建Swarm,同时让manager成为Manager Node。2.第二步,在manager节点上,使用docker node ls查看刚创建的节点的状态信息。3.第三步,切换到worker1和worker2虚拟机节点上,执行docker swarm join-token 创建Worker节点。4.第四步,在manager节点上,查看创建的节点。2.Docker Swarm集群服务创建1.第一步,以上文中的集群为基础,在Manager节点上部署一个基本的Nginx服务,-replicas参数指定创建3个正在运行的服务数,-publish公开指定端口是8080映
14、射容器80,同时使用Nginx镜像。2.第二步,在manager节点上,通过docker service ls查看当前Swarm中的服务。3.第三步,在manager节点上,使用docker service ps 查看具体的Nginx服务。2.Docker Swarm集群服务创建rootmanager#docker service create-replicas 3-name nginx-publish 8080:80 nginxbxgyfpvoinaea4z8cljwcga5r1/3:running 2/3:running 3/3:running rootmanager#docker ser
15、vice lsID NAME MODE REPLICAS IMAGE PORTSbxgyfpvoinae nginx replicated 3/3 nginx:latest *:8080-80/tcp rootmanager#docker service ps nginxID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSjqsbyc0rwggj nginx.1 nginx:latest worker2 Running Running 9 minutes ago bzrrih3mct9r nginx.2 nginx:latest
16、manager Running Running 11 minutes ago xk59l01mzjyz nginx.3 nginx:latest worker1 Running Running 3 minutes ago 3.Docker Swarm集群服务扩容如果想要提高可用性,就需要对服务进行扩容。将Nginx服务数目提升到5个,具体步骤如下:1.第一步,在manager节点上,使用docker service scale命令对service进行扩容。2.第二步,在manager节点上,使用docker service ps命令查看服务情况。3.第三步,在worker1节点上,通过dock
17、er ps-a 查看服务情况。4.Docker Swarm集群节点离开如果想要某一个Node离开Docker Swarm,可以通过在Node所在的Docker Engine中运行docker swarm leave命令来实现。1.第一步,如果worker2想要离开Docker Swarm,可以在worker2节点上执行docker swarm leave命令。2.第二步,在manager节点上,查看节点情况。3.第三步,在manager节点上,使用docker service ps命令查看5个Nginx服务的分布情况。5.Docker Swarm集群服务滚动升级将Redis版本滚动升级至更高版
18、本,具体过程如下:1.第一步,在manager节点上,首先利用redis:3.0.6镜像创建3个Redis服务。2.第二步,在manager节点上,查看redis service是否已经启动成功。3.第三步,在manager节点上,当所有的Task已经启动后,使用“docker service update”命令将所有服务升级到3.0.7版本,用-image参数指定升级的版本。4.第四步,在manager节点上,再次使用“docker service ps”命令查看滚动升级后服务的状态变化。Kubernetes概述1.Kubernetes简介2.Kubernetes组件3.Kubernetes
19、重要概念4.Kubernetes功能与架构0 41.Kubernetes简介01020304Google于2014年将Brog系统开源为Kubernetes。Kubernetes构建在Google Brog十五年运行大规模分布式系统的经验基础之上,并结合了开源社区最好的想法和实践。Kubernetes(缩写为K8s或Kube)是一个开源的,可移植的,用于集群管理的业务流程框架。Kubernetes的名字起源于希腊语,含义是舵手、领航员、向导。Kubernetes适用于多种生产环境,包括裸机,内部部署虚拟机,大多数云提供商,以及三者的组合/混合。自Kubernetes推出以来,它已被移植到Azu
20、re、DC/OS以及几乎所有的云平台。Kubernetes是基于Docker的开源容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能。1.Kubernetes简介Kubernetes脱胎于Google内部久负盛名的大规模集群管理系统Borg,是Google在容器化基础设施领域十余年实践经验的沉淀和升华。Google利用Kubernetes的架构和设计思想成功将其所有应用(搜索、地图、视频、金融、社交、人工智能等)运行在超过100万台服务器、超过80个数据中心,每周的20亿个容器上,所以Kubernetes是唯一具有超过10年以上大规模容器生产使用技术经验和积
21、淀的开源项目。Kubernetes拥有广泛的行业合作伙伴,包括英特尔、微软和红帽等。很多公司都发布了Kubernetes发行版,包括Red Hat OpenShift、Canonical Distribution of Kubernetes、CoreOS Tectonic和Intel Mirantis。1.Kubernetes简介Kubernetes提供高度的互操作性,以及自我修复、自动升级回滚以及存储编排。Kubernetes通过无需重新设计应用即可迁移的方式,来实现工作负载可移植和负载均衡。Kubernetes消除了部署和扩展应用过程中的很多手动操作。用户可以将多主机组成集群运行容器,无论
22、是物理机还是虚拟机,Kubernetes都提供了很好的平台可以简单高效的管理这些集群。这些集群可以跨越分布于不同公有云、私有云、混合云的主机。因此,Kubernetes是托管需要快速扩展的云原生应用的理想平台。Kubernetes编排允许用户构建跨多个容器的应用程序服务,跨集群调度容器,扩展这些容器,并随着时间推移管理它们的运行状况。在用户、社区和大厂的支持中,Kubernetes逐步成为企业基础架构的部署标准和新一代的应用服务层。2.Kubernetes组件1.集群(Cluster):在Kubernetes中,集群是计算、存储和网络资源的组合。集群由各个节点组成,这些节点可以是物理服务器,也
23、可以是虚拟机,Kubernetes利用这些节点提供的基础资源来运行各种应用程序。集群是Kubernetes容器集群的基础环境。2.Master:Master是整个集群的主控节点。在每个Kubernetes集群中,都至少有一个Master节点来负责整个集群的管理和控制。几乎所有的集群控制命令都是在Master节点上执行。在实际应用中,为了实现高可用性,可以部署多个Master节点。3.Node:Node(节点)是Kubernetes集群中的计算机,可以是虚拟机或物理机,多个Node协同工作。每个Node(节点)都由Master管理。一个Node(节点)可以有多个Pod(容器组),Kubernet
24、es Master会根据每个Node(节点)上可用资源的情况,自动调度Pod(容器组)到最佳的Node(节点)上。2.Kubernetes组件Master节点上通常会运行Kubernetes API Server进程、Kubernetes控制器管理器、Kubernetes调度器和Etcd组件。Master的架构图2.Kubernetes组件Master节点Kubernetes API Server即Kubernetes API服务器,它的进程名为kube-apiserver。Kubernetes Controller Manager,即Kubernetes控制器管理器,它是集群内部的管理控制中
25、心,负责集群内的Node节点、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(Service Account)和资源配额(Resource Quota)等的控制和管理。Kubernetes Scheduler,即Kubernetes调度器,它用于监听最近创建但还未分配Node的Pod资源,根据特定的调度算法把Pod调度到指定的工作节点(Node)上。Etcd组件是一个轻量级的分布式键值存储组件,用于保存集群中所有的配置信息和各个对象的状态信息,只有API Server进程才能直接访问和操作Etcd。2.Kubernetes组件Node(节点)是Kuberne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 云计算虚拟化技术基础与实践 云计算虚拟化技术基础与实践课件第十一章 容器集群管理 计算 虚拟 技术 基础 实践 课件 第十一 容器 集群 管理