版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云计算虚拟化技术基础与实践容器集群管理目录CONTENT01.容器集群管理技术02.DockerSwarm概述03.DockerSwarm集群搭建与实践04.Kubernetes概述05.Kubernetes集群搭建与实践本章重点了解容器集群管理的概念。了解常用的容器集群管理工具。理解DockerSwarm中的重要概念。掌握DockerSwarm集群的搭建方法。理解Kubernetes中的重要概念及其功能架构。掌握Kubernetes集群的搭建方法。掌握在Kubernetes集群中部署应用的简单方式。容器集群管理技术容器技术快速发展容器集群管理优势011.容器技术快速发展由Docker引领先锋,容器在过去的几年里得到了飞速发展。容器技术提供了组件化环境,能够帮助应用在云之间轻松迁移。容器技术还提供轻量化打包应用的方式,是所有DevOps(Development和Operations的组合)工具的重要组成部分。几乎所有需要快速且经常更改和重新部署的应用程序都非常适合集装箱化。使用微服务架构的应用程序是一种自然选择,容器为基于微服务的应用程序提供了一个理想的应用程序部署单元和自包含的执行环境。容器解决了开发人员的生产力问题,使DevOps工作流变得异常流畅。2.容器集群管理优势运行一个容器就像一个单独的乐器,单独播放它的交响乐乐谱。容器集群管理允许指挥家通过管理和塑造整个乐团的声音来统一管弦乐队。在单机上运行容器,无法发挥它的最大效能,只有形成集群,才能最大程度发挥容器的良好隔离、资源分配与编排管理的优势。所以用户需要一套管理系统,对Docker及容器进行更高级更灵活的管理,按照用户的意愿和整个系统的规则,完全自动化的处理好容器之间的各种关系,这些任务都属于容器集群管理的范畴。目前,正在影响现代基础设施的两个趋势分别是容器和DevOps。DevOps生态系统正不断发展,提供着持续集成、持续测试、持续部署和持续监控的功能,从而提高了软件开发的速度。另一方面,容器正与DevOps实践相结合,以实现大规模的快速部署。2.容器集群管理优势容器集群管理的优势包括以下几个方面:1.容器的短生命周期和增加的部署密度使得基础设施监控愈加重要,需要被单独监控的事物以指数的数量级增加。容器有助于提高开发人员的生产效率,容器集群管理工具则是为组织优化其DevOps和运营投资提供了帮助。2.容器集群管理工具提供容器调度和集群管理的技术,提供基于容器应用可扩展性的基本机制,用于跨多个主机协调创建、管理和更新多个容器。3.容器集群管理工具可用于自动化管理任务,能够进行资源的调配和部署,能够进行负载均衡和流量路由,能够监控容器运行状况,根据需求对容器进行配置应用,还能保障容器间交互的安全性和可用性。4.容器集群管理的优势还包括:高效的资源管理;可无缝扩展的服务;集群的高可用性;低成本的大规模运营等。DockerSwarm概述DockerSwarm简介DockerSwarm关键概念DockerSwarm常见命令021.
DockerSwarm简介DockerSwarm是Docker公司推出的用来管理Docker集群的平台,主要使用Go语言开发完成,代码开源在/docker/swarm。DockerSwarm和DockerCompose一样,都是Docker官方容器编排项目。DockerCompose是一个在单个服务器或主机上创建多个容器的工具DockerSwarm则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然DockerSwarm更加适合。从Dockerv1.12开始,DockerSwarmKit项目开启并且被集成进DockerEngine,并内置服务发现工具。其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。与Kubernetes相比,DockerSwarm更加轻量级,具有的功能也较Kubernetes更少。1.
DockerSwarm简介如图DockerSwarm集群,里面有多台物理服务器,每台服务器上都装有Docker并且开启了基于HTTP的DockerAPI。SwarmManager用来管理集群中的容器资源。它的管理对象是集群层面的,只能笼统地向集群发出指令而不能具体到某台具体的服务器上。Manager向外暴露了一个HTTP接口,外部用户通过这个HTTP接口来实现对集群的管理。DockerSwarm的基本架构2.DockerSwarm关键概念Swarm集群的管理和编排是使用嵌入Docker引擎的SwarmKit。当DockerEngine初始化了一个Swarm或者加入到一个存在的Swarm时,它就启动了SwarmNode。没启动SwarmNode时,Docker执行的是容器命令。运行SwarmNode后,Docker增加了编排Service的能力。Docker允许在同一个Docker主机上既运行SwarmService,又运行单独的容器。Node一个节点Node是Docker引擎集群的一个实例。Swarm中的每个DockerEngine都是一个Node,有两种类型的Node:ManagerNode和WorkerNode。Service服务Service定义了WorkerNode上要执行的任务。Swarm的主要编排任务就是保证Service处于期望的状态下。Task任务Task是在Docker容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给Worker节点。Task是Service的执行实体,Task启动Docker容器并在容器中执行任务。2.DockerSwarm关键概念ManagerNode负责执行编排和集群管理工作,保持并维护Swarm状态。Swarm中如果有多个ManagerNode,集群会自动协商并选举出一个Leader执行编排任务。WorkerNode接受并执行由ManagerNode派发的任务。在默认配置下,ManagerNode同时也是一个WorkerNode,不过也可以将其配置成Manager-onlyNode,让其专职负责编排和集群管理工作。WorkerNode会定期向ManagerNode报告自己的状态和它正在执行的任务状态,这样Manager就可以维护整个集群的状态。为了在Swarm中部署应用,需要在ManagerNode上执行部署命令,ManagerNode会将部署任务拆解并分配给一个或多个WorkerNode完成部署。3.DockerSwarm常见命令命令说明dockerswarminit用于创建一个新的Swarm。执行该命令的节点会成为第一个管理节点,并且会切换到Swarm模式。dockerswarmjoin-token用于查询加入管理节点和工作节点到现有Swarm时所使用的命令和Tokendockerswarmjoin加入Swarm集群dockerswarmleave离开Swarm集群dockerswarmupdate对Swarm集群更新配置dockernodels用于列出Swarm中的所有节点及相关信息dockernoderm
只能删除down状态的节点,要删除active状态的,需要加上force参数dockerservicels查看服务列表dockerserviceps查看具体服务信息dockerserviceinspect用于获取关于服务的详尽信息dockerservicecreate用于创建一个新服务dockerserviceupdate用于对运行中的服务的属性进行变更dockerservicelogs用于查看服务的日志DockerSwarm集群搭建与实践DockerSwarm集群搭建DockerSwarm集群服务创建DockerSwarm服务扩容DockerSwarm集群节点离开DockerSwarm集群服务滚动升级031.DockerSwarm集群搭建本小节以一个Manager节点和两个Worker节点为例,讲解集群的搭建过程。首先准备三台物理器或者虚拟机,这里都已经安装好DockerEngine。具体情况如下:manager是ManagerNode,IP为04。worker1和worker2是WorkerNode,IP为06和07。manager、worker1和worker2均为Linux虚拟机节点,系统为CentOS7。1.DockerSwarm集群搭建第一步,初始化Manager节点。在Manager节点上,使用dockerswarminit创建Swarm,同时让manager成为ManagerNode。第二步,在manager节点上,使用dockernodels查看刚创建的节点的状态信息。第三步,切换到worker1和worker2虚拟机节点上,执行dockerswarmjoin-token<TOKEN><MANAGER-IP>创建Worker节点。第四步,在manager节点上,查看创建的节点。2.DockerSwarm集群服务创建第一步,以上文中的集群为基础,在Manager节点上部署一个基本的Nginx服务,--replicas参数指定创建3个正在运行的服务数,--publish公开指定端口是8080映射容器80,同时使用Nginx镜像。第二步,在manager节点上,通过dockerservicels查看当前Swarm中的服务。第三步,在manager节点上,使用dockerserviceps查看具体的Nginx服务。2.DockerSwarm集群服务创建[root@manager~]#dockerservicecreate--replicas3--namenginx--publish8080:80nginxbxgyfpvoinaea4z8cljwcga5r1/3:running2/3:running3/3:running[root@manager~]#dockerservicelsIDNAMEMODEREPLICASIMAGEPORTSbxgyfpvoinaenginxreplicated3/3nginx:latest*:8080->80/tcp[root@manager~]#dockerservicepsnginxIDNAMEIMAGENODEDESIREDSTATECURRENTSTATEERRORPORTSjqsbyc0rwggjnginx.1nginx:latestworker2RunningRunning9minutesagobzrrih3mct9rnginx.2nginx:latestmanagerRunningRunning11minutesagoxk59l01mzjyznginx.3nginx:latestworker1RunningRunning3minutesago3.DockerSwarm集群服务扩容如果想要提高可用性,就需要对服务进行扩容。将Nginx服务数目提升到5个,具体步骤如下:第一步,在manager节点上,使用dockerservicescale命令对service进行扩容。第二步,在manager节点上,使用dockerserviceps命令查看服务情况。第三步,在worker1节点上,通过dockerps-a查看服务情况。4.DockerSwarm集群节点离开如果想要某一个Node离开DockerSwarm,可以通过在Node所在的DockerEngine中运行dockerswarmleave命令来实现。第一步,如果worker2想要离开DockerSwarm,可以在worker2节点上执行dockerswarmleave命令。第二步,在manager节点上,查看节点情况。第三步,在manager节点上,使用dockerserviceps命令查看5个Nginx服务的分布情况。5.DockerSwarm集群服务滚动升级将Redis版本滚动升级至更高版本,具体过程如下:第一步,在manager节点上,首先利用redis:3.0.6镜像创建3个Redis服务。第二步,在manager节点上,查看redisservice是否已经启动成功。第三步,在manager节点上,当所有的Task已经启动后,使用“dockerserviceupdate”命令将所有服务升级到3.0.7版本,用--image参数指定升级的版本。第四步,在manager节点上,再次使用“dockerserviceps”命令查看滚动升级后服务的状态变化。Kubernetes概述Kubernetes简介Kubernetes组件Kubernetes重要概念Kubernetes功能与架构041.Kubernetes简介01020304Google于2014年将Brog系统开源为Kubernetes。Kubernetes构建在GoogleBrog十五年运行大规模分布式系统的经验基础之上,并结合了开源社区最好的想法和实践。Kubernetes(缩写为K8s或Kube)是一个开源的,可移植的,用于集群管理的业务流程框架。Kubernetes的名字起源于希腊语,含义是舵手、领航员、向导。Kubernetes适用于多种生产环境,包括裸机,内部部署虚拟机,大多数云提供商,以及三者的组合/混合。自Kubernetes推出以来,它已被移植到Azure、DC/OS以及几乎所有的云平台。Kubernetes是基于Docker的开源容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能。1.Kubernetes简介Kubernetes脱胎于Google内部久负盛名的大规模集群管理系统Borg,是Google在容器化基础设施领域十余年实践经验的沉淀和升华。Google利用Kubernetes的架构和设计思想成功将其所有应用(搜索、地图、视频、金融、社交、人工智能等)运行在超过100万台服务器、超过80个数据中心,每周的20亿个容器上,所以Kubernetes是唯一具有超过10年以上大规模容器生产使用技术经验和积淀的开源项目。Kubernetes拥有广泛的行业合作伙伴,包括英特尔、微软和红帽等。很多公司都发布了Kubernetes发行版,包括RedHatOpenShift、CanonicalDistributionofKubernetes、CoreOSTectonic和IntelMirantis。1.Kubernetes简介Kubernetes提供高度的互操作性,以及自我修复、自动升级回滚以及存储编排。Kubernetes通过无需重新设计应用即可迁移的方式,来实现工作负载可移植和负载均衡。Kubernetes消除了部署和扩展应用过程中的很多手动操作。用户可以将多主机组成集群运行容器,无论是物理机还是虚拟机,Kubernetes都提供了很好的平台可以简单高效的管理这些集群。这些集群可以跨越分布于不同公有云、私有云、混合云的主机。因此,Kubernetes是托管需要快速扩展的云原生应用的理想平台。Kubernetes编排允许用户构建跨多个容器的应用程序服务,跨集群调度容器,扩展这些容器,并随着时间推移管理它们的运行状况。在用户、社区和大厂的支持中,Kubernetes逐步成为企业基础架构的部署标准和新一代的应用服务层。2.Kubernetes组件1.集群(Cluster):在Kubernetes中,集群是计算、存储和网络资源的组合。集群由各个节点组成,这些节点可以是物理服务器,也可以是虚拟机,Kubernetes利用这些节点提供的基础资源来运行各种应用程序。集群是Kubernetes容器集群的基础环境。2.Master:Master是整个集群的主控节点。在每个Kubernetes集群中,都至少有一个Master节点来负责整个集群的管理和控制。几乎所有的集群控制命令都是在Master节点上执行。在实际应用中,为了实现高可用性,可以部署多个Master节点。3.Node:Node(节点)是Kubernetes集群中的计算机,可以是虚拟机或物理机,多个Node协同工作。每个Node(节点)都由Master管理。一个Node(节点)可以有多个Pod(容器组),KubernetesMaster会根据每个Node(节点)上可用资源的情况,自动调度Pod(容器组)到最佳的Node(节点)上。2.Kubernetes组件Master节点上通常会运行KubernetesAPIServer进程、Kubernetes控制器管理器、Kubernetes调度器和Etcd组件。Master的架构图2.Kubernetes组件Master节点KubernetesAPIServer即KubernetesAPI服务器,它的进程名为kube-apiserver。KubernetesControllerManager,即Kubernetes控制器管理器,它是集群内部的管理控制中心,负责集群内的Node节点、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)和资源配额(ResourceQuota)等的控制和管理。KubernetesScheduler,即Kubernetes调度器,它用于监听最近创建但还未分配Node的Pod资源,根据特定的调度算法把Pod调度到指定的工作节点(Node)上。Etcd组件是一个轻量级的分布式键值存储组件,用于保存集群中所有的配置信息和各个对象的状态信息,只有APIServer进程才能直接访问和操作Etcd。2.Kubernetes组件Node(节点)是Kubernetes集群中的计算机,可以是虚拟机或物理机,多个Node协同工作。每个Node(节点)都由Master管理。一个Node(节点)可以有多个Pod(容器组),KubernetesMaster会根据每个Node(节点)上可用资源的情况,自动调度Pod(容器组)到最佳的Node(节点)上。Node的组成分为三部分,分别为Kubelet、Kube-proxy和ContainerRuntime。Node架构图2.Kubernetes组件Node节点在Kubernetes集群中,每个Node都会运行Kubelet进程。Kubelet用来处理Master节点下发的任务,管理Pod和其中的容器。Kubelet负责维护容器的生命周期,也负责管理存储卷等资源。每个Node上的Kubelet会在APIServer上注册信息,定期向Master汇报节点资源的使用情况。APIServer进程接收到这些信息后,会将Node的状态信息更新到Etcd中。Kubelet通过APIServer进程监听Pod信息,是Node上的Pod管家。Kube-proxy运行在所有的Node节点上,监听每个节点上KubernetesAPI中定义的服务变化,并创建路由规则来进行服务负载均衡。ContainerRuntime是负责运行容器的组件,负责下载镜像、创建和运行容器等。Kubernetes支持多种容器,包括Docker、containerd、cri-o、rktlet以及任何基于KubernetesCRI(ContainerRuntimeInterface,容器运行环境接口)的实现。3.Kubernetes重要概念1.容器组(Pod)Kubernetes中最基本的操作单元就是Pod。一个Pod可以包含一个或多个紧密相关的容器,多个容器应用之间通常是紧密耦合的。Pod可以看作是一个容器环境下的逻辑宿主机,Pod在Node上被创建、启动或者销毁。每个Pod中运行着一个或多个容器,多个容器拥有同样的生命周期,共享网络、命名空间和存储卷资源。Pod支持多种容器环境,Docker是最流行的容器环境。Pod示例图3.Kubernetes重要概念1.容器组(Pod)每一个Pod都会被指派一个唯一的IP地址,在Pod中的每一个容器共享网络命名空间,包括IP地址和网络端口。在同一个Pod中的容器可以互相通信。单容器Pod,是最常见的应用方式。对于多容器Pod,Kubernetes会保证所有的容器都在同一台物理主机或虚拟主机中运行。多容器Pod是相对高阶的使用方式,除非应用耦合特别严重,一般不推荐使用这种方式。Pod作为一个可以独立运行的服务单元,以更高的抽象层次为应用部署提供了极大的方便,简化了应用部署的难度。另外,Pod作为最小的应用实例可以独立运行,因此可以方便的进行部署、水平扩展和收缩、方便进行调度管理与资源的分配。3.Kubernetes重要概念2.服务(Service)在Kubernetes中,Service是一个抽象的概念,它定义了Pod逻辑集合和访问这些Pod的策略。一个服务可以看作是一组提供相同服务的Pod的对外访问接口,服务通过标签选择器(LabelSelector)选择Pod。Service的主要作用在于提供服务自动发现和负载均衡。服务自动发现可以防止Pod失联,因为增删Pod都能被感知。负载均衡可以通过定义一组Pod的访问策略来实现。Service通常拥有以下的特点:拥有一个指定的名字,例如mysql-server。拥有一个虚拟IP地址和端口号,销毁之前不会改变,只能内网访问。能够提供某种远程服务能力。能够被映射到提供这种服务能力的一组容器应用上。3.Kubernetes重要概念2.服务(Service)Service有三种常用的类型:ClusterIP、NodePort和LoadBalancer。ClusterIP:是默认的ServiceType(服务类型),分配一个集群内部IP地址,即VIP,只能在集群内部访问(同命名空间内的Pod)。NodePort:分配一个集群内部的IP地址,并在每个节点上启用一个端口来暴露服务,可以从集群外部访问。访问地址格式为NodelP:NodePort。LoadBalancer:与NodePort类似,分配一个集群内部IP地址,并在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台上的负载均衡器,将每个节点(NodelP:NodePort)作为后端添加进去。3.Kubernetes重要概念3.控制器(Controller)Kubernetes通常不会直接创建Pod,而是创建控制器,然后通过控制器来管理Pod。控制器中定义了Pod的部署特性,比如有几个副本,在什么样的Node上运行等。为了满足不同的业务场景,Kubernetes提供了多控制器,包括Deployment控制器、ReplicaSet控制器、DaemonSet控制器、StatefuleSet控制器和Job控制器等。Deployment控制器是最常用的Controller,可以通过创建Deployment来部署应用。ReplicaSet控制器实现了Pod的多副本管理。DaemonSet控制器用于每个Node最多只运行一个Pod副本的场景。StatefuleSet控制器能够保证Pod的每个副本在整个生命周期中名称是不变的。Job控制器基于特定任务而运行,当运行任务的容器完成工作后,Job控制器成功退出。3.Kubernetes重要概念4.卷(Volume)默认情况下,容器的数据都是非持久化的,在容器销毁之后数据也会跟着消失,因此,在Docker中提供了卷机制可以将数据持久化。为了实现数据的持久性存储,Docker在宿主机和容器内做映射,保证在容器的生命周期结束后,数据依旧可以实现持久性存储。从根本上来说,一个卷仅仅是一个可被容器组中的容器访问的文件目录。这个目录是怎么来的,取决于该卷的类型,不同类型的卷使用不同的存储介质。使用卷时,需要先在容器组中定义一个卷,并将其挂载到容器的挂载点上。同一个容器组中的不同容器各自独立地挂载卷,即同一个容器组中的两个容器可以将同一个卷挂载到各自不同的路径上。3.Kubernetes重要概念容器组、容器、挂载点、卷和存储介质之间的关系4.卷(Volume)一个容器组可以包含多个卷和多个容器;一个容器通过挂载点来决定某一个卷被挂载到容器的什么路径;不同类型的卷对应不同的存储介质,图中列出了NFS(NetworkFileSystem)、PVC(PersistentVolumeClaim)和ConfigMap(用来存储配置文件的Kubernetes资源对象,保存key-value配置数据对)三种存储介质。3.Kubernetes重要概念5.命名空间(Namespace)命名空间的主要作用是对Kubernetes集群资源进行划分。这种划分不是物理划分,而是逻辑划分,是对一组资源和对象的抽象集合,用于实现多租户的资源隔离。命名空间可以将系统内部的对象分配到不同的命名空间中,形成逻辑上的不同项目、小组或者用户组,从而使得在共享使用整个集群的资源时能够单独管理。命名空间实现逻辑隔离,可以把多个用户项目分割到不同的环境,这种方式可以有效防止跨项目的污染。例如,用户可以安装不同版本的Jenkins,如果它们的环境变量是在不同的命名空间,就不会冲突。Kubernetes集群在启动后,会创建一个名为default的默认命名空间,如果不特别指明命名空间,那么用户创建的Pod、服务等都会被系统创建到默认的命名空间中。4.Kubernetes功能与架构Kubernetes的主要功能:资源调度:资源调度是一套分布式系统最基本的核心指标。资源管理:控制Pod对计算资源、网络资源、存储资源的使用。服务发现:管理外在的程序或者内部的程序如何访问Kubernetes里面的某个Pod。健康检查:监控检测服务是否正常运行。自动伸缩:因为涉及到环境的快速迁移和复制,虚拟机时代之前都非常难实现。容器化时代很自然的解决了这个问题,Kubernetes保证了资源的按需扩容。更新升级:Kubernetes为服务的滚动和平滑升级提供了很好的机制。4.Kubernetes功能与架构Kubernetes架构图Kubernetes架构Kubernetes属于主从的分布式集群架构,包含Master和Nodes。Master作为控制节点,调度管理整个系统;Nodes是运行节点,负责运行应用。Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(Container)、存储资源(Volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。Kubernetes集群搭建与实践安装前准备安装Master节点部署Master节点安装Node节点将Node节点加入集群部署Kubernetes第一个应用05Kubernetes集群搭建与实践Kubernetes集群的安装部署有不同的方式,可以使用二进制包的方式进行安装,也可以使用官方社区推出用于快速部署Kubernetes的kubeadm工具进行安装。此外,Kubernetes可以部署在一台主机上,也可以部署在多台主机上。由于Kubernetes是分布式集群,本书以两个节点为例,使用kubeadm的方式进行Kubernetes的安装与部署。1.安装前准备1.安装要求一台或多台服务器或虚拟机。硬件配置:2GB内存或更多,2个CPU或更多,硬盘30GB或更多(Master节点最低是2核CPU)。集群中所有机器之间网络能够互相连通。集群中所有机器可以访问外网,因为安装过程需要拉取镜像。各节点禁止Swap分区。2.安装目标在所有节点上安装Docker和kubeadm。部署KubernetesMaster。部署容器网络插件。部署KubernetesNode,将节点加入Kubernetes集群中。1.安装前准备本书以VMware中的CentOS7虚拟机作为Kubernetes集群的各个节点,一共使用了两个节点,一个Master节点,一个Node节点。节点类型节点操作系统节点名称节点IP地址MasterCentOS7master0NodeCentOS7node11Kubernetes集群的节点构成2.安装Master节点注意事项:本小节内容不仅需要在Master节点上进行操作,也需要在Node节点进行操作。如果读者是使用VMware中的CentOS进行配置安装,在安装Master节点之后,部署Master节点之前,最好对Master节点拍摄快照,以便在后续克隆生成Node节点。首先禁用Master节点的Swap分区关闭防火墙。禁用Selinux。配置/etc/hosts,在文件末尾分别添加Master和Node1的IP地址。[root@localhost~]#swapoff–a[root@localhost~]#systemctlstopfirewalld[root@localhost~]#systemctldisablefirewalld[root@localhost~]#setenforce0[root@master~]#vim/etc/hostslocalhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain60master1node12.安装Master节点使用yum命令安装Docker,默认安装Docker的最新版本。(若已安装,跳过该步骤)配置Docker加速。(若已配置,跳过该步骤)安装Kubernetes相关组件,这些组件包括kubelet,kubeadm和kubectl。在安装Kubernetes这些组件时,如果无法科学上网,是不能使用Kubernetes官方的源来安装kubelet,kubeadm和kubectl组件的。所以在安装kubelet,kubeadm和kubectl之前,使用以下命令,添加国内阿里云的YUM软件源。设置kubelet开机自启动。[root@master~]#yuminstalldocker[root@masterdocker]#vimdaemon.json{"registry-mirrors":[""]}[root@master~]#yuminstall-ykubelet-1.15.0kubeadm-1.15.0kubectl-1.15.0[root@master~]#systemctlenablekubelet3.部署Master节点注意事项:如果读者Master节点是使用的VMware的虚拟机,在进行本部分配置之前对虚拟机拍摄快照,以方便后续Node节点的克隆。通过kubectlversion查看Kubernetes的安装版本为v1.15.0。进行kubeadm的初始化注意事项:以下命令中,--apiserver-advertise-address选项的IP地址0是本例中Master节点IP,读者在配置时应修改为自己的Master节点IP。[root@masterdocker]#kubectlversion[root@master~]#kubeadminit\>--apiserver-advertise-address=0\>--image-repository/google_containers\>--kubernetes-versionv1.15.0\>--service-cidr=/16\>--pod-network-cidr=/163.部署Master节点接下来执行以下命令,执行完以后才能使用集群。安装Pod网络插件,配置flannel网络。[root@master~]#mkdir-p$HOME/.kube[root@master~]#sudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config[root@master~]#sudochown$(id-u):$(id-g)$HOME/.kube/config[root@master~]#kubectlapply-f/coreos/flannel/master/Documentation/kube-flannel.yml3.部署Master节点在Master中查看Pod,看到所有Pod都运行起来,说明Kubernetes的Master节点搭建成功。[root@master~]#kubectlgetpods-nkube-systemNAMEREADYSTATUSRESTARTSAGEcoredns-bccdc95cf-n6kwx1/1Running020mcoredns-bccdc95cf-rg4sq1/1Running020metcd-master1/1Running019mkube-apiserver-master1/1Running019mkube-controller-manager-master1/1Running019mkube-flannel-ds-lp7jq1/1Running057skube-proxy-56psw1/1Running020mkube-scheduler-master1/1Running019m[root@master~]#4.安装Node节点注意事项:读者可以从头开始配置一个全新的Node节点,这时需要将11.5.2小节中安装Master节点的内容全部在Node节点进行安装设置。但如果读者的Master节点是使用的VMware中的虚拟机,那么只需将在部署Master节点前将Master克隆即可形成Node节点。全新配置一个Node节点时,步骤和11.5.2中完全一致,只需将Node节点IP地址进行修改即可。克隆生成Node时,从部署Master节点之前的快照进行克隆,然后修改其IP地址即可。修改Node节点IP地址时,使用vim打开文件/etc/sysconfig/network-scripts/ifcfg-ens33,修改IP地址为1。[root@master~]#vim/etc/sysconfig/network-scripts/ifcfg-ens33[修改IP地址为1]4.安装Node节点注意事项:此处Node的IP地址是本例中为Node规划的IP,且该IP需要和Master的IP地址处于同一个网段,读者需修改为自己使用的IP地址。修改完成后重新启动网络,再使用命令“ifconfigens33”查看IP地址是否已经修改。确认Node节点上的Swap和SELinux已经关闭,如果未关闭确认再次关闭。[root@master~]#servicenetworkrestart[root@master~]#ifconfigens33[root@node1~]#getenforce
Enforcing[root@node1~]#swapoff-a[root@node1~]#set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新农合医保权益保证
- 联合体合作合同详实版解析
- 石材供应合同协议格式
- 动力电池批量订购协议
- 2024车体车身广告合同
- 大数据分析与环境保护考核试卷
- 无人机的商业模式创新与实践案例考核试卷
- 塑料制品的材料属性与性能测试考核试卷
- 家用纺织品的产品创新与差异化竞争考核试卷
- 兽用药品批发商的个性化服务考核试卷
- 道亨送电线路三维设计平台使用培训ppt模板
- 扫黄打非教育活动台账
- 花城版高中音乐鉴赏全册教案
- 餐饮空间设计课件ppt
- 封样管理规定
- 口腔生物学:第三章 口腔疾病分子生物学1
- 民族式摔跤竞赛规则
- 无纬带在电机绑扎中的应用研究
- PDCA降低采集血标本不合格率【最新版 直接用】
- 投标产品包装与运输解决方案
- DB31∕T 875-2015 人身损害受伤人员休息期、营养期、护理期评定准则
评论
0/150
提交评论