




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要云计算技术的快速发展以及所带来的巨大效益的提升,是使得各个行业都开始把云计算技术和容器技术引入到行业中关键。为了解决容器化应用在虚拟化环境中的自动化部署和管理问题,详细探讨了基于Kubernetes和Ansible的解决方案。选用VMware作为虚拟化平台,利用其高效性和稳定性为Kubernetes集群搭建提供了可靠支撑。通过详尽的流程规划和系统设计,实现了一个自动化、高效、可伸缩的Kubernetes集群部署。在部署过程中,采用两种主要的技术策略:一是使用Kubeadm工具来配置集群,二是利用Ansible实现Kubernetes集群的自动化配置。这两种策略都实现了快速部署和集群节点的精确管理。通过编写AnsiblePlaybook,实现了包括Nginx、MariaDB和PHP在内的LNMP环境的自动化部署,确保了环境的一致性和服务的可靠性。使用了Deployment技术实现了程序的CI/CD集成,并通过编排不同的命名空间,实现了多环境的隔离和并行部署。经过LNMP环境部署的模拟测试和实际应用操作,验证了集群构建的有效性和LNMP环境的自动化部署及服务可用性。测试结果表明,所部署的Kubernetes集群能够满足容器化应用的自动化部署需求,并能确保各个组件之间的有效协作。定时执行的AnsiblePlaybook能够实时监控服务状态并记录异常,从而提升了系统的可维护性。关键词:Docker;Kubernetes;自动化部署;AnsibleAbstractTherapiddevelopmentofcloudcomputingtechnologyandthehugebenefitsitbringsarethekeytomakeeveryindustrystarttointroducecloudcomputingtechnologyandcontainerizationtechnologyintotheindustry.Inordertosolvetheproblemofautomateddeploymentandmanagementofcontainerizedapplicationsinvirtualizedenvironments,solutionsbasedonKubernetesandAnsibleareexploredindetail.VMwareisselectedasthevirtualizationplatform,anditsefficiencyandstabilityareutilizedtoprovidereliablesupportforKubernetesclusterbuilding.Anautomated,efficientandscalableKubernetesclusterdeploymentisrealizedthroughdetailedprocessplanningandsystemdesign.Inthedeploymentprocess,twomaintechnicalstrategiesareused:oneistousetheKubeadmtooltoconfigurethecluster,andtheotheristoutilizeAnsibletoautomatetheconfigurationoftheKubernetescluster.Bothstrategiesachievefastdeploymentandaccuratemanagementofclusternodes.AutomateddeploymentofLNMPenvironmentsincludingNginx,MariaDB,andPHPwasrealizedbywritingAnsiblePlaybooktoensureconsistencyoftheenvironmentandreliabilityoftheservices.DeploymenttechnologywasusedtoachieveCI/CDintegrationofprograms,andisolationandparalleldeploymentofmultipleenvironmentswasachievedbyorchestratingdifferentnamespaces.AfterthesimulationtestofLNMPenvironmentdeploymentandactualapplicationoperation,theeffectivenessofclusterconstructionandtheautomateddeploymentandserviceavailabilityofLNMPenvironmentwereverified.ThetestresultsshowthatthedeployedKubernetesclustercanmeetthedemandforautomateddeploymentofcontainerizedapplicationsandensureeffectivecollaborationbetweenvariouscomponents.TheAnsiblePlaybook,whichisexecutedatregularintervals,isabletomonitortheservicestatusandrecordexceptionsinrealtime,thusimprovingthemaintainabilityofthesystem.Keywords:Docker;Kubernetes;automateddeployment;Ansible
目录第1章 绪论 [13]。在现代IT运维中,自动化配置管理工具是不可或缺的一部分。Ansible,作为一种流行的开源自动化平台,使得复杂的IT环境得以简化。它基于声明性的模式工作,这意味着用户只需声明所需的系统状态,无需关心如何达到该状态。这种方法简化了大规模IT基础设施的配置和管理,并减少了人为错误。Ansible的核心组件围绕着Inventory、Playbooks和Modules设计。Inventory是Ansible管理的主机列表,可以定义为INI或YAML格式,这样用户就可以定义在哪些服务器上运行特定的任务。Playbooks,则是由一系列的'plays'组成的配置文件,负责定义IT基础设施的所需状态。每个“play”包含一组在特定主机群组上执行的“tasks”。Tasks则通过调用Modules来执行实际的工作,Modules是Ansible中的命令库,用于执行具体的系统管理任务,如安装软件、复制文件或管理服务。通过结合这些组件,Ansible可以实现从简单的配置更改到完整的多层应用堆栈部署的任何自动化任务。它的幂等性原则确保了配置的一致性和可预测性,即无论Playbook运行多少次,最终结果都保持一致,除非有意进行更改。同Kubernetes和Docker相比,Ansible不专注于容器化或服务编排,而是更广泛地关注整个IT基础设施的配置状态。它可以与Kubernetes一起使用,通过Playbooks管理集群和节点的配置,而不是容器本身。图2.3ansible基本工作流程2.3.2Ansible任务编排任务编排是自动化领域的重要组成部分,尤其当涉及到需要多个步骤、服务和工具协同工作时。Ansible通过其强大的Playbooks功能,使得编排这样的复杂工作流程成为可能。Playbooks使用YAML格式,这种格式的直观性和可读性使得定义自动化任务变得更加简单。在Ansible中,用户可以通过编写Playbooks来定义一系列的任务,这些任务可以包括软件安装、服务配置、用户管理等。通过使用变量和条件语句,Playbooks可以在执行任务时考虑到不同的环境和条件。这样的灵活性允许Ansible根据目标系统的实际状态执行不同的操作,比如只有当特定的软件没有安装时才进行安装。为了实现更高级别的重用性和组织,Ansible引入了Roles机制。Roles允许用户将Playbooks中的任务、变量、文件和模板封装成单独的单位。这种封装可以轻松地在不同的Playbooks中重复使用,也便于在团队或社区中共享。除了部署和配置,Ansible的编排能力还可以用来实现自动化测试、持续集成(CI)和持续部署(CD)流程。它可以与代码仓库和集成服务如Jenkins紧密集成,自动化执行代码的部署和测试任务。Ansible的任务编排能力,在IT自动化管理中起着至关重要的作用。无论是简单的配置更改,还是复杂的应用部署,Ansible都能提供一个清晰、一致、可维护的方式来自动化这些过程。这不仅大幅提高了操作效率,也减少了由于手动操作导致的错误和延迟。2.4其他工具虚拟化平台VMware是一家领先的虚拟化和云基础设施解决方案提供商,以其VMwarevSphere产品而闻名,该产品是构建虚拟化服务器环境的行业标准。VMware的虚拟化技术允许用户在单一物理服务器上同时运行多个虚拟机,每台虚拟机均可运行自己的操作系统和应用程序。这有助于资源的优化,提高了效率,并能显著降低成本。选择VMware作为虚拟化平台,是因为其成熟稳定和广泛的行业接受度。VMware提供的管理工具和广泛的功能集,如高可用性、灾难恢复和动态资源调度等,使得它适合进行各种规模和复杂性的实验。此外,VMware具有良好的兼容性和安全性,这是在安排实验时优先考虑使用它的原因之一。KubeadmKubeadm是一个用于快速部署Kubernetes集群的工具,由Kubernetes官方提供。它简化了集群的安装和配置过程,让用户能够通过执行简单的命令来初始化一个集群、加入节点以及设置集群网络。Kubeadm负责启动和管理集群的控制平面组件,同时处理与Kubernetes集群生命周期相关的操作,如升级、降级和集群的引导。它旨在提供一个最小化、可配置、安全和最佳实践出发点的Kubernetes集群,适合那些希望非常规范地安装和管理集群的用户。尽管Kubeadm简化了部署过程,但仍需要对Kubernetes有一定的了解,以便能够有效地利用其功能。
第三章系统设计3.1需求分析3.1.1功能性需求1、Kubernetes集群部署使用Kubeadm工具自动化搭建Kubernetes集群。通过Ansible实现Kubernetes集群的节点加入、网络插件的配置和安装,以及确保它们能够有效地协同工作。2、自动化LNMP环境部署使用Ansible快速部署LNMP(Linux,Nginx,MySQL,PHP)环境。定义AnsiblePlaybooks和kubernetes实现LNMP环境的自动化配置和并行部署。3、多环境配置与部署支持通过KubernetesNamespaces实现环境隔离,包含至少一个开发环境和一个生产环境。能够在Kubernetes上自动部署、更新并隔离LNMP应用的不同环境。4、服务访问与配置管理使用KubernetesService资源确保Pod可从外部访问。使用ConfigMap来管理和维护Nginx的配置。5、持续集成与持续部署实现持续集成和持续部署的自动化流程,确保代码的自动化测试、构建和部署。通过脚本化实现自动化流程的一键式执行。6、验证与测试提供自动化测试流程,以确保LNMP环境和应用的正常运行。对NGINX配置的验证,确保网页能正确访问应用。3.1.2非功能性需求1、稳定性和可靠性必须确保系统的高可用性,并能够在出现故障时快速恢复。需要有监控和告警机制,以实时监测系统状态并在问题发生时通知相关人员。2、性能要求保证Kubernetes集群的高效运行,要求主节点至少具备8核CPU、16GB内存,工作节点至少4核CPU、4GB内存。对于网络带宽,主节点200Mbps,工作节点100Mbps。3、可伸缩性与弹性为虚拟机分配足够的资源,以提高系统的可伸缩性和弹性。虚拟机的资源配置应充分考虑应用程序的性能需求。4、安全性启动必要的网络安全措施,例如配置网络策略以防止未授权访问。确保数据传输和存储的安全性,包括敏感信息的处理。3.2项目流程流程图是可以给一个项目提供一个清晰的视觉指南,可以很直观的看到任务的流程,以下的流程图概述了使用Kubernetes和Ansible创建一个自动化的容器化LNMP环境的关键步骤。从初始化Kubernetes集群到在各个节点上部署容器,再到最终实现多环境的部署与验证。如下图所示:图3.1流程图3.3系统设计3.3.1硬件和网络要求硬件要求服务器/计算资源:多核CPU(至少4核),以便能够高效地运行容器和Kubernetes集群。主节点:最小8GB,推荐16GB或以上,以支持多个容器和服务同时行。硬盘:至少100GB的SSD存储,用于操作系统、容器镜像、应用数据等。网络接口:至少1Gbps的网络接口卡,以保证数据传输和通信的流畅性。网络要求带宽:稳定且高速的互联网连接,至少100Mbps带宽,以便快速下载容器镜像和处理外部请求。延迟:较低的网络延迟,特别是当集群节点分布在不同地理位置时,以确保快速响应。主机配置规划:表3.1HostnameCPU内存硬盘带宽/接口速率Master8核8G100G200Mbps/1GbpsNode14核4G100G100Mbps/1GbpsNode24核4G100G100Mbps/1Gbps这些硬件和网络基础设施的要求得到满足,为后续提供了一个稳定、可靠的运行环境,还可以有效提高部署的效率。3.3.2硬件及网络规划进行Kubernetes集群实验时,为虚拟机分配资源是非常重要的。虚拟机是一种模拟的计算机环境,通过软件模拟硬件资源,使得多个操作系统可以在同一台物理机上同时运行。而为虚拟机分配资源,主要是为了保证各个虚拟机能够正常运行和工作,并且能够满足其所需的计算、存储和网络资源。虚拟机分配足够的资源可以提高系统的可伸缩性和弹性。在Kubernetes集群中,虚拟机扮演着节点的角色,负责部署和运行容器化的应用程序。不同的虚拟机可能具有不同的硬件配置和资源需求。通过为每个虚拟机分配适当的资源,可以根据需要进行扩展或收缩,以满足应用程序的负载需求。这样可以提高系统的可伸缩性和弹性,使集群可以根据负载情况自动调整虚拟机的数量和资源分配。所以为虚拟机分配资源可以避免资源竞争和冲突。因为后续还需要部署多环境,所以每个虚拟机都需要足够的CPU、内存和存储资源来运行应用程序和处理任务。如果多个虚拟机共享相同的资源,会导致资源争夺,造成性能下降和应用程序的不稳定。通过为每个虚拟机分配独立的资源,可以避免这种情况的发生,确保每个虚拟机能够独立地运行和工作。主机节点规划:表3.2HostnameIPKubernetes/Docker版本操作系统Master0/24v1.18.0/v18.06.1-cev1.23.5/v25.0.3CentOS7-86_x64Node1/24Node2/24
第四章系统实现4.1Kubeadm搭建kubernetes集群基础环境配置这一步的目的主要是更改IP地址和hostname,关闭必要防火墙以及配置hosts文件和保持3台虚拟机之间互相通信。图4.1连通测试Docker部署三台机器都必须要安装docker,版本选择18.06.1-ce,这个版本的docker相对比较稳定。然后都配置好主机文件和同步时间后,初始的的环境配置就差不多完成了。图4.2docker安装版本图4.3docker安装版本图4.4docker安装版本
正式部署首先,需要配置YUM软件源以便于安装Kubernetes相关的软件包。令将创建一个新的YUM仓库配置文件,并配置为使用阿里云的Kubernetes软件源。接下来将安装Kubernetes的核心组件,包括kubeadm、kubelet和kubectl。这些组件分别用于初始化Kubernetes集群、运行集群节点上的容器和与集群交互。如下图所示:图4.5kubernetes安装使用kubeadm工具实初始化一个Kubernetes控制平面节点命令如下:‘kubeadminit--apiserver-advertise-address=0--image-repository/google_containers--kubernetes-versionv1.18.0--service-cidr=/12--pod-network-cidr=/16。’然后再master节点上创建一个新的token,紧接着在node1、node2上使用kubeadmjoin命令就可以加入至集群了。图4.6kubernetes节点加入为了使集群中的Pod能够相互通信,需要部署CNI网络插件。网络插件选择了flannel插件,由于这个网络简单并且易于部署,所以优先选择使用,下图示例的输出显示了flannel网络插件的Pod运行状况,并且也能看到node的状态都变成ready了。图4.7kubernetes集群情况
4.2Ansible快速搭建kubernetes集群配置SSH免密登录在使用Ansible配置Kubernetes集群时,配置SSH免密是一项关键步骤。SSH免密是指在Ansible控制节点和目标节点之间建立了密钥认证,允许无需手动输入密码就能进行SSH连接和执行操作。Ansible是通过SSH协议来与目标节点进行通信和操作的。在配置Kubernetes集群时,Ansible需要频繁地在多个节点上执行命令和脚本,如果每次都需要手动输入密码,将会非常繁琐和耗时。Kubernetes集群的配置通常涉及多台主机,包括Master节点和多个Worker节点。使用SSH免密可以方便地在所有节点上进行一致性配置,提高配置效率和一致性。配置SSH免密还可以增强安全性。通过使用SSH密钥对,可以防止未经授权的访问和减少密码泄露的风险。(注:图4.8是二次生成的秘钥,不过这个并不会影响最终结果)图4.8master节点SSH秘钥紧接着输入“ssh-copy-idnode1”、“ssh-copy-idnode2”,然后给自己做一次免密就完成了,在别的节点也是同样的操作。
基础环境配置首先,通过以下步骤安装Ansible,这里选择使用者阿里源进行安装。图4.9Yum源配置(部分)在Master节点上安装Ansible是为了实现对整个Kubernetes集群的自动化管理。安装后,首先对主机进行基础配置,包括添加本地DNS解析和设置Master节点的主机名,确保节点间能够通过主机名互相识别。接下来,配置Ansible的主机清单文件hosts.ini,这样Ansible便知晓哪些主机参与集群构建,以及各个节点将执行的角色和任务。其中一个关键任务是确保所有节点的/etc/hosts文件同步并正确设置了主机名,这有助于集群内部的通信和节点识别。由于已经实现了SSH无密码登录,可以跳过SSH密钥验证的步骤。如果尚未配置SSH免密登录,则需要编写一个额外的playbook来处理SSH密钥分发和验证。图4.10ansible自动化配置hosts接着是系统环境设置,然后写一个检查端口的playbook,这两个playbook是用于在Kubernetes集群部署前检查系统上是否已经有其他应用程序占用了Kubernetes所需的特定端口,如果这一步不写的话很有可能导致后续的集群加入失败。图4.11ansible自动化检查端口
部署docker、kubeadm、kubelet和kubectl写一个关于docker部署的playbook,这个playbook大概内容是将Docker安装到Kubernetes集群的所有节点,并配置Docker的一些参数,以确保其与Kubernetes的兼容性和正常运行。接着设置daemon.json文件,使用copy模块将本地的daemon.json文件传输到目标主机的/etc/docker/daemon.json文件中。daemon.json文件包含了Docker守护进程的配置信息,包括镜像加速、日志驱动等配置,其主要目的是为了提高拉取Docker镜像的速度。图4.12ansible自动化部署docker图4.13的Playbook的主要目标是在集群的所有节点上自动部署kubeadm、kubelet和kubectl,这些是Kubernetes集群正常运行的关键组件。首先将一个包含了软件源信息的仓库文件复制到了yum的配置目录中。这个仓库文件指向了一个阿里云的镜像源,提供了集群节点所需软件包的访问。随后,在master节点上创建了一个目录,专门用于存储下载的rpm软件包。而后,Playbook利用yum的下载功能,将指定的软件包下载到这个新建目录,但尚不安装它们。下载完成后,Playbook继续自动将这些rpm包分发至集群中的其他节点,通过ssh等方式都行。这样做的好处在于,即使某些节点无法直接访问外部的软件源,它们也能从master节点获取所需的软件包。此外,通过这种方法,可以减少重复下载所消耗的带宽,并加快整个集群软件部署的速度。最后,Playbook在每个节点上执行本地安装,从先前传输的rpm包中安装所需的软件。为了避免潜在的安装延迟,这一步骤使用了Ansible的异步特性,允许任务在后台运行而不会阻塞Playbook的进程。图4.13ansible自动化配置kubectl然后接下来写一个关于kubelet服务同步的Playbook,目的是为了所有Kubernetes节点上的kubelet服务的配置文件都是相同的,并且kubelet服务在系统启动时会自动启动。图4.14ansible同步kubelet文件
初始化集群首先在master节点上输入一下代码,目的是为了在Master节点上初始化Kubernetes集群:图4.15初始化kubernetes集群根据提示消息,在Master节点上使用kubectl工具,使其能够与集群通信。图4.16配置kubectl工具将node节点加入集群一般初始化完kubernetes集群会生成一段token用于将node节点加入至集群的,或者也可以使用’kubeadmtokencreate--print-join-command’命令重新生成token。图4.17kubernetes集群token
网络插件安装接下来开始安装网络插件,网络插件有calico、flannel,前面已经使用了flannel网络插件,所以这里选择使用calico,也是因为calico插件能够提供了高性能的网络和网络策略解决方法,还受到开放源代码和社区支持的,所以一般情况下都推荐使用calico网络插件。使用wget命令下载calico配置文件:wget/projectcalico/calico/blob/master/manifests/calico.yaml输入kubectlapply-fcalico.yaml命令就配置完成了。图4.18kubernetes网络插件部署状态快速部署可以通过编写一个Shell脚本文件,结合AnsiblePlaybook,来自动化部署Kubernetes集群,接着通过’./kubernetes.sh’来进行一键部署。下面是部分代码,展示如何实现这一目标。图4.19shell脚本部署kubernetes代码(部分1)图4.20shell脚本部署kubernetes代码(部分2)ansible直接部署LNMP环境接下来还是需要写一个playbook,在CentOS7上搭建LNMP环境,该脚本大致如下:涵盖Nginx、MariaDB和PHP的安装及配置。首先,通过安装EPEL仓库和PythonMySQL模块准备环境。随后,安装并启动Nginx,确保其开机自启。接着,安装MariaDB并设置root用户密码,删除匿名用户和测试数据库,确保目标数据库存在。随后,为MariaDB用户分配适当的权限。最后,安装PHP及相关模块,并配置PHP,使其开机自启。图4.21LNMP环境部署代码(部分)执行结果如图4.22所示,展现了部署过程的高效性。通过Ansible能够迅速完成部署任务,仅需确保被部署的主机与Ansible控制主机之间能够建立SSH连接,即可顺畅地执行部署工作。但是这种部署方式也存在一定的局限性。其主要缺点是资源利用率不高,因为每台机器仅能部署一个LNMP环境。这不仅限制了横向扩展能力,还可能导致硬件资源的浪费。此外,如果部署过程中遇到问题,Ansible自身并不提供像Kubernetes或Docker那样的完善回滚机制,这可能会增加故障处理的复杂性和时间成本。图4.22LNMP环境部署结果(部分)监控日志这里选择编写了一个可以检查node1、node2节点的playbook,代码如下图所示:图4.23服务状态获取playbook4.3Kubernetes和Ansible的容器化应用自动化部署多环境部署经过上面自动化部署kubernetes,现在要通过Ansible实现持续集成与持续部署(CI/CD),为LNMP环境的开发提供自动化支持,提高资源利用率。目标是创建一个可重复、可靠的部署流程,创建一个隔离的命名空间并在里面进行测试,然后将通过测试的应用推向生产环境。流程开始于测试环境的建立,将利用Kubernetes的Namespaces特性来部署一个独立的开发环境,这里通过以“开发”、“生产”模式创建LNMP环境,让里面的Pods实现环境隔离。虽然具体的服务和项目代码测试细节超出了讨论的范围,但确保这一步骤在整个自动化流程中无误仍然十分重要,因为这个也是CI/CD中重要的一环。为了让生产环境的服务能对外通信,配置Service资源,这样可以确保Pod可以从外部访问。使用ConfigMap来管理Nginx服务的配置,其中默认监听80端口,除此之外的其他配置均保持默认。总的来说,Ansible作为控制层,用于实现容器的自动化部署,deployment作为管理层,实现容器的自动更新和回滚以达成CI/CD集成部署。最终,可以将这些操作脚本化,封装成Shell脚本,这样可以方便后续执行。正式配置首先需要使用“kubectlcreatenamespacedeployment/production”命令创造两个命名空间,使用yaml配置创造也是可行的,空间多的情况下。图4.24namespace状态接下来分别写关于Nginx,MySQL,PHP服务的development,然后保存在/etc/kubernetes/lnmp/件下。这里需要安装Ansible提供的更为原生的方k8s模块,这个模块可以轻松与Kubernetes交互,减少出错率,还能更改简洁地编写任务,而且能够利用Ansible的错误处理和状态管理特性。下面是部分代码截图:图4.25Deployment部署nginx-pro代码(部分)图4.26Deployment部署nginx_dev代码(部分)
这里的副本数设置为3个,设置多个的情况下需要考虑主机配置问题。运行效果:图4.27ansible和kubernetes容器自动化部署监控日志可以看到环境一个个的搭建好了,接着发现devlopment环境下的PHP出现了一些问题,不过先不用着急,只要生产环境的服务正常就是没有问题的,接下来去看看发生了什么问题。图4.28Deployment状况(1)图4.29Deployment情况(2)经图4.29可以推断是服务版本不匹配导致了PHP服务一直在重启,接下来需要和之前一样配置一个用于检测服务状态的playbook,不过这次playbook采用和cron结合,并且以日志输出的形式输出到/var/log文件夹下,以便于管理员查看。下图是多命名空间的的情况下,自动生成非“running”状态下的服务的playbook。还可以把production和development的playbook分别分开,以此可以方便cron调整对不同环境的服务审查频率。图4.30服务状态获取playbook代码(部分)最后编写一个shell脚本,然后设置8小时运行一次来循环执行这个playbook图4.31服务状态获取playbook的cron计划任务第五章系统测试5.1测试目的脚本部署kubernetes集群测试运行效果如图5.1所示,会把所有的playbook全部跑一遍,不过流程大大的简化了。图5.1shell脚本部署kubernetes集群单环境测试通过部署LNMP环境,测试Kubernetes集群的搭建是否成功,并确保各个组件之间的协同工作正常。验证Kubernetes的自动化部署流程是否能够正确配置Master和Node节点,以及成功部署网络插件、Pod等核心组件。图5.2节点状态测试LNMP环境的自动化部署和服务可用性:验证使用Ansible自动化工具,成功部署LNMP环境(包括Nginx、MariaDB和PHP这些服务)是否符合预期。检查服务的启动状态、配置是否正确,以及Nginx是否能够正确代理请求至后端的PHP服务。这里选择用两种情况来进行验证,下图是服务全开启状态,Task2是更为详细的服务情况:图5.3服务运行状态下图是是node1节点关闭NGINX服务的状态,经过对比可以得出该playbook是可以证实服务是否处于启动状态。图5.4NGINX服务运行异常
多环境测试首先进行CI/CD测试,因为在配置过程中发现development中PHP处于异常状态,给dev环境中的php服务输入和正式版一样版本,然后发送给deployment让它自动更新,更新完之后状态如图5.6所示,可以看到php服务不在是异常状态:图5.5development镜像更新命令图5.6development中的pod运行状况接着进行监控日志playbook的检查,这里选择把节点全部关闭测试,因为如果单纯删掉容器的话,deployment会自动把新的容器给更新上去,直接down掉一个节点pod会被分配至另一个节点上继续运行,所以这里选择使用全关闭虚拟机来验证这个playbook的效果。下图是playbook检测到非running状态的容器服务:图5.7服务状态playbook运行(部分)
日志文件输出:图5.8服务状态playbook执行结果然后是检查cron服务实际运行效果,图5.9-10显示有一个没有名字pod为异常状态,这个pod进程卡死原因一直处于异常状态,推测是主机配置不足问题导致,不过也因此可以用于检测cron服务运行状态。图5.9cron服务执行结果(1)图5.10cron服务执行结果(2)最后是服务访问测试,先从NGINX服务开始检查,选择nginx-pro-79f85cc86d-p4dwq这容器进行查看,可以看到该容器被调度在node1节点上了。图5.11Kubernetes集群中Pod的IP地址图5.12node2测试NGINX服务接着测试数据库能否正常访问,还是选择pro环境中的第一个pod,也就是mysql-pro-544866d5dc-cwfgx这个容器,尝试从master节点上用mysql命令远程登录至该数据库,图5.13为登录情况。图5.13master连接62的数据库5.2测试用例该测试用例用于验证Kubernetes集群搭建的可行性以及LNMP环境的自动化部署和服务可用性。通过逐步执行不同步骤,确认Kubernetes集群的正常运行状态、LNMP环境的成功部署,并确保各组件之间协同工作。表5.1测试项目测试步骤期望结果实际结果Kubernetes集群部署1.运行Shell脚本部署Kubernetes集群
2.验证所有playbook执行完毕Kubernetes集群成功部署,所有组件配置正确无误一致LNMP环境搭建1.使用Ansible自动部署LNMP环境
2.检查Nginx、MariaDB和PHP服务启动状态和配置1.LNMP环境成功部署
2.所有服务正常启动一致CI/CD测试1.发现development环境中PHP服务异常
2.自动部署更新后的服务,检查状态1.开发环境中的PHP服务更新后,状态恢复正常
2.自动部署成功,服务更新无误一致监控日志Playbook检查1.关闭所有节点验证Playbook效果
2.检查非running状态的容器服务1.Playbook能正确检测到非running状态的服务
2.容器服务状态被正确记录与报告一致通过上述的测试用例,可以确信容器化部署方案不仅在理论上是可行的,而且在实际操作中也能达到预期的效果。
第六章总结与展望6.1总结在完成基于Kubernetes和Ansible的容器化应用自动化部署项目的过程中,通过对项目流程的规划、系统设计与规划、以及基于Kubernetes和Ansible的集群部署等方面的工作,获得了丰富的经验和技能。在过去的一段时间里,成功地使用Kubernetes和Ansible构建了一个自动化的容器化LNMP环境。通过详细的规划和执行,然后还确保了硬件和网络要求得到满足,为后续Kubernetes集群的顺利运行提供了一个稳定、可靠的运行环境。在系统设计方面,采用了虚拟机分配资源的方法,确保了每个节点都能够正常运行和工作,并且能够满足其所需的计算、存储和网络资源。使用了Kubeadm和Ansible来快速搭建Kubernetes集群,并进行了相关的配置和环境部署。通过Ansible,可以迅速完成部署任务,只需确保被部署的主机与Ansible控制主机之间能够建立SSH连接,即可顺畅地执行部署工作。接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东中山大学附属口腔医院放射科影像技师招聘模拟试卷有答案详解
- 名著《简爱》读后感15篇
- 2025年宿州市宿马园区两站两员招聘11人模拟试卷及参考答案详解一套
- 2025年安徽理工大学公开招聘电气与工程学院副院长考前自测高频考点模拟试题及答案详解(历年真题)
- 2025湖南岳阳市湘一南湖学校招聘技术教师模拟试卷(含答案详解)
- 2025年甘肃省嘉峪关市事业单位集中引进高层次和急需紧缺人才50人(含教育系统)考前自测高频考点模拟试题及答案详解(新)
- 2025年甘肃酒泉肃州区教育事业发展服务中心选拔工作人员模拟试卷附答案详解(典型题)
- 2025年共享充电宝合作协议书
- 2025年超高纯气体的纯化设备合作协议书
- 2025贵州铜仁市江口县人民医院招聘青年就业见习岗位人员2人考前自测高频考点模拟试题及答案详解一套
- DB11∕1450-2017 管道燃气用户安全巡检技术规程
- JTG G10-2016 公路工程施工监理规范
- 人教版小学六年级上册数学期末测试卷及完整答案【名校卷】
- 护理查房制度及流程
- 《电力生产统计技术导则 第2部分供用电统计》
- 模板施工智能化技术应用
- 检验科运用PDCA循环降低检验标本的丢失率和不合格率
- 化学(基础模块)中职PPT完整全套教学课件
- 安全用电的触电急救
- 离心式通风机-离心式通风机的构造和工作原理
- GB/T 4802.3-2008纺织品织物起毛起球性能的测定第3部分:起球箱法
评论
0/150
提交评论