收藏 分享(赏)

《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx

上传人:bubibi 文档编号:21763115 上传时间:2024-04-23 格式:PPTX 页数:56 大小:1.82MB
下载 相关 举报
《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx_第1页
第1页 / 共56页
《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx_第2页
第2页 / 共56页
《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx_第3页
第3页 / 共56页
《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx_第4页
第4页 / 共56页
《云计算虚拟化技术基础与实践》课件第十一章 容器集群管理.pptx_第5页
第5页 / 共56页
亲,该文档总共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

26、tes集群中的计算机,可以是虚拟机或物理机,多个Node协同工作。每个Node(节点)都由Master管理。一个Node(节点)可以有多个Pod(容器组),Kubernetes Master会根据每个Node(节点)上可用资源的情况,自动调度Pod(容器组)到最佳的Node(节点)上。Node的组成分为三部分,分别为Kubelet、Kube-proxy和Container Runtime。Node架构图2.Kubernetes组件Node节点在Kubernetes集群中,每个Node都会运行Kubelet进程。Kubelet用来处理Master节点下发的任务,管理Pod和其中的容器。Kubel

27、et负责维护容器的生命周期,也负责管理存储卷等资源。每个Node上的Kubelet会在API Server上注册信息,定期向Master汇报节点资源的使用情况。API Server进程接收到这些信息后,会将Node的状态信息更新到Etcd中。Kubelet通过API Server进程监听Pod信息,是Node上的Pod管家。Kube-proxy运行在所有的Node节点上,监听每个节点上Kubernetes API中定义的服务变化,并创建路由规则来进行服务负载均衡。Container Runtime是负责运行容器的组件,负责下载镜像、创建和运行容器等。Kubernetes支持多种容器,包括Doc

28、ker、containerd、cri-o、rktlet以及任何基于Kubernetes CRI(Container Runtime Interface,容器运行环境接口)的实现。3.Kubernetes重要概念1.容器组(Pod)Kubernetes中最基本的操作单元就是Pod。一个Pod可以包含一个或多个紧密相关的容器,多个容器应用之间通常是紧密耦合的。Pod可以看作是一个容器环境下的逻辑宿主机,Pod在Node上被创建、启动或者销毁。每个Pod中运行着一个或多个容器,多个容器拥有同样的生命周期,共享网络、命名空间和存储卷资源。Pod支持多种容器环境,Docker是最流行的容器环境。Pod示

29、例图3.Kubernetes重要概念1.容器组(Pod)每一个Pod都会被指派一个唯一的IP地址,在Pod中的每一个容器共享网络命名空间,包括IP地址和网络端口。在同一个Pod中的容器可以互相通信。单容器Pod,是最常见的应用方式。对于多容器Pod,Kubernetes会保证所有的容器都在同一台物理主机或虚拟主机中运行。多容器Pod是相对高阶的使用方式,除非应用耦合特别严重,一般不推荐使用这种方式。Pod作为一个可以独立运行的服务单元,以更高的抽象层次为应用部署提供了极大的方便,简化了应用部署的难度。另外,Pod作为最小的应用实例可以独立运行,因此可以方便的进行部署、水平扩展和收缩、方便进行调

30、度管理与资源的分配。3.Kubernetes重要概念2.服务(Service)在Kubernetes中,Service是一个抽象的概念,它定义了Pod逻辑集合和访问这些Pod的策略。一个服务可以看作是一组提供相同服务的Pod的对外访问接口,服务通过标签选择器(Label Selector)选择Pod。Service的主要作用在于提供服务自动发现和负载均衡。服务自动发现可以防止Pod失联,因为增删Pod都能被感知。负载均衡可以通过定义一组Pod的访问策略来实现。Service通常拥有以下的特点:拥有一个指定的名字,例如mysql-server。拥有一个虚拟IP地址和端口号,销毁之前不会改变,只能

31、内网访问。能够提供某种远程服务能力。能够被映射到提供这种服务能力的一组容器应用上。3.Kubernetes重要概念2.服务(Service)Service有三种常用的类型:ClusterIP、NodePort和LoadBalancer。ClusterIP:是默认的ServiceType(服务类型),分配一个集群内部IP地址,即VIP,只能在集群内部访问(同命名空间内的Pod)。NodePort:分配一个集群内部的IP地址,并在每个节点上启用一个端口来暴露服务,可以从集群外部访问。访问地址格式为NodelP:NodePort。LoadBalancer:与NodePort类似,分配一个集群内部IP

32、地址,并在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台上的负载均衡器,将每个节点(NodelP:NodePort)作为后端添加进去。3.Kubernetes重要概念3.控制器(Controller)Kubernetes通常不会直接创建Pod,而是创建控制器,然后通过控制器来管理Pod。控制器中定义了Pod的部署特性,比如有几个副本,在什么样的Node上运行等。为了满足不同的业务场景,Kubernetes提供了多控制器,包括Deployment控制器、ReplicaSet控制器、DaemonSet控制器、StatefuleSet控制器和Job控制器等。Depl

33、oyment控制器是最常用的Controller,可以通过创建Deployment来部署应用。ReplicaSet控制器实现了Pod的多副本管理。DaemonSet控制器用于每个Node最多只运行一个Pod副本的场景。StatefuleSet控制器能够保证Pod的每个副本在整个生命周期中名称是不变的。Job控制器基于特定任务而运行,当运行任务的容器完成工作后,Job控制器成功退出。3.Kubernetes重要概念4.卷(Volume)默认情况下,容器的数据都是非持久化的,在容器销毁之后数据也会跟着消失,因此,在Docker中提供了卷机制可以将数据持久化。为了实现数据的持久性存储,Docker在

34、宿主机和容器内做映射,保证在容器的生命周期结束后,数据依旧可以实现持久性存储。从根本上来说,一个卷仅仅是一个可被容器组中的容器访问的文件目录。这个目录是怎么来的,取决于该卷的类型,不同类型的卷使用不同的存储介质。使用卷时,需要先在容器组中定义一个卷,并将其挂载到容器的挂载点上。同一个容器组中的不同容器各自独立地挂载卷,即同一个容器组中的两个容器可以将同一个卷挂载到各自不同的路径上。3.Kubernetes重要概念容器组、容器、挂载点、卷和存储介质之间的关系4.卷(Volume)一个容器组可以包含多个卷和多个容器;一个容器通过挂载点来决定某一个卷被挂载到容器的什么路径;不同类型的卷对应不同的存储

35、介质,图中列出了NFS(Network File System)、PVC(Persistent Volume Claim)和ConfigMap(用来存储配置文件的Kubernetes资源对象,保存key-value配置数据对)三种存储介质。3.Kubernetes重要概念5.命名空间(Namespace)命名空间的主要作用是对Kubernetes集群资源进行划分。这种划分不是物理划分,而是逻辑划分,是对一组资源和对象的抽象集合,用于实现多租户的资源隔离。命名空间可以将系统内部的对象分配到不同的命名空间中,形成逻辑上的不同项目、小组或者用户组,从而使得在共享使用整个集群的资源时能够单独管理。命名

36、空间实现逻辑隔离,可以把多个用户项目分割到不同的环境,这种方式可以有效防止跨项目的污染。例如,用户可以安装不同版本的Jenkins,如果它们的环境变量是在不同的命名空间,就不会冲突。Kubernetes集群在启动后,会创建一个名为default的默认命名空间,如果不特别指明命名空间,那么用户创建的Pod、服务等都会被系统创建到默认的命名空间中。4.Kubernetes功能与架构Kubernetes的主要功能:资源调度:资源调度是一套分布式系统最基本的核心指标。资源管理:控制Pod对计算资源、网络资源、存储资源的使用。服务发现:管理外在的程序或者内部的程序如何访问Kubernetes里面的某个P

37、od。健康检查:监控检测服务是否正常运行。自动伸缩:因为涉及到环境的快速迁移和复制,虚拟机时代之前都非常难实现。容器化时代很自然的解决了这个问题,Kubernetes保证了资源的按需扩容。更新升级:Kubernetes为服务的滚动和平滑升级提供了很好的机制。4.Kubernetes功能与架构Kubernetes架构图Kubernetes架构Kubernetes属于主从的分布式集群架构,包含Master和Nodes。Master作为控制节点,调度管理整个系统;Nodes是运行节点,负责运行应用。Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(Container)、

38、存储资源(Volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。Kubernetes集群搭建与实践1.安装前准备2.安装Master节点3.部署Master节点4.安装Node节点5.将Node节点加入集群6.部署Kubernetes第一个应用0 5Kubernetes集群搭建与实践Kubernetes集群的安装部署有不同的方式,可以使用二进制包的方式进行安装,也可以使用官方社区推出用于快速部署Kubernetes的kubeadm工具进行安装。此外,Kubernetes可以部署在一台主机上,也可以部署在多台主机上。由于Kubernetes是分布式集群,本书以两个节点为例,使用k

39、ubeadm的方式进行Kubernetes的安装与部署。1.安装前准备1.安装要求一台或多台服务器或虚拟机。硬件配置:2GB内存或更多,2个CPU或更多,硬盘30GB或更多(Master节点最低是2核CPU)。集群中所有机器之间网络能够互相连通。集群中所有机器可以访问外网,因为安装过程需要拉取镜像。各节点禁止Swap分区。2.安装目标在所有节点上安装Docker和kubeadm。部署Kubernetes Master。部署容器网络插件。部署Kubernetes Node,将节点加入Kubernetes集群中。1.安装前准备本书以VMware中的CentOS7虚拟机作为Kubernetes集群的

40、各个节点,一共使用了两个节点,一个Master节点,一个Node节点。节点点类型型节点操作系点操作系统节点名称点名称节点点IP地址地址MasterCentOS 7master192.168.124.10NodeCentOS 7node1192.168.124.11Kubernetes集群的节点构成2.安装Master节点注意事项:本小节内容不仅需要在Master节点上进行操作,也需要在Node节点进行操作。如果读者是使用VMware中的CentOS进行配置安装,在安装Master节点之后,部署Master节点之前,最好对Master节点拍摄快照,以便在后续克隆生成Node节点。首先禁用Mast

41、er节点的Swap分区关闭防火墙。禁用Selinux。配置/etc/hosts,在文件末尾分别添加Master和Node1的IP地址。rootlocalhost#swapoff arootlocalhost#systemctl stop firewalldrootlocalhost#systemctl disable firewalldrootlocalhost#setenforce 0rootmaster#vim/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4:1 lo

42、calhost localhost.localdomain localhost6 localhost6.localdomain6192.168.124.10 master192.168.124.11 node12.安装Master节点使用yum命令安装Docker,默认安装Docker的最新版本。(若已安装,跳过该步骤)配置Docker加速。(若已配置,跳过该步骤)安装Kubernetes相关组件,这些组件包括kubelet,kubeadm和kubectl。在安装Kubernetes这些组件时,如果无法科学上网,是不能使用Kubernetes官方的源来安装kubelet,kubeadm和kub

43、ectl组件的。所以在安装kubelet,kubeadm和kubectl之前,使用以下命令,添加国内阿里云的YUM软件源。设置kubelet开机自启动。rootmaster#yum install dockerrootmaster docker#vim daemon.jsonregistry-mirrors:https:/hub- rootmaster#yum install-y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0rootmaster#systemctl enable kubelet3.部署Master节点注意事项:如果读者Master节点

44、是使用的VMware的虚拟机,在进行本部分配置之前对虚拟机拍摄快照,以方便后续Node节点的克隆。通过kubectl version查看Kubernetes的安装版本为v1.15.0。进行kubeadm的初始化注意事项:以下命令中,-apiserver-advertise-address选项的IP地址192.168.124.10是本例中Master节点IP,读者在配置时应修改为自己的Master节点IP。rootmaster docker#kubectl versionrootmaster#kubeadm init -apiserver-advertise-address=192.168.12

45、4.10 -image-repository -kubernetes-version v1.15.0 -service-cidr=10.1.0.0/16 -pod-network-cidr=10.244.0.0/163.部署Master节点接下来执行以下命令,执行完以后才能使用集群。安装Pod网络插件,配置flannel网络。rootmaster#mkdir-p$HOME/.kuberootmaster#sudo cp-i/etc/kubernetes/admin.conf$HOME/.kube/configrootmaster#sudo chown$(id-u):$(id-g)$HOME/.

46、kube/configrootmaster#kubectl apply-f https:/ get pods-n kube-systemNAME READY STATUS RESTARTS AGEcoredns-bccdc95cf-n6kwx 1/1 Running 0 20mcoredns-bccdc95cf-rg4sq 1/1 Running 0 20metcd-master 1/1 Running 0 19mkube-apiserver-master 1/1 Running 0 19mkube-controller-manager-master 1/1 Running 0 19mkube

47、-flannel-ds-lp7jq 1/1 Running 0 57skube-proxy-56psw 1/1 Running 0 20mkube-scheduler-master 1/1 Running 0 19mrootmaster#4.安装Node节点注意事项:读者可以从头开始配置一个全新的Node节点,这时需要将11.5.2小节中安装Master节点的内容全部在Node节点进行安装设置。但如果读者的Master节点是使用的VMware中的虚拟机,那么只需将在部署Master节点前将Master克隆即可形成Node节点。全新配置一个Node节点时,步骤和11.5.2中完全一致,只需将No

48、de节点IP地址进行修改即可。克隆生成Node时,从部署Master节点之前的快照进行克隆,然后修改其IP地址即可。修改Node节点IP地址时,使用vim打开文件/etc/sysconfig/network-scripts/ifcfg-ens33,修改IP地址为192.168.124.11。rootmaster#vim/etc/sysconfig/network-scripts/ifcfg-ens33修改IP地址为192.168.124.114.安装Node节点注意事项:此处Node的IP地址是本例中为Node规划的IP,且该IP需要和Master的IP地址处于同一个网段,读者需修改为自己使用

49、的IP地址。修改完成后重新启动网络,再使用命令“ifconfig ens33”查看IP地址是否已经修改。确认Node节点上的Swap和SELinux已经关闭,如果未关闭确认再次关闭。rootmaster#service network restartrootmaster#ifconfig ens33rootnode1#getenforce Enforcingrootnode1#swapoff-arootnode1#setenforce 0rootnode1#getenforce Permissive5.将Node节点加入集群在Master节点执行操作:在Master节点上生成token和has

50、h值。rootmaster#kubeadm token createrootmaster#openssl x509-pubkey-in/etc/kubernetes/pki/ca.crt|openssl rsa-pubin-outform der 2/dev/null|openssl dgst-sha256-hex|sed s/.*/5.将Node节点加入集群在Node节点执行操作:向集群添加新节点,执行kubeadm join命令。注意事项:该命令中-token选项后的为Master节点上生成的token值。一般情况下token两天会过期,如果过期需要重新创建,创建token命令是“kube

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报