版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Docker容器技术与应用湖北轻工职业技术学院Kubernetes概述及基本操作项目6项目背景随着容器技术的迅速发展,企业对容器化应用的管理和部署需求日益增长。传统方式难以满足应用大规模、高效运行的要求。Kubernetes应运而生,作为Google开源的容器编排引擎,能有效解决这些问题。Kubernetes概述及基本操作项目6
Kubernetes是Google开源的容器编排引擎,它提供了自动化部署、大规模可伸缩、应用容器化管理等功能。本项目通过两个任务介绍了Kubernetes的发展及其基本操作,并以RHEL8.1操作系统为基础,介绍了使用kubeadm安装Kubernetes集群的方法和kubectl命令的使用方法。项目六:Kubernetes概述及基本操作目录任务6.1、Kubernetes概述任务6.2、Kubernetes的基本操作Swarm编排工具的使用回顾1、了解容器集群的管理方法。2、Swarm编排工具的使用方法。知识目标了解Kubernetes的概念。了解Kubernetes的架构。能力目标掌握Kubernetes集群的安装方法。掌握Kubernetes下Dashboard的安装方法。素质目标培养团队协作精神.树立诚信意识。Swarm作为Docker开发的原生的集群管理引擎,虽然有众多优点,但是仍存在依赖平台、不提供存储选项、监控不良等问题。工程师小王通过查阅资料发现,Kubernetes作为Google开源的一个容器编排引擎,较好地解决了这些问题。小王在对Kubernetes技术进行调研后,编写了Kubernetes的安装手册,以供公司相关技术人员学习,并在公司内部推广该技术。任务6.1Kubernetes概述任务要求6.1任务6.1Kubernetes概述相关知识6.1容器编排工具容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器;当并发访问量变大的时候,怎么样做到横向扩展容器数量。这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:Swarm:Docker自己的容器编排工具。Kubernetes:Google开源的的容器编排工具。随着应用规模的增长,主机端承受的负载压力越来越大,已经超出了单台主机所能承受的负载能力。编排系统可以帮助用户将一组主机(节点)视为一个统一的、可编程的、可靠的集群,这个集群可以当作一台大型计算机来使用。Kubernetes用于管理云平台中多个主机的容器化应用,是一个全新的基于容器技术的分布式架构领先方案。它在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能,提高了大规模容器集群管理的便捷性。Kubernetes的主要目标是让部署容器化的应用简单且高效,提供了一种应用部署、规划、更新、维护机制。任务6.1Kubernetes概述相关知识6.1Kubernetes简介由于Kubernetes在K和s间有8个字母,因此常简称为K8s.2015年7月,KubernetesV1.0正式发布。事实上,随着用户对K8s系统架构与设计理念的深入了解,逐渐发现K8s系统正是处处为运行云原生应用而设计的。同时,随着用户对K8s系统使用的加深和推广,也产生了越来越多的有关云原生应用的设计模式,使得基于K8s系统设计和开发生产级的复杂云原生应用变得像启动一个单机版容器服务那样简单易用。Kubernetes可以调度计算集群节点、动态管理节点上的作业,并保证它们按用户期望的状态运行;通过使用Labels和Pods,Kubernetes将应用按照逻辑单元进行分组,方便管理和服务发现。任务6.1Kubernetes概述相关知识6.1Kubernetes简介Kubernetes作为一个完备的分布式系统支撑平台,具有完备的集群管理能力。Kubernetes集群在多个Docker节点之间进行协调,提供了一个统一的可编程的模型,它具有以下几个方面的增强功能。(1)自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器。
强大的故障发现和自我修复能力。Kubernetes会监视容器的运行状态,在其出现故障时重新启动容器,并通过动态服务归属机制确保一个节点失效后,Kubernetes管理系统会自动将失效节点的任务重新调度到健康的节点上,而这些新启动的容器能被发现并使用。(2)高集群利用率:在主机上调度,提高计算机的利用率。
与静态的手工配置方式相比,Kubernetes通过在一组主机(节点)上调度不同类型的工作负载,大幅度提高了计算机的利用率。集群越大,工作负载种类越多,主机的利用率就越高。任务6.1Kubernetes概述相关知识6.1Kubernetes简介(3)组织和分组:通过标签系统,以一组容器为单位来处理,并Kubernetes支持命名空间功能。
在大型集群中,追踪所有正在运行的容器可能非常困难。Kubernetes通过标签系统,让用户和其他系统可以以一组容器为单位来进行处理。同时,Kubernetes支持命名空间功能,可使不同的用户或团队在集群中看到相互隔离的不同视图。(4)弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整。
弹性伸缩是指适应负载变化,在Kubernetes中,可根据负载的高低动态调整Pod的副本数量,以弹性可伸缩的方式提供资源。(5)滚动升级。
滚动升级是一种平滑过渡的升级方式,Kubernetes通过逐步替换的策略来保证整体系统的稳定性。任务6.1Kubernetes概述相关知识6.1Kubernetes简介
一个K8S系统,通常称为一个K8S集群(Cluster)。主要包括两个部分:一个Master节点(主节点)一群Node节点(计算节点)任务6.1Kubernetes概述相关知识6.1Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。Kubernetes核心概念1.MasterMaster:集群的控制平面,负责集群的决策(集群管理者)。一般会独自占据一个服务器,负责管理集群,提供了集群的资源数据访问入口。基本上Kubermetes所有的控制命令都将发给Master,由Master负责具体的执行过程。Master组件可以在集群中的任何计算机上运行,但建议让Master占据个独立的服务器,因为Master是整个集群的大脑,如果Master所在节点宕机或者不可用,所有的控制命令都将失效。6.1任务6.1Kubernetes概述相关知识1.MasterMaster节点包含以下关键组件。APIServer:Kubernetes中所有资源的增加、删除、修改、查询等操作指令的唯一入口。任何对资源进行操作的指令都要交给APIServer处理,再提交给etcd。ControllerManager:Kubernetes所有资源对象的自动化控制中心。可以理解为每个资源都对应一个控制器,而ControllerManager负责管理这些控制器。6.1任务6.1Kubernetes概述相关知识1.MasterMaster节点包含以下关键组件。Scheduler:负责资源调度(Pod调度),负责调度Pod到合适的Node上。如果把Scheduler看作一个黑匣子,那么它的输入是Pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将Pod部署到Node上。用户可以使用Kubernetes提供的调度算法,也可根据需求自定义调度算法。Etcd:一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了RESTful的API。6.1任务6.1Kubernetes概述相关知识2.Node集群的数据平面,负责为容器提供运行环境(真正干活)。Node负责Pod的创建、启动、监控、重启、销毁,并实现软件模式的负载均衡。Node组件除了Master,Kubermetes集群中的其他机器也被称为Node节点。与Master节点一样,Node节点可以是一台物理主机,也可以是一台虚拟机。Node节点是Kubermets集群中的工作负载节点,每个Node节点都会被Master节点分配些工作负载。当某个Node节点宕机时,其上的工作负载会被Master节点自动转移到其他节点上去。每个Node节点上都运行着以下关键进程。6.1任务6.1Kubernetes概述相关知识2.Node每个Node主要由3个模块组成,它们负责Pod的创建、启动、监控、重启、销毁,并实现软件模式的负载均衡。Kubelet:是Master在每个Node上的代理,是Node上最重要的模块,它负责维护和管理该Node上的所有容器,但是如果某容器不是通过Kubernetes创建的,则Node不会管理此容器。kube-proxy:实现KubernetesService的通信与负载均衡机制的重要组件。Docker:指的是容器运行环境,目前Kubernetes支持Docker环境。6.1任务6.1Kubernetes概述相关知识2.Node
Node节点可以在运行期间动态增加到Kubermetes集群中,前提是这个节点上已经正确安装、配置和启动了上述关键进程。在默认情况下,Kubelet会向Master节点注册自己,这也是Kubernetes推荐的Node节点管理方式。一旦Node节点被纳入集群管理范围,Kubelet进程会定时向Master节点汇报自身的情况,例如操作系统、Docker版本、机器的CPU和内存情况,以及之前有哪些Pod在运行等。这样Master节点可以获知每个Node节点的资源使用情况,并实现高效负载均衡资源调度策略。若某一个Node节点超过指定时间不上报信息,会被Master节点判定为失聪的状态,并被标记为不可用,随后Master节点会触发节点转移进程。6.1任务6.1Kubernetes概述相关知识2.Node
Node是Kubernetes集群架构中运行Pod的服务节点,Node包含的信息如下。(1)Node地址:主机的IP地址或NodeID。(2)Node的运行状态:包含Pending、Running、Terminated三种状态。(3)NodeCondition:描述Running状态下Node的运行条件,只有Ready一种状态。(4)Node系统容量:描述Node可用的系统资源,包括CPU、内存、最大可调度Pod数量等。(5)其他:内核版本、Kubernetes版本等。6.1任务6.1Kubernetes概述相关知识3.pod
Pod是Kubernetes的基本操作单元,也是应用运行的载体。整个Kubernetes系统都是围绕着Pod展开的。Pod是若干容器的组合,一个Pod内的容器必须运行在同一台宿主机上,这些容器使用相同的命名空间、IP地址和端口,可以通过localhost互相发现和通信,可以共享一块存储卷空间。6.1任务6.1Kubernetes概述相关知识3.pod
Pod其实有两种类型:静态Pod和普通Pod。静态Pod并不存在于Kubernetes的etcd存储中,而是存放在某个Node的一个具体文件中,并且只在此Node上启动。普通Pod一旦被创建,就会被放入etcd存储中,随后会被KubernetesMaster调度到某个具体的Node上进行绑定,该Pod被对应的Node上的kubelet进程实例化为一组相关的Docker容器并启动。在默认情况下,当Pod中的某个容器终止时,Kubernetes会自动检测到这个容器并重启Pod(重启Pod中的所有容器)。如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上。6.1任务6.1Kubernetes概述相关知识3.pod
一个Pod中的应用容器共享一组资源。(1)PID命名空间:Pod中的不同应用程序可以看到其他应用程序的进程ID。(2)网络命名空间:Pod中的多个容器能够访问同一个IP地址和端口范围。(3)IPC命名空间:Pod中的多个容器能够使用SystemVIPC或POSIX消息队列进行通信。(4)UTS命名空间:Pod中的多个容器共享一个主机名。(5)共享存储卷:Pod中的各个容器可以访问在Pod级别定义的卷。6.1任务6.1Kubernetes概述相关知识4.ReplicationController
当应用托管在Kubernetes后,ReplicationController(RC)负责保证应用持续运行。RC用于管理Pod的副本,保证集群中存在指定数量的Pod副本。当集群中副本的数量大于指定数量时,会终止指定数量之外的多余容器;反之,会启动少于指定数量的容器,以保证数量不变。在此基础上,RC还提供了一些更高级的特性,如弹性伸缩、动态扩容和滚动升级等。6.1任务6.1Kubernetes概述相关知识5.Service
为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持。 Service是真实应用服务的抽象,定义了Pod的逻辑上的集合和访问Pod集合的策略。Service将代理Pod对外表现为一个单一的访问接口,外部不需要了解Pod如何运行,这给扩展和维护带来了很多好处,提供了一套简化的服务代理和发现机制。6.1任务6.1Kubernetes概述相关知识6.Label
Kubernetes中的任意API对象都是通过Label进行标识的,Label以key/value的形式附加到各种对象上,如Pod、Service、RC、Node等,以识别这些对象并管理关联关系等,如管理Service和Pod的关联关系。一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上。Label是RC和Service运行的基础,二者通过Label来关联Node上运行的Pod。
可以通过给指定的资源对象捆绑一个或者多个不同的Label来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置等。6.1任务6.1Kubernetes概述相关知识6.Label
常用的Label分为如下几类。(1)版本Label:"release":"stable"、"release":"canary"。(2)环境Label:"environment":"dev"、"environment":"qa"、"environment":"production"。(3)架构Label:"tier":"frontend"、"tier":"backend"、"tier":"middleware"。(4)分区Label:"partition":"customerA"、"partition":"customerB"。(5)质量管控Label:"track":"daily"、"track":"weekly"。6.1任务6.1Kubernetes概述相关知识7.Volume
Volume是Pod中能够被多个容器访问的共享目录。Volume被定义在Pod上,Pod内的容器可以访问、挂载Volume。Volume与Pod的生命周期相同,与具体的Docker容器生命周期不相关。某个Docker容器删除或终止时,Volume中的数据不会丢失。Volume支持EmptyDir、HostPath、NFS、ISCSI、GlusterFS等类型的文件系统。6.1任务6.1Kubernetes概述相关知识Kubernetes概念Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控。Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行。Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器;Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等。Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod。Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签。NameSpace:命名空间,用来隔离pod的运行环境(默认pod之间是可以相互访问的,有了Namspace后,可以控制pod之间是否能访问)。Volume:是Pod中能够被多个容器访问的共享目录。6.1任务6.1Kubernetes概述
相关知识Kubernetes架构及操作流程1.Kubernetes架构
Kubernetes集群包含节点代理kubelet和Master组件,一切都基于分布式的存储系统。Kubernetes架构如图所示。6.1任务6.1Kubernetes概述相关知识1.Kubernetes架构
(1)KubernetesMaster服务:KubernetesMaster服务包括APIServer、Scheduler、ControllerManager等。这些服务提供了API来收集和展现集群的当前状态,并在节点之间分配Pod。用户始终与Master的API直接交互。其为整个集群提供了一个统一视图。
(2)主节点存储:Kubernetes所有的持久化状态都保存在etcd中。
(3)kubelet:其运行在每个节点之上,负责控制Docker,向Master报告自己的状态及配置节点级别的资源,如配置远程磁盘存储。
(4)KubernetesProxy:其运行在每个节点之上,为本地容器提供了一个单一的网络接口,以连接一组Pod。6.1任务6.1Kubernetes概述相关知识2.Kubernetes的操作流程
(1)通过kubectl和KubernetesAPI,提交一个创建RC的请求,该请求通过APIServer被写入etcd中。该RC请求包含一个Pod模板和一个希望的副本数。
(2)ControllerManager通过APIServer监听资源变化的接口监听该RC请求,如果当前集群中没有其所对应的Pod实例,则根据RC中的Pod模板定义并生成一个Pod对象,通过APIServer写入etcd。6.1任务6.1Kubernetes概述相关知识2.Kubernetes的操作流程(3)Scheduler通过查看集群的当前状态(有哪些可用节点,以及各节点有哪些可用资源)执行相应的调度流程,将新的Pod绑定到指定的节点上,并通过APIServer将该结果写入etcd中。(4)该节点上的kubelet会监测分配给其所在节点的Pod组中的变化,并根据情况来启动或者终止Pod。其过程包括在需要时对存储卷进行配置,将Docker镜像下载到指定节点中,以及通过调用DockerAPI来启动或终止各个容器。6.1任务6.1Kubernetes概述相关知识2.Kubernetes的操作流程6.1任务6.1Kubernetes概述相关知识2.Kubernetes的操作流程Kubernetes的操作流程(以部署一个nginx服务来说明kubernetes系统各个组件调用关系)1.首先要明确,一旦kubemnetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中。2.一个nginx服务的安装请求会首先被发送到master节点的apiServer组件。3.apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知apiServer。4.apiServer调用controller-manager去调度Node节点安装nginx服务。5.kubelet接收到指令后,会通知docker,然后由docker来启动一个nginx的podpod是kubernetes的最小操作单元,容器必须跑在pod中。6.至此,一个nginx服务就运行了,如果需要访问nginx,就需要通过kube-proxy来对pod产生访问的代理这样。外界用户就可以访问集群中的nginx服务了。6.1任务6.1Kubernetes概述相关知识Kubeadm软件包的作用Kubeadm是Kubernetes官方提供的用于快速部署和初始化Kubernetes集群的命令行工具。它的主要功能包括:部署和初始化:使用kubeadm可以在多个节点上快速部署和初始化Kubernetes集群。在初始化集群时,kubeadm会检查主机配置和组件依赖项,配置kubelet和kube-proxy,生成TLS证书和密钥,以及创建Kubernetes控制平面的核心组件(APIServer、ControllerManager和Scheduler等)。升级:kubeadm也支持集群的升级,可以根据需要将Kubernetes集群升级到新的版本。配置:使用kubeadm可以快速生成Kubernetes配置文件,这些配置文件可以用于其他部署工具(如Helm)进行Kubernetes应用程序部署。添加节点:使用kubeadm可以方便地添加新的节点到现有的Kubernetes集群中。自定义:kubeadm还提供了一些选项,允许用户自定义集群的配置和部署方式,以满足不同的需求和场景。7.1任务7.1Kubernetes的发展相关知识Kubelet软件包的作用Kubelet是Kubernetes集群中的一个重要组件,它运行在每个节点上,并负责管理节点上的容器。Kubelet的主要功能包括以下几个方面:容器生命周期管理:Kubelet负责启动、停止和重启节点上的容器,并确保它们保持运行状态。它通过监控容器的运行状态来确保容器在出现故障时能够被及时重新启动。资源管理:Kubelet还负责管理节点上的资源,包括CPU、内存、磁盘等。它通过控制容器的资源使用来确保节点资源的充分利用和合理分配。安全管理:Kubelet负责确保容器的安全性,包括限制容器的权限、限制容器对主机文件系统的访问、实现容器之间的隔离等。节点管理:Kubelet向控制平面汇报节点的状态信息,包括节点的健康状态、容器的运行状态、节点的资源使用情况等。这些信息对于集群的监控和管理非常重要。网络管理:Kubelet还负责为容器设置网络环境,包括分配IP地址、设置网络策略等。总之,Kubelet是Kubernetes集群中至关重要的组件之一,它负责管理节点上的容器,确保它们保持运行状态,保障集群的稳定性和可靠性。7.1任务7.1Kubernetes的发展相关知识Kubectl软件包的作用Kubectl是Kubernetes命令行工具,它是Kubernetes的主要管理工具之一。通过kubectl,用户可以与Kubernetes集群进行交互,管理容器、Pod、服务、部署等各种资源对象。Kubectl的主要功能包括以下几个方面:部署应用:kubectl可以用来创建、更新和删除部署、副本集、DaemonSet等应用资源。管理Pod:kubectl可以用来创建、更新和删除Pod,以及查看Pod的状态、日志和运行情况等。管理服务:kubectl可以用来创建、更新和删除服务资源,并查看服务的状态和IP地址等。管理配置:kubectl可以用来管理Kubernetes中的配置信息,包括ConfigMap和Secret等。扩容与缩容:kubectl可以用来扩容和缩容部署和副本集等资源对象。访问KubernetesAPI:kubectl可以用来访问KubernetesAPI,以便于查询和修改Kubernetes资源对象。调试应用:kubectl可以用来调试应用程序,包括查看Pod日志、执行进入容器等操作。总之,kubectl是Kubernetes中最常用的命令行工具之一,它提供了丰富的功能,使得用户可以方便地管理和操作Kubernetes集群。7.1任务7.1Kubernetes的发展相关知识实训目的(1)掌握Kubernetes在RHEL8.1操作系统中的安装方法。(2)掌握Kubernetes集群的在线和离线创建。(3)掌握在Kubernetes上安装Dashboard监控界面的方法。实训内容(1)在RHEL8.1操作系统中安装Kubernetes集群。(2)在Kubernetes上安装Dashboard监控界面。6.1任务6.1Kubernetes概述项目实训(部署Kubernetes集群)实训步骤1.任务环境准备本任务选用两台部署在VMwareWorkstation16中的虚拟机,虚拟机均已预先安装Redhat8.1运行环境。各虚拟主机基本配置信息表如表6-1所示。表6-1各虚拟主机基本配置信息表6.1任务6.1Kubernetes概述项目实训主机名IP地址虚拟机CPU/内存节点角色k8s-master01/242vcpus/8GB管理节点k8s-node0102/242vcpus/8GB工作节点1k8s-node0203/242vcpus/8GB工作节点2实训步骤2.基本环境设置,3台节点主机均需设置(1)根据各虚拟主机基本配置信息表设置相应主机的主机名。(2)禁用RedHatSubscriptionManager订阅管理器。(3)编辑/etc/ho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 授权签约营销方案范文(3篇)
- 施工方案的设计要求(3篇)
- 椰子茶饮营销方案(3篇)
- 水箱外加固施工方案(3篇)
- 活动策划方案服装要求(3篇)
- 游艺城的营销方案(3篇)
- 环境应急预案整改报告(3篇)
- 福州应急预案招标公示(3篇)
- 红包全套活动策划方案(3篇)
- 视频首映活动策划方案(3篇)
- 2026江苏扬州市宝应城市发展控股有限公司招聘9人笔试参考题库及答案解析
- 2025年入团考试题及答案
- 新生儿科亚低温治疗新生儿缺氧缺血性脑病学习培训课件
- (正式版)HGT 2782-2024 化工催化剂颗粒抗压碎力的测定
- 产品经理技术知识
- 海南省2023年小升初语文试卷及答案汇总一
- 透过地理看历史
- 2019电力建设施工质量验收规程第6部分:调整试验
- 【地理】2023年高考真题江苏卷(解析版)
- 第五版-FMEA-新版FMEA【第五版】
- 大国安全知到章节答案智慧树2023年中北大学
评论
0/150
提交评论