2022年全国职业院校技能大赛高职组 云计算赛项模拟赛题(Word版)
展开2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷1
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-designate.sh,填充脚本,安装DNS服务并完成相关配置。
10.使用提供的脚本框架 iaas-install-heat.sh,填充脚本,安装heat编排服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar资源预订服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用提供的云安全框架组件,将提供的OpenStack云平台的安全策略从http优化至https。
2.在提供的OpenStack平台上,通过修改相关参数对openstack平台进行调优操作,相应的调优操作有:
(1)设置内存超售比例为1.5倍;
(2)设置nova服务心跳检查时间为120秒。
3.在提供的OpenStack平台上,使用Swift对象存储服务,修改相应的配置文件,使对象存储Swift作为glance镜像服务的后端存储。
4.在提供的OpenStack平台上,编写heat模板createvm.yml文件,模板作用为按照要求创建一个云主机。
5.在提供的OpenStack平台上,对cinder存储空间进行扩容操作,要求将cinder存储空间扩容10G。
6.在OpenStack私有云平台,创建一台云主机,使用提供的软件包,编写一键部署脚本,要求可以一键部署gpmall商城应用系统。
7.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用cloudkitty计费服务,处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
10.使用提供的iaas-error1镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为cinder服务无法正常使用,请结合报错信息排查错误,使cinder服务可以正常使用。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷1
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,使用kubectl自带排序功能,列出集群内所有的Pod,并以name字段排序。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
该公司开发了一套基于Spring Cloud的分布式系统套件,并实现全容器化部署,该系统主要模块如下:
模块
说明
Config
配置中心
Gateway
微服务网关
Eureka
注册中心
Spring Boot Admin
监控和管理的源软件
Zipkin
分布式实时数据追踪系统
Hello Service
服务注册
试将Gateway组件、Eureka组件、Spring Boot Admin组件和Zipkin组件按照要求进行容器化,其它组件Config、Hello Service已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile基于centos:7.9.2009基础镜像制作Gateway镜像,生成镜像名为chinaskill-gateway:v1.0,要求安装JDK环境和Gateway服务,并设置服务自启动。
2. 编写Dockerfile基于centos:7.9.2009基础镜像制作Eureka镜像,生成镜像名为chinaskill-eureka:v1.0,要求安装JDK环境和Eureka服务,并设置服务自启动。
3. 编写Dockerfile基于centos:7.9.2009基础镜像制作Zipkin镜像,生成镜像名为chinaskill-zipkin:v1.0,要求安装JDK环境和Zipkin服务,并设置服务自启动。
4. 编写Dockerfile基于centos:7.9.2009基础镜像制作Hello Service镜像,生成镜像名为chinaskill-hello:v1.0,要求安装Hello Service服务,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上述镜像编排部署Spring Cloud分布式系统。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用GitLab + GitLab CI + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1.在Kubernetes集群上完成GitLab程序的部署,副本数为2,使用NodePort方式将GitLab服务对外暴露30081端口。
2.在Kubernetes集群上完成GitLab-Runner的部署,并完成Shared Runner的注册。
3. 在GitLab中开启Container Registry,并完成Environment variables的设置。
4.将Kubernetes集群添加到GitLab中,并命名为cicd-cluster。
5. 编写.gitlab-ci.yml自动化脚本,要求整个构建流程包含test、build、release、review和deploy几个阶段。
6.将提供的项目包推送到GitLab仓库并触发自动构建,完成代码编译、镜像构建、镜像推送和服务发布的自动化实现。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1.将master节点设置为污点,并且重新调度该节点上所有允许的pods。
2. Kubernetes默认的证书有效期只有一年时间,对于某些场景下一个时间足够长的证书有效期是非常有必要的,请将Kubernetes集群证书的有效期延长至20年。
3.在master节点/root目录下编写YAML文件limitrange.yaml,具体要求如下:
(1)LimitRange名称:mem-limit-range;
(2)命名空间:default;
(3)容器默认资源请求为256Mi内存、500m CPU;
(4)容器资源请求上限为800Mi内存、3000m CPU;
(5)内存和CPU超售的比率均为2。
完成后使用该yaml文件创建LimitRange。
4. 为master节点打上标签“disktype=ssd”和标签“exam=chinaskill”,然后在master节点/root目录下编写YAML文件deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)要求Pod只能调度到具有标签“disktype=ssd”的节点上;
(3)具有标签“exam=chinaskill”的节点优先被调度。
完成后使用该YAML文件创建Deployment。
5. 在master节点/root目录下编写YAML文件role.yaml文件创建集群角色,具体要求如下:
(1)集群角色名称:deployment-clusterrole;
(2)该角色拥有对Deployment、Daemonset、StatefulSet的创建权限。
完成后使用该YAML文件创建集群角色。
6. 在master节点/root目录下编写YAML文件创建network.yaml创建网络策略,具体要求如下:
(1)网络策略名称:exam-nework;
(2)针对namespace test下的Pod,只允许相同namespace下的Pod访问,并且可访问Pod的9000端口。
完成后使用该YAML文件创建网络策略。
7. 在master节点/root目录下编写YAML文件pv.yaml创建PV,具体要求如下:
(1)PV名称:app-pv;
(2)容量为10Gi;
(3)访问模式为ReadWriteMany;
(4)volume的类型为hostPath,位置为/src/app-config。
完成后使用该YAML文件创建PV。
8. 在Kubernetes集群中完成Bookinfo样例程序的部署,在master节点/root目录下编写YAML文件istio.yaml创建请求路由,具体要求如下:
(1)路由名称:bookinfo-virtualservice;
(2)将所有流量路由到每个微服务的 v1 版本。
完成后使用该YAML文件创建请求路由。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1. 在KubeVirt中启用实时迁移功能,以实现将一台正在运行的虚拟机实例从一个节点迁移到另一个节点,期间工作负载继续运行且能保持持续访问。
2.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件创建VMI,具体要求如下:
(1)VMI名称:chinaskill-vmi;
(2)运行策略:Manual;
(3)磁盘驱动:virtio。
完成后使用该YAML文件创建VMI,然后使用virtctl工具启动该VMI。
3. 在master节点上编写YAML文件vmi-sshkey.yaml为虚拟实例chinaskill-vmi进行动态密钥注入,具体要求如下:
(1)使用 qemuGuestAgent 将访问凭证api附加到chinaskill-vmi。
完成后运行该YAML文件并使用SSH验证VMI的连通性。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷1
第三场次:公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署WordPress博客系统组件,完成以下搭建内容。
1.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
2.按照2核CPU、4G内存、40G硬盘,使用所上传的镜像创建两台名为ChinaSkill-node-1和ChinaSkill-data-2的云主机使用创建的intnetX虚拟私有云网络配置。
3.在公有云中购买云数据库ChinaSkill-mysql-1,并配置读写分离节点。
4. 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署WordPress的Web服务,使用chinaskill-wordpress.sql以云数据库读写分离地址为数据源运行WordPress。
5. 设置云主机的防火墙策略,保证ChinaSkill-node-1和ChinaSkill-node-2云主机上WordPress正常对外提供服务。
6.使用弹性文件服务给chinaskill-node-1云服务器提供后端存储,并设置owncloud使用弹性文件服务存储。
7.为云数据库chinaskill-mysql-1创建只读数据库chinaskill-read实例。
8.云数据库chinaskill-mysql-1申请读写分离地址。
9.创建一个云服务器备份存储库名为server_backup,容量100G。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的WordPress博客系统,对其架构进行优化,完成以下操作。
1.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
2.将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
3.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,使用chinaskill-image镜像。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
4.为云主机设置自定义告警模板策略,监控云主机CPU使用率超过80%的告警,内存使用率超过80%的告警。以邮件形式提醒管理员。
5. 根据所部署的WordPress博客系统,使用混合云架构对其进行优化,在私有云平台申请一台云服务器WordPress-node-1,部署WordPress博客系统,使用公有云云数据库读写分离地址。
6.配置负载均衡器chinaskill-elb,添加私有云云服务器WordPress-node-1节点。
7.配置主机接入日志管理,根据采集规则收集WordPress博客系统,将云服务器中产生的日志通过采集日志流收集至日志管理中。
8.通过日志管理API接入,将WordPress博客系统中收集的日志信息存储与私有云平台WordPress-log云服务器中。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX。
2.在Kubernetes集群中创建一个名为nginx-app的Deployment,包含3个副本,镜像使用nginx:1.11.9,通过滚动升级的方式更新镜像版本为1.12.0,并记录这个更新,最后,回滚该更新到之前的1.11.9版本。
3.在kcloud集群中创建一个名为test的Pod,镜像使用nginx,Volume名称为cache-volume,将其/data目录挂载到宿主机/data目录下。
4.使用应用编排服务,在容器集群kcloud中部署magento商城服务。
5.在公有云中购买容器安全,对容器集群kcloud进行防护。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷2
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、 企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务 (10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 ftp 服务地址,在 ftp 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 ftp 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 ftp.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack搭建任务(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名,以实际为准)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-heat.sh,填充脚本,在 controller 节点上安装 heat服务并完成相关配置。
9.使用提供的脚本框架 iaas-install-manila.sh,填充脚本,安装manila共享文件系统服务并完成相关配置。
10.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-karbor.sh,填充脚本,安装Karbor-数据保护即服务服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-octavia.sh,填充脚本,安装Octavia-负载均衡服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用自动搭建的OpenStack平台,登录数据库,创建库test,并在库test中创建表company(表结构如(id int not null primary key,name varchar(50),addr varchar(255))所示),在表company中插入一条数据(1,"alibaba","china")
2.OpenStack各服务内部通信都是通过RPC来交互,各agent都需要去连接RabbitMQ;随着各服务agent增多,MQ的连接数会随之增多,最终可能会到达上限,成为瓶颈。使用提供的OpenStack私有云平台,通过修改limits.conf配置文件来修改RabbitMQ服务的最大连接数为10240
3.在提供的OpenStack私有云平台上,在/root目录下编写Heat模板create_user.yaml,创建名为heat-user的用户,属于admin项目,并赋予heat-user用户admin的权限,配置用户密码为123456。
4.在提供的OpenStack私有云平台上,使用cirros-0.3.4-x86_64-disk.img镜像,创建一个名为Gmirror1的镜像,要求启动该镜像的最小硬盘是30G、最小内存是2048M。
5.在提供的OpenStack私有云平台上,自行安装Swift服务,新建名为chinaskill的容器,将cirros-0.3.4-x86_64-disk.img镜像上传到chinaskill容器中,并设置分段存放,每一段大小为10M。
6.使用OpenStack私有云平台,创建两台云主机vm1和vm2,在这两台云主机上分别安装数据库服务,并配置成主从数据库,vm1节点为主库,vm2节点为从库(数据库密码设置为000000)。
7.在OpenStack私有云平台,创建一台云主机,使用提供的软件包,编写一键部署脚本,要求可以一键部署owncloud云网盘应用系统。
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用cloudkitty计费服务,处理虚拟机实例(compute)、云硬盘(volume)、镜像(image)、网络进出流量(network.bw.in, network.bw.out)、浮动IP(network.floating)的计费数据并进行计费规则创建,以达到费用核算目的。
10.使用提供的iaas-error2镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为glance服务无法正常使用,请结合报错信息排查错误,使glance服务可以正常使用。
任务三、私有云运维开发(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷2
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,检查集群所有证书过期时间。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
云梦公司开发了一套基于SpringBoot+MyBatis微服务架构的ChinaSkillsMall电商系统,并实现全容器化部署,ChinaSkillsMall电商应用系统架构图如下:
模块
说明
mall-monitor
监控中心
mall-gateway
微服务网关
mall-auth
认证中心
mall-admin
商城后台服务
mall-portal
商城前台服务
请将以上组件按照要求进行容器化。
1. 编写Dockerfile构建chinaskill-mariadb:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装并初始化MariaDB,密码为123456,设置数据库编码为UTF-8,开放端口3306,并设置服务开机自启。
2. 编写Dockerfile文件构建chinaskill-redis:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装Redis服务,设置Redis免密,并关闭保护模式,开放端口:6379,并设置服务开机自启。
3. 编写Dockerfile文件构建chinaskill-nacos:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装jdk工具和nacos-server工具,并设置nacos服务开机自启。
4. 编写Dockerfile文件构建chinaskill-nginx:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装nginx服务,将提供的文件拷贝到/usr/share/nginx/html目录下,并设置nginx服务开机自启。
5. 编写docker-compose.yaml文件,使用以上镜像编排部署ChinaSkillsMall商城。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用GitLab + Jenkins + Helm + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD完整流程如下:
1. 完成Helm3工具的安装。
2. 配置GitLab配置清单文件,使用Helm3将Gitlab服务安装到Kubernetes集群中,创建项目,并配置SSH Key。
3. 配置Jenkins配置清单文件,使用Helm3将Jenkins服务安装到Kubernetes集群中,并完成BlueOcean工具的安装。
4. 在Jenkins中配置Pod Template和Container Template,使其能够动态生成 Slave Pod。
5. 使用BlueOcean方式完成CI/CD工作,新建Jenkinsfile文件,包含clone代码、测试、代码构建、构建Docker镜像、推送镜像和Deploy更新服务 6个阶段。
6. 将提供的代码push到GitLab中触发自动构建,实现基于Helm3工具自动将构建的服务发布到Kubernetes集群中。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 默认情况下,Pod能够使用集群节点全部可用计算资源,请设置为系统守护进程kube-reserved和system-reserved预留500m CPU、1Gi memory和1Gi ephemeral-storage计算资源。
2. 在master节点/root目录下编写YAML文件init-pod.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)镜像:busybox;
(3)添加一个Init Container,Init Container的作用是创建一个空文件;
(4)Pod的Containers判断文件是否存在,不存在则退出。
完成后使用该YAML文件创建Pod。
3. 在master节点/root目录下编写YAML文件创建Pod,具体要求如下:
(1)Pod名称:exam;
(2)镜像:nginx;
(3)Volume名称为cache-volume,将其/data目录挂载到宿主机/data目录下。
完成后使用该YAML文件创建Pod。
4. 在master节点/root目录下编写YAML文件nginx-deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx;
(2)保证其副本在每个节点上运行,且不覆盖节点原有的Tolerations。
完成后使用该YAML文件创建Deployment。
5. 在master节点/root目录下编写YAML文件nginx-service.yaml为上一题的Deployment创建一个Service,具体要求如下:
(1)Service名称:nginx;
(2)以ClusterIP方式访问服务。
完成后使用该YAML文件创建Service。
6. 在master节点/root目录下编写YAML文件quota.yaml创建StorageQuota,具体要求如下:
(1)StorageQuota名称:storagequota;
(2)限制命名空间exam的PVC数目为10;
(3)限制命名空间exam累计存储容量为20Gi。
完成后使用该YAML文件创建StorageQuota。
7. 在master节点/root目录下编写YAML文件pv.yaml创建PV,具体要求如下:
(1)PV名称:pv-local;
(2)回收策略:Delete;
(3)访问模式:RWO;
(4)挂载路径:node节点/data/k8s/localpv;
(5)卷容量:5G。
完成后使用该YAML文件创建PV。
8. 在Kubernetes集群中完成httpbin样例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml创建默认路由策略,具体要求如下:
(1)路由策略名称:httpbin;
(2)将100%流量路由到服务的v1版本;
(3)将100%的相同流量镜像到服务的v2版本。
完成后使用该YAML文件创建路由策略。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vm.yaml创建VM,具体要求如下:
(1)VM名称:exam-vm;
(2)将SSH密钥放入Kubernetes密钥并注入到VM中;
(3)内存为2Gi,CPU为1000m。
完成后使用该YAML文件创建VM。
2. 在KubeVirt中启用快照/恢复支持功能,然后在master节点/root目录下编写YAML文件snap.yaml为虚拟实例exam创建一个快照,具体要求如下:
(1)快照名称:exam-snap;
(2)创建快照超时时间:1min。
完成后使用该YAML文件为虚拟实例exam创建快照。
3. 在master节点/root目录下编写YAML文件vmi-role.yaml创建RBAC角色,具体要求如下:
(1)角色名称:vm-role;
(2)该角色对VM拥有get、delete、create、update、patch和list权限。
完成后使用该YAML文件创建角色。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷2
第三场次:公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署Owncloud网盘系统组件,完成以下搭建内容。
1.在公有云中完成虚拟私有云的创建,创建一个名为intnetX的内部网络:IP地址为172.16.1.0/16;创建子网名称为intnetX-server:IP地址为172.16.1.0/24;创建子网名称为intnetX-sql:IP地址为172.16.2.0/24。
2.登录公有云平台,使用intnetX-server网络创建一台云实例名称:ChinaSkill-node-1。
3.利用提供的软件包源,在ChinaSkill-node-1中部署Owncloud服务。
4.创建一个公网NAT网关kcloud-nat,将虚拟私有云intnetX-server允许内部子网地址访问外网,并将chinaskill-node-1中owncloud服务端口转换至外网访问。
5.使用intnetX-sql网络创建云数据库MySQL实例ChinaSkill-sql-1。
6.将Owncloud数据源迁移至云数据库MySQL实例ChinaSkill-sql-1上,并修改ChinaSkill-node-1使用云数据库ChinaSkill-sql-1实例作为数据源。
7.使用弹性文件服务给chinaskill-node-1云服务器提供后端存储,并设置owncloud使用弹性文件服务存储。
8.创建云数据库chinaskill-mysql并创建只读数据库chinaskill-read实例。
9.云数据库chinaskill-mysql申请读写分离地址。
10.创建一个云服务器备份存储库名为server_backup,容量为100G。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Owncloud网盘系统,对其架构进行优化,完成以下操作。
1.修改chinaskill-node-1中使用云数据库读写分离地址。
2.利用ChinaSkill-node-1云主机创建镜像ChinaSkill-image,并使用镜像ChinaSkill-image创建云主机ChinaSkill-node-2。
3.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
4.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于30%,且连续发生3次。则实例数减少1台。冷却120秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加2台。冷却120秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于30%,且连续发生3次。则实例数减少1台。冷却120秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加2台。冷却120秒。
5.配置云审计功能,对访问Owncloud网盘系统的用户身份进行验证,并检测其上传文件内容是否包含关键词。
6.配置数据安全,对Owncloud网盘系统中的数据进行敏感数据识别,删除其包含敏感关键词的内容。
7.在公有云中申请一台云主机ChinaSkill-sql-2,在其中部署mysql数据库,实时同步公有云中ChinaSkill-sql-1中数据。
8.下载公有云ChinaSkill-node-1云服务器制作的镜像ChinaSkill-image,并上传至私有云平台中。
9.使用上传至私有云平台中的ChinaSkill-image镜像创建ChinaSkill-node-3云服务器,并修改Owncloud系统对接私有云ChinaSkill-sql-2中mysql服务。
10.修改公有云中负载均衡器chinaskill-elb,添加私有云平台中所创建的Owncloud网盘系统节点ChinaSkill-node-3。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server。
2.在kcloud集中部署helm工具。
3.使用提供的mychart-0.1.0.tgz模板包,修改模板代码使外部可通过节点地址进行访问。在模板市场中上传我的模板mychart,在kcloud集群中安装名为nginx的模板实例。
4.使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。
5.编写.drone.yml文件,包含使用构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
6.将提供的应用的代码推送到GitLab触发构建,完成后访问该应用。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷3
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务 (10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-manila.sh,填充脚本,安装manila共享文件系统服务并完成相关配置。
10.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar-资源预订服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cyborg.sh,填充脚本,安装Cyborg硬件加速生命周期管理服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-karbor.sh,填充脚本,安装Karbor数据保护服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用提供的OpenStack私有云平台,修改相关配置文件,启用-device virtio-net-pci in kvm。
2.在提供的OpenStack平台上,通过修改相关参数对openstack平台进行调优操作,相应的调优操作有:
(1)预留前2个物理CPU,把后面的所有CPU分配给虚拟机使用(假设vcpu为16个);
(2)设置cpu超售比例为4倍;
3.在提供的OpenStack平台上,对mencached服务进行操作使memcached的缓存由64MB变为256MB。
4.在提供的OpenStack平台上,编写heat模板createnet.yml文件,模板作用为按照要求创建一个网络和子网。
5.使用提供的OpenStack私有云平台,修改普通用户权限,使普通用户不能对镜像进行创建和删除操作
6.在OpenStack私有云平台,创建一台云主机,并创建一个40G大小的cinder块存储,将块存储连接到云主机,然后在云主机上对云硬盘进行操作。要求分出2个大小为10G的分区,使用这2个分区,创建名为/dev/md0、raid级别为0的磁盘阵列,最后将md0格式化为ext4格式并挂载至/mnt目录。
7.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
8.使用cyborg硬件加速服务,实现硬件资源的发现、上报、挂载\卸载等资源管理。
9.在OpenStack私有云平台,创建一台云主机,编写脚本,要求可以完成数据库的定期备份,并把数据库备份文件存放在/opt目录下。
10.使用提供的iaas-error3镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为nova服务无法正常使用,创建云主机报错,请结合报错信息排查错误,使nova服务可以正常使用,可以正常创建云主机。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷3
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,查看所有节点的运行状态及标签。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
该公司基于Hyperf基础框架开发了一个微服务DEMO,并实现全容器化部署,该应用技术栈如下:
模块
说明
Hyperf
一个高性能高灵活性的渐进式PHP协程框架,适用于微服务
Redis
分布式缓存服务
RabbitMQ
面向消息的中间件
Zipkin
微服务链路跟踪
MySQL
数据库
Nginx
前端服务
ElasticSearch
分布式搜索和分析引擎
其整体架构如下:
试将Hyperf组件、Redis组件、RabbitMQ组件和nginx组件按照要求进行容器化,其它组件Zipkin、MariaDB、ElasticSearch已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile基于centos:7.9.2009基础镜像制作Hyperf镜像,镜像名为chinaskill-hyperf:v1.0,安装PHP环境,并通过composer安装Hyperf。
2. 编写Dockerfile基于centos:7.9.2009基础镜像制作Redis镜像,镜像名为chinaskill-redis:v1.0,要求安装Redis服务,关闭保护模式,并设置服务自启动。
3. 编写Dockerfile基于centos:7.9.2009基础镜像制作RabbitMQ镜像,镜像名为chinaskill-rabbit:v1.0,要求安装RabbitMQ服务,暴露5672和15672端口,并设置服务自启动。
4 编写Dockerfile基于centos:7.9.2009基础镜像制作Nginx镜像,镜像名为chinaskill-nginx:v1.0,要求安装Nginx服务,暴露80端口,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上述镜像编排部署基于Hyperf基础框架的微服务DEMO。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用Kubernetes + GitLab + Drone + Helm + Harbor 架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1. 在master节点完成Helm3工具的安装。
2. 使用Helm工具和chart包,将Drone部署到Kubernetes集群中,以NodePort方式对外暴露服务。
3. 使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。完成后创建一个公开项目drone-kubernetes-demo。
4. 编写.drone.yml文件,包含使用构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
5.将提供的代码推送到GitLab触发构建,完成后访问该应用。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 配置集群节点,要求节点可用内存低于500Mi时,kubelet开始驱逐节点上的Pods。
2. 在master节点/root目录下编写YAML文件deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx-app;
(2)包含3个副本;
(3)镜像使用nginx:1.11.9
完成后使用该YAML文件创建Deployment。然后通过滚动升级的方式更新镜像版本为1.12.0,并记录这个更新,最后,回滚该更新到之前的1.11.9版本。
3. 在master节点/root目录下编写YAML文件ns.yaml创建命名空间,具体要求如下:
(1)命名空间名称:default-cpu-example;
(2)该namespace内容器默认的CPU请求为500m,CPU请求限制为2000m。
完成后使用该YAML文件创建命名空间。
4. 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)镜像:nginx:latest;
(3)要求该Pod以Guaranteed QoS类运行,其requests值等于limits值。
完成后使用该YAML文件创建Pod。
5. 在master节点/root目录下编写YAML文件cronjob.yaml创建的CronJob,具体要求如下:
(1)Cronjob名称:cronjob;
(2)镜像:busybox;
(3)要求该CronJob的.spec 配置文件每分钟打印出当前时间信息。
完成后使用该YAML文件创建Cronjob。
6. 在master节点/root目录下编写YAML文件pod-host.yaml创建Pod,具体要求如下:
(1)Pod名称:hostaliases-pod;
(2)为该Pod配置HostAliases,向hosts文件添加额外的条目,将foo.local、bar.local解析为127.0.0.1,将foo.remote、bar.remote解析为10.1.2.3。
完成后使用该YAML文件创建Pod。
7. 在master节点/root目录下编写YAML文件clusterrole.yaml创建ClusterRole,具体要求如下:
(1)ClusterRole名称:secret-reader;
(2)对Secret拥有get、watch、list的权限;
(3)对Pod和Deployment拥有create、delete、update的权限。
完成后使用该YAML文件创建ClusterRole。
8. 在Kubernetes集群中完成httpbin样例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml配置熔断器,具体要求如下:
(1)目标规则名称:httpbin;
(2)将TLS流量策略 mode:ISTIO_MUTUAL 添加到目标规则;
(3)要求当并发的连接和请求数超过一个,在istio-proxy进行进一步的请求和连接时,后续请求或连接将被阻止。
完成后使用该YAML文件配置熔断器。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vm.yaml创建VM,具体要求如下:
(1)VM名称:exam;
(2)要求内存为2Gi,CPU为1核;
(3)运行策略:Always。
完成后使用该YAML文件创建VM。
2. 基于KubeVirt的热插拔卷功能,在master节点/root目录下编写YAML文件vm-disk.yaml创建卷,具体要求如下:
(1)卷名称:volume-hotplug,
(2)卷大小:5Gi;
(3)卷使用ReadWriteOnceaccessMode和默认FileSystem卷模式。
完成后使用该YAML文件创建卷并挂载到exam上。
3. 在master节点/root目录下编写YAML文件vmi-network.yaml为VM创建网络策略,具体要求如下:
(1)策略名称:deny-by-default;
(2)要求VM仅允许来自同一命名空间内的VM的HTTP 和 HTTPS 访问请求。
完成后使用该YAML文件创建网络策略。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷3
第三场次:公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署Lychee图床系统组件,完成以下搭建内容。
1.在公有云中创建一个名为intnetX的虚拟私有云172.16.X.0的网络配置。
2.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
3.按照2核CPU、4G内存、40G硬盘,使用所上传的镜像创建两台名为ChinaSkill-node-1和ChinaSkill-data-2的云主机使用创建的intnetX虚拟私有云网络配置。
4.利用公有云提供的公共软件包源,在ChinaSkill-node-1和ChinaSkill-node-2上分别部署MySQL数据库服务,实现以ChinaSkill-node-1和ChinaSkill-node-2为主主的数据集群架构,用于提高数据库的安全性。
5. 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署lychee的Web服务,使用chinaskill-lychee.sql以ChinaSkill-node-1和ChinaSkill-node-2中MySQL数据库为数据源运行Lychee。
6. 设置云主机的防火墙策略,保证ChinaSkill-node-1和ChinaSkill-node-2云主机上Lychee正常对外提供服务。
7.创建一个公网NAT网关kcloud-nat,将虚拟私有云intnetX允许内部子网地址访问外网,并设置Chinaskill-node-1云服务器80端口转换为外部80服务端口。
8.将ChinaSkill-node-1和ChinaSkill-node-2实例中Lychee配置文件对应目录存储至弹性文件服务中,并将提供的图片迁移到共享存储中。
9.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Lychee图床系统,对其架构进行优化,完成以下操作。
1.创建云数据库chinaskill-mysql并创建只读数据库chinaskill-read实例。
2.云数据库chinaskill-mysql申请读写分离地址。
3.将chinaskill-node-1中数据库中数据迁移至云数据库chinaskill-mysql中。
4.修改云服务器ChinaSkill-node-1和ChinaSkill-node-2数据库连接地址为云数据库读写地址。将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
5.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,使用chinaskill-image镜像。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
6.为云主机设置自定义告警模板策略,监控云主机CPU使用率超过80%的告警,内存使用率超过80%的告警。以邮件形式提醒管理员。
7.在私有云平台申请一台云服务器Lychee-node-1,部署Lychee图床系统,使用公有云云数据库读写分离地址。
8.配置负载均衡器chinaskill-elb,使用混合云架构对其进行优化,添加私有云云服务器Lychee-node-1节点。
9.在私有云平台中申请一台云服务器NFS,部署NFS服务,将公有云弹性文件服务中存储的数据以备份的形式保存至私有云中。
10.通过日志管理API接入,将Lychee图床系统中收集的日志信息存储与私有云平台Lychee-log云服务器中。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX。
2.在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
3.在kcloud集群中安装helm命令,使用helm命令启动MySQL服务。
4.使用chart包通过helm工具将Drone部署到kcloud集群中,通过NodePort方式对外暴露服务。
5.使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。
6.编写.drone.yml文件,包含使用构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷4
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
9.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar-资源预订服务并完成相关配置。
10.使用提供的脚本框架 iaas-install-cyborg.sh,填充脚本,安装Cyborg-硬件加速生命周期管理服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-karbor.sh,填充脚本,安装Karbor-数据保护即服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-octavia.sh,填充脚本,安装Octavia-负载均衡服务并完成相关配置。
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.在提供的OpenStack私有云平台上,在/root目录下编写Heat模板create_net.yaml,创建名为Heat-Network网络,选择不共享;创建子网名为Heat-Subnet,子网网段设置为10.20.2.0/24,开启DHCP服务,地址池为10.20.2.20-10.20.2.100。
2.在提供的OpenStack私有云平台,创建一台云主机(镜像使用CentOS7.9,flavor使用带临时磁盘50G的),配置该主机为nfs的server端,将该云主机中的/mnt/test目录进行共享(目录不存在可自行创建)。然后配置controller节点为nfs的client端,要求将/mnt/test目录作为glance后端存储的挂载目录。
3.使用OpenStack私有云平台,找到virsh中ID为10的云主机(若不存在请自行创建)。在云主机所在的物理节点,进入virsh交互式界面,使用virsh命令,将memory虚拟机的内存调整为5242880KB大小。
4.使用OpenStack私有云平台,创建一台云主机,创建完之后对该云主机进行打快照处理,并将该快照保存至/root/cloudsave目录,保存名字为csccvm.qcow2。
5.使用OpenStack私有云平台,使用centos7.9镜像,flavor使用1vcpu/2G内存/40G硬盘,创建云主机cscc_vm,假设在使用过程中,发现该云主机配置太低,需要调整,请修改相应配置,将dashboard界面上的云主机调整实例大小可以使用,将该云主机实例大小调整为2vcpu/4G内存/40G硬盘。
6.使用OpenStack私有云平台,创建三个云主机,使用提供的软件包安装RabbitMQ服务,安装完毕后,搭建RabbitMQ集群,并打开RabbitMQ服务的图形化监控页面插件。集群使用普通集群模式,其中第一台做磁盘节点,另外两台做内存节点。
7.使用karbor服务,保护云平台上的卷(一般就是映射到VMs上的可进行读写的数据存储载体或设备)
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用octavia负载均衡服务,实现云平台上的负载均衡。
10.使用提供的iaas-error4镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为dashboard界面服务无法正常使用,请结合报错信息排查错误,使dashboard界面服务可以正常使用。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷4
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成,后查看集群所有的资源信息。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
将云梦公司开发的应用商城Mall重新实现全容器化部署,原应用商城系统各模块功能及系统架构如下:
模块
使用技术
备注
mall.sql
MySQL
网站的数据库
dist目录
Nginx
网站的前端项目
mall-shopping
web项目
8081端口,商品/购物车/首页渲染等交互
mall-user
8082端口,提供用户相关的交互,如登录、注册、个人中心等
user-provider
后端服务
提供用户相关服务
shopping-provider
提供购物车、推荐商品、商品等服务
请将以上组件按照要求进行容器化。
1.编写Dockerfile制作数据库MySQL镜像,镜像名为mall-mysql:v1.1,使用centos:7.9.2009基础镜像,安装mariadb数据库,设置数据库支持UTF-8编码,设定root用户的密码为123456,并设置服务开机自启。
2. 编写Dockerfile制作Redis镜像,镜像名为mall-redis:v1.1,使用centos:centos7.9.2009基础镜像,安装Redis服务,设置Redis免密,并关闭保护模式,开放端口6379,并设置服务开机自启。
3. 编写Dockerfile制作Kafka镜像,镜像名为mall-kafka:v1.1,使用centos:centos7.9.2009基础镜像,安装Kafka服务,开放端口9092,并设置服务开机自启。
4.编写Dockerfile制作ZooKeeper镜像,镜像名为mall-zookeeper:v1.1,使用centos:7.9.2009基础镜像,安装ZooKeeper服务,开放端口2181;并设置服务开机自启。
5.编写docker-compose.yaml文件,使用上述镜像编排部署Mall应用商城。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用Kubernetes + GitLab + Harbor + KubeSphere(集成了Jenkins、Istio等工具) 架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1. 在Kubernetes集群中完成GitLab服务的部署,完成后创建一个公开项目。
2. 在KubeSphere中创建Harbor仓库的访问令牌。
3. 在KubeSphere中创建GitLab凭证
4. 创建流水线,编辑Jenkinsfile,包含Checkout SCM、单元测试、SonarQube分析、构建并推送镜像、部署服务至Kubernetes集群等几个步骤。
5. 选择Jenkins Agent,基于maven:3.3.9-jdk-8-alpine镜像配置Pod模板。
6. 在GitLab中配置webhook,将提供的代码推送到GitLab触发构建,完成后访问部署的应用。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 为master节点打上“app=exam”标签,并将其调度策略设置为PreferNoSchedule。
2. 在master节点/root目录下编写YAML文件deployment.yaml,具体要求如下:
(1)Deployment名称:nginx;
(2)镜像:nginx:latest;
(3)指定其Pod调度到有“app=exma”标签的节点上。
完成后使用该YAML文件创建Deployment。
3. 在master节点/root目录下编写YAML文件service.yaml,具体要求如下:
(1)Service名称:nginx-service;
(2)关联名为nginx的Deployment;
(3)以NodePort方式将其80端口对外暴露为30080。
完成后使用该YAML文件创建Service。
4. 使用Kubernetes集群备份功能备份现有Etcd数据(提供enpoints,ca、cert、key)。
5. 在master节点创建Deployment的spec.yaml文件,具体要求如下:
(1)Deployment名称:exam2022;
(2)镜像:redis:latest:
(3)副本数:7;
(4)label:app_enb_stage=dev。
完成后保存这个spec.yaml文件到master节点/opt/exam2022/deploy_spec.yaml中。
6. 在master节点/root目录下编写YAML文件pv.yaml创建PV,具体要求如下:
(1)PV名称:test-pv;
(2)类型:hostPath;
(3)挂载路径:/data;
(4)容量:1Gi;
(5)模式:ReadOnlyMany。
完成后使用该YAML文件创建PV。
7. 在master节点/root目录下编写YAML文件pod-secret.yaml创建Secret和Pod,具体要求如下:
(1)Secret名称:mysecret;
(2)包含一个password字段(手动base64加密);
(3)第一个Pod test1使用env引用mysecret;
(4)第二个Pod test2使用volume引用mysecret。
完成后使用该YAML文件创建Secret和Pod。
8. 在Kubernetes集群中完成Bookinfo样例程序的部署,然后在maser节点/root目录下编写YAML文件istio.yaml配置HTTP请求超时,具体要求如下:
(1)路由名称:reviews;
(2)将请求路由到reviews服务的v2版本;
(3)对reviews服务的调用增加一个半秒的请求超时。
完成后使用该YAML文件配置HTTP请求超时。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称:exam;
(2)内存为2Gi,CPU为1核;
(3)基于Multus多网络方案为该VMI添加一个额外网络macvlan。
完成后使用该YAML文件创建VMI。
2. 在master节点/root目录下编写YAML文件hpa.yaml创建HorizontalPodAutoscaler对象,具体要求如下:
(1)HorizontalPodAutoscaler名称:exam-hpa;
(2)将其关联到虚拟实例exam;
(3)VMI的最小副本数为2,最大副本数为5。
完成后使用该YAML文件创建HorizontalPodAutoscaler对象。
3. 为master节点添加标签kubevirt.io/schedulable=true,使其可以调度虚拟机。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷4
第三场次、公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上部署Roacketchat聊天系统,完成以下搭建内容。
1.在公有云中完成虚拟私有云的创建,创建一个名为intnetX的内部网络:IP地址为172.16.1.0/16;创建子网名称为intnetX-server:IP地址为172.16.1.0/24;创建子网名称为intnetX-sql:IP地址为172.16.2.0/24;
2.使用本地提供的Centos7.9 qcow2镜像文件,上传至公有云镜像服务中。
3.创建一个安全组intnetX-security,允许策略:只放行源地址为172.16.1.0/24访问27017端口;允许策略:只放行源地址为172.16.1.0/24使用ping命令访问;允许策略:放行所有地址访问172.16.1.0/24段80端口;
4.登录公有云平台,使用intnetX-server网络创建两台云实例名称:ChinaSkill-node-1、ChinaSkill-node-2,使用intnetX-sql网络创建一台云实例Chinaskill-sql-1。云服务器使用intnetX-security安全组。
5.在ChinaSkill-sql-1云服务器中部署mongo服务。
6.在ChinaSkill-node-1和ChinaSkill-node-2两个节点中部署Roacketchat系统,使用ChinaSkill-sql-1后端数据库。
7.创建一个云存储对象server_data,容量为100G。
8.将server_data挂载到ChinaSkill-node-1和ChinaSkill-node-2节点中,使得两节点可以共用此存储。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Roacketchat聊天系统,对其架构进行优化,完成以下操作。
1.使用intnetX-sql网络创建一台云数据库,数据库名称:chinaskill-mongo,云数据库使用intnetX-security安全组;
2.修改ChinaSkill-node-1和ChinaSkill-node-2中部署的Roacketchat聊天系统,使用chinaskill-mongo作为后端数据库。
3.使用ChinaSkill-node-1云服务器在server_backup备份存储卡中创建镜像Roacketchat-image。
4.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
5. 使用Roacketchat-image镜像新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
6.为云服务器ChinaSkill-node-1和ChinaSkill-node-2主机接入日志管理,配置日志流,根据规则将采集日志至日志服务中。
7.配置云服务日志接入负载均衡,创建日志组和创建日志流,使用结构化配置使负载均衡器elb可以根据实际业务需要开启快速分析。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server;
2.在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
3.在Kubernetes集群中创建一个名为init的Pod,要求添加Init Container,Init Container的作用是创建一个空文件,Pod的Containers判断文件是否存在,不存在则退出
4.在Kubernetes集群中创建一个名为nginx的Deployment,保证其副本在每个节点上运行,且不覆盖节点原有的Tolerations
5.为上一题的Deployment创建一个Service,名称为nginx,使用nslookup查找出Service dns记录、Pod的dns记录,并分别写入到指定的文件中。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷5
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-cyborg.sh,填充脚本,安装Cyborg-硬件加速生命周期管理服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar-资源预订服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用OpenStack私有云平台,创建三个云主机,使用提供的软件包安装RabbitMQ服务,安装完毕后,搭建RabbitMQ集群,并打开RabbitMQ服务的图形化监控页面插件。集群使用普通集群模式,其中第一台做磁盘节点,另外两台做内存节点。
2.在openstack私有云平台上,创建云主机VM1,镜像使用cirros。创建成功后,将云主机打快照并保存到controller节点/root/cloudsave目录下,保存名字为csccvm.qcow2。最后使用qemu-img相关命令,将镜像的campat版本修改为0.10(该操作是为了适配某些低版本的云平台)。
3.在提供OpenStack私有云平台,创建一台云主机,云主机名为cscc_vm,镜像使用cirros、flavor自行创建(配置自定义)。然后创建一块大小为1G的云硬盘,命名为block,并挂载到该云主机。
4.在提供的OpenStack平台上,编写heat模板createcinder.yml文件,模板作用为按照要求创建一个云硬盘。
5.在OpenStack私有云平台,创建一台云主机,并创建一个40G大小的cinder块存储,将块存储连接到云主机,然后在云主机上对云硬盘进行操作。要求分出4个大小为5G的分区,使用这4个分区,创建名为/dev/md5、raid级别为5的磁盘阵列加一个热备盘(/dev/vdb4为热备盘)。
6.使用提供的OpenStack平台,创建一台云主机,根据提供的软件包,编写一键部署LNMP+WordPress的部署脚本。
7.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用cloudkitty计费服务,使用noop计费模型处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
10.使用提供的iaas-error5镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为无法创建用户和项目,请结合报错信息排查错误,使keystone服务可以正常使用,可以正常创建用户与项目。
任务三、私有云运维开发(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷5
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,查看整个集群的配置信息。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
将云梦公司开发的基于微服务架构的ChinaSkillsSA智能文本的情绪分析(Sentiment Analysis)的系统实现全容器化部署,该ChinaSkillsSA智能分析系统应用系统架构图如下:
模块
使用技术
说明
sa-frontend
Node.js
前端项目,使用 Vue.js 开发。
sa-logic
Python Flask
输入文本句子的情绪分析微服务,使用 Python 开发。
sa-webapp
Spring Cloud
Web服务,处理 sa-frontend 请求,调用 sa-logic 微服务,使用Java语言开发。
请将sa-frontend组件、sa-logic组件和sa-webapp组件按照要求进行容器化,其它组件已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile制作sa-frontend镜像,生成镜像名为sa-frontend:v1.1,基于centos:7.9.2009基础镜像,指定作者为Chinaskill,安装nginx和npm工具,复制所有前端包到镜像内,设置服务自启动,并推送其到私有仓库。
2.编写Dockerfile制作sa-logic镜像,生成镜像名为sa-logic:v1.1,基于centos:7.9.2009基础镜像,指定作者为Chinaskill,安装Python3.7,设置sa-logic服务开机自启,并推送其到私有仓库。
3.编写/Dockerfile制作sa-webapp镜像,生成镜像名为chinaskillsa-webapp:v1.1,基于centos:7.9.2009基础镜像,指定作者为Chinaskill,复制webapp到镜像内并构建,开放8080端口,设置服务自启动,并推送其到私有仓库。
4.创建chinaskills-sa.yaml文件,使用上述镜像编排部署ChinaSkillsSA情感分析应用系统。
题目3. 基于Kubernetes构建CICD(8分)
云梦公司决定采用GitLab + Jenkins + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署(构建持续集成所需要的所有软件包在附件Jenkins_offline.tar中)。CICD应用系统架构如下:
1.在master节点完成Helm3工具的安装。
2. 使用Helm3工具将Jenkins服务部署到Kubernetes集群中,将Pod的/var/jenkins_home目录以hostPath方式挂载到宿主机/home/jenkins_home下,然后以NodePort方式暴露Jenkins服务。
3.使用Helm3工具将GitLab服务安装到Kubernetes集群中,设置root用户密码为12345678,并使用NodePort方式暴露GitLab服务。
4.在GitLab中创建公开项目SpringCloud,并配置SSH Key,实现通过SSH方式克隆项目。
5. 在GitLab中配置webhook,测试其连通性。
6. 新建一个流水线任务,并编写构建项目所需的流水线脚本,脚本包含编译代码、构建镜像、上传镜像、拉取镜像、发布服务等几个阶段。
7. 将SpringCloud项目中的代码推送到Gitlab中触发构建,完成服务的自动发布。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 默认情况下,Pod能够使用集群节点全部可用计算资源,请配置集群为系统守护进程kube-reserved和system-reserved预留500m CPU、1Gi memory和1Gi ephemeral-storage计算资源。
2. 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)命名空间:default;
(2)Pod名称:exam;
(3)该Pod包含2个容器:redis和nginx,分别使用镜像redis和nginx。
完成后使用该YAML文件创建Pod。
3. 在master节点/root目录下编写YAML文件pod-secret.yaml创建Secret和Pod,具体要求如下:
(1)Secret名称:mysecret;
(2)包含一个password字段(手动base64加密);
(3)第一个Pod test1使用env引用mysecret;
(4)第二个Pod test2使用volume引用mysecret。
完成后使用该YAML文件创建Secret和Pod。
4.在master节点/root目录下编写YAML文件创建LimitRange,具体要求如下:
(1)LimitRange名称:mem-limit-range;
(2)容器默认资源请求为256Mi内存、500m CPU;
(3)容器资源请求上限为800Mi内存、3000m CPU;
(4)容器资源请求下限为100Mi内存,300m CPU;
(5)内存和CPU超售的比率均为2。
完成后使用该YAML创建LimitRange。
5. 为master节点打上标签“disktype=ssd”和标签“exam=chinaskill”,然后在master节点/root目录下编写YAML文件创建Deployment,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)要求Pod只能调度到具有标签“disktype=ssd”的节点上;
(3)具有标签“exam=chinaskill”的节点优先被调度。
完成后使用该YAML文件创建Deployment。
6. 在master节点/root目录下编写YAML文件创建ClusterRole,具体要求如下:
(1)ClusterRole名称:deployment-clusterrole;
(2)只拥有对Deployment、Daemonset、StatefulSet的创建权限。
完成后使用该YAML文件创建ClusterRole。
7. 在master节点/root目录下编写YAML文件创建ServiceAccount,具体要求如下:
(1)ServiceAccount名称:exam-sa;
(2)将该ServiceAccount与上一题创建的ClusterRole进行绑定绑定。
完成后使用该YAML文件创建ServiceAccount。
8. 在Kubernetes集群中完成HTTPBin样例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml创建Ingress,具体要求如下:
(1)在端口80上配置Ingress以实现HTTP流量;
(2)Ingress名称:httpbin-ingress;
(3)允许流量流向路径/status和/delay;
(3)对外访问的域名:httpbin.example.com。
完成后使用该YAML文件创建Ingress。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称为exam;
(2)内存为2Gi,CPU为1核;
(3)启动命令:echo 123456 | passwd --stdin root。
完成后使用该YAML文件创建VMI。
2. 在KubeVirt中启用实时迁移功能,以实现将一台正在运行的虚拟机实例从一个节点迁移到另一个节点,期间工作负载继续运行且能保持持续访问。
3. 启用KubeVirt热插拔卷支持功能,然后在master节点/root目录下编写YAML文件vmi-disk.yaml为虚拟实例exam增加一块磁盘,具体要求如下:
(1)磁盘名称:containerdisk;
(2)磁盘大小:5Gi。
完成后使用该YAML文件将磁盘挂载到虚拟实例exam上。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷5
第三场次:公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上部署Filerun网盘系统,完成以下搭建内容。
1.在公有云中完成虚拟私有云的创建,创建一个名为intnetX的内部网络:IP地址为172.16.1.0/16;创建子网名称为intnetX-server:IP地址为172.16.1.0/24;创建子网名称为intnetX-sql:IP地址为172.16.2.0/24;
2.登录公有云平台,使用intnetX-server网络创建一台云实例名称:ChinaSkill-node-1;
3.利用提供的软件包源,在ChinaSkill-node-1中部署Filerun服务。
4.使用intnetX-sql网络创建云数据库MySQL实例ChinaSkill-sql-1。
5.将Filerun数据源迁移至云数据库MySQL实例ChinaSkill-sql-1上,并修改ChinaSkill-node-1使用云数据库ChinaSkill-sql-1实例作为数据源。
6.使用弹性文件服务给chinaskill-node-1云服务器提供后端存储,并设置filerun使用弹性文件服务存储。
7.创建云数据库chinaskill-mysql并创建只读数据库chinaskill-read实例。
8.云数据库chinaskill-mysql申请读写分离地址。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Filerun网盘系统,优化其架构,完成以下操作。
1.修改chinaskill-node-1中使用云数据库读写分离地址。
2.利用ChinaSkill-node-1云主机创建镜像ChinaSkill-image。
3.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
4.使用ChinaSkill-image镜像新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
5.配置入侵检测服务,监控云服务器威胁告警,当云服务器检测到被入侵时封锁其访问IP地址访问。
6.配置主机接入日志管理,将云服务器中产生的日志通过采集日志流收集至日志管理中,并根据采集规则对其进行日志分析。
7. 根据所部署的Filerun网盘系统,使用混合云架构对其进行优化,在私有云平台申请一台云服务器,搭建mysql服务,实时同步公有云数据库中数据至本地。
8.在私有云平台申请一台云服务器,搭建文件服务器,定时每天同步公有云弹性文件服务存储中数据,使用增量同步。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server;
2.在kcloud集群中安装helm命令,使用提供的mychart-0.1.0.tgz模板包,修改模板代码使外部可通过节点地址进行访问。在模板市场中上传我的模板mychart,在kcloud集群中安装名为nginx的模板实例。
3.在Kubernetes集群中创建一个名为nginx-app的Deployment,包含3个副本,镜像使用nginx:1.11.9,通过滚动升级的方式更新镜像版本为1.12.0,并记录这个更新,最后,回滚该更新到之前的1.11.9版本。
4.在Kubernetes集群中创建一个名为default-cpu-example的namespace,配置该namespace默认的CPU请求为500m,CPU请求限制为2000m。
5.使用nslookup查找出nginx Service dns记录、Pod的dns记录,并分别写入到指定的文件中。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷6
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
根据提供的框架补全云计算脚本并执行, 检查iaas-pre-host.sh执行后相关服务状态是否正确和相关环境变量是否正确。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-designate.sh,填充脚本,安装DNS服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-ceilometer.sh,填充脚本,安装Ceilometer监控服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar-资源预订服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用提供的OpenStack私有云平台,修改相关参数对openstack平台进行调优操作,相应的调优操作有:
(1)预留前2个物理CPU,把后面的所有CPU分配给虚拟机使用(假设vcpu为16个);
(2)设置cpu超售比例为4倍;
(3)设置内存超售比例为1.5倍;
(4)预留2048mb内存,这部分内存不能被虚拟机使用;
(5)预留10240mb磁盘,这部分磁盘不能被虚拟机使用;
(6)设置nova服务心跳检查时间为120秒。
2.使用OpenStack私有云平台,创建一台云主机,创建完之后对该云主机进行打快照处理,并将该快照保存至/root/cloudsave目录,保存名字为csccvm.qcow2。
3.在提供的OpenStack平台上,使用Swift对象存储服务,修改相应的配置文件,使对象存储Swift作为glance镜像服务的后端存储。
4.在提供的OpenStack平台上,编写heat模板createswift.yml文件,模板作用为按照要求创建容器。
5.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
6.使用cloudkitty计费服务,处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
7.使用OpenStack私有云平台,创建两台云主机vm1和vm2,在这两台云主机上分别安装数据库服务,并配置成主从数据库,vm1节点为主库,vm2节点为从库(数据库密码设置为000000)。
8.使用OpenStack私有云平台,创建三台云主机vm1、vm2和vm3,首先使用两台云主机完成MariaDB数据库的主从配置,接着根据提供的数据库中间件Mycat。完成Mycat读写分离数据库的配置安装(逻辑库名称使用“USERDB”,数据库密码使用000000)。
9.在OpenStack私有云平台,创建一台云主机,使用提供的软件包,编写脚本,要求可以一键部署nfs服务。
10.使用提供的iaas-error6镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为所有的命令均无法正常使用,请结合报错信息排查错误,使OpenStack平台服务可以正常使用。
任务三、私有云运维开发(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷6
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,为集群创建一个永久时效的Token。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
该公司基于Hyperf基础框架开发了一个微服务DEMO,并实现全容器化部署,该应用技术栈如下:
模块
说明
Hyperf
一个高性能高灵活性的渐进式PHP协程框架,适用于微服务
Redis
分布式缓存服务
RabbitMQ
面向消息的中间件
Zipkin
微服务链路跟踪
MySQL
数据库
Nginx
前端服务
ElasticSearch
分布式搜索和分析引擎
其整体架构如下:
请将Zipkin组件、MariaDB组件、ElasticSearch组件和nginx组件按照要求进行容器化,其它组件Hyperf、Redis、RabbitMQ已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile基于centos:7.9.2009基础镜像制作Zipkin镜像,镜像名为chinaskill-zipkin:v1.0,要求安装Zipkin服务,暴露9411端口,并设置服务自启动。
2. 编写Dockerfile基于centos:7.9.2009基础镜像制作MySQL镜像,镜像名为chinaskill-mysql:v1.0,要求安装MariaDB服务,设置其字符编码为UTF-8,暴露3306端口,并设置服务自启动。
3. 编写Dockerfile基于centos:7.9.2009基础镜像制作Nginx镜像,镜像名为chinaskill-nginx:v1.0,要求安装Nginx服务,暴露80端口,并设置服务自启动。
4. 编写Dockerfile基于centos:7.9.2009基础镜像制作ElasticSearch镜像,镜像名为chinaskii-elk:v1.0,要求安装JDK环境和ElasticSearch服务,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上述镜像编排部署基于Hyperf基础框架的微服务DEMO。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用GitLab + GitLab CI + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1.在maser节点上完成Helm3工具的安装。
2. 使用Helm3工具完成GitLab服务在Kubernetes集群上的部署,使用NodePort方式将GitLab服务对外暴露30081端口。
3.使用Helm3工具在Kubernetes集群上完成GitLab-Runner服务的部署,并完成Shared Runner在GitLab中的注册。
4. 在GitLab中开启Container Registry,并完成Environment variables的设置。
5.将Kubernetes集群添加到GitLab中,并命名为cicd-cluster。
6. 编写.gitlab-ci.yml自动化脚本,要求整个构建流程包含test、build、release、review和deploy几个阶段。
7.将提供的项目包推送到GitLab仓库并触发自动构建,完成代码编译、镜像构建、镜像推送和服务发布的自动化实现。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. Kubelet使用证书进行Kubernetes API的认证,证书默认有效期为1年。请配置Kubelet证书轮换,当证书即将过期时,将自动生成新的秘钥,并从Kubernetes API申请新的证书。
2. 为Kubernetes集群节点配置资源配置最小回收量,要求当节点可用内存不足1Gi或者可用文件系统空间不足10Gi时开始驱逐节点上的Pod。
3. 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)容器默认请求100M内存;
(3)容器最多请求200M内存。
完成后使用该YAML文件创建Pod。
4. 在master节点/root目录下编写YAML文件replicaset.yaml创建ReplicaSet。具体要求如下:
(1)ReplicaSet名称:nginx;
(2)命名空间:default;
(3)副本数:3;
(4)镜像:nginx。
完成后使用该YAML文件创建ReplicaSet
5. 在master节点/root目录下编写YAML文件pod-live.yaml创建Pod,具体要求如下:
(1)Pod名称:liveness-exec;
(2)镜像:busybox;
(3)启动命令:/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy;
(3)在容器内执行命令“cat /tmp/healthy”来进行存活探测,每5秒执行一次。
完成后使用该YAML文件创建Pod。
6. 创建命名空间quota-example,在master节点/root目录下编写YAML文件quota.yaml创建ResourceQuota,具体要求如下:
(1)ResourceQuota名称:compute-resources;
(2)命名空间compute-resources内所有Pod数量不超过4;
(4)命名空间compute-resources内所有容器内存申请总和不得超过1G;
(5)命名空间compute-resources内所有内存限制不得超过2G;
(6)命名空间compute-resources内所有容器申请的CPU不得超过1;
(7)命名空间compute-resources内所有容器限制的CPU不得超过2。
完成后使用该YAML文件创建ResourceQuota。
7. 在master节点/root目录下编写YAML文件api.yaml扩展一个Kubernetes API,具体要求如下:
(1)API Server名称:crontabs;
(2)作用域:整个集群。
完成后使用该YAML文件创建API Server。
8. 在Kubernetes集群中完成HTTPBin样例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml创建Ingress Gateway,具体要求如下:
(1)以NodePort方式配置Ingress端口;
(2)在80端口为HTTP流量配置一个Gateway,名称:httpbin-gateway;
(3)为Gateway的入口流量配置路由,允许流量流向路径/status和/delay;
(4)对外访问的域名:httpbin.example.com。
完成后使用该YAML文件创建Ingress Gateway。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像(该镜像内部署有Web应用),在master节点/root目录下编写YAM文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称:exam;
(2)允许节点资源过量使用;
(3)内存为8Gi,CPU为4核;
(4)运行策略:RerunOnFailure。
完成后使用该YAML文件创建VMI。
2. 在master节点/root目录下编写YAML文件vmi-service.yaml为VMI内部应用创建Service,具体要求如下:
(1)Service名称:vmi-service
(2)访问方式:NodePort;
(3)将VMI的80端口对外暴露为30080。
完成后使用该YAML文件创建Service。
3. 在master节点/root目录下编写YAML文件vmi-network.yaml为VMI创建网络策略,具体要求如下:
(1)策略名称:deny-by-default;
(2)要求VMI仅允许来自同一命名空间内的VMI的HTTP 和 HTTPS 访问请求。
完成后使用该YAML文件创建网络策略。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷6
第三场次:公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署WordPress博客系统组件,完成以下搭建内容。
1.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
2.按照2核CPU、4G内存、40G硬盘,使用所上传的镜像创建两台名为ChinaSkill-node-1和ChinaSkill-data-2的云主机使用创建的intnetX虚拟私有云网络配置。
3.在公有云中购买云数据库ChinaSkill-mysql-1,并配置读写分离节点。
4. 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署WordPress的Web服务,使用chinaskill-wordpress.sql以云数据库读写分离地址为数据源运行WordPress。
5. 设置云主机的防火墙策略,保证ChinaSkill-node-1和ChinaSkill-node-2云主机上WordPress正常对外提供服务。
6.使用弹性文件服务给chinaskill-node-1云服务器提供后端存储,并设置WordPress使用弹性文件服务存储。
7.创建一个云服务器备份存储库名为server_backup,容量为100G。
8.设置文件自动增量备份至云存储server_backup中,每天24点开始备份。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Roacketchat聊天系统,对其架构进行优化,完成以下操作。
1.使用ChinaSkill-node-1云服务器创建镜像Roacketchat-image。
2.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
3.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
4.为云服务器ChinaSkill-node-1主机接入日志管理,配置日志流根据规则将采集日志至日志服务中。
5.配置云服务日志接入负载均衡,创建日志组和创建日志流,使用结构化配置使负载均衡器elb可以根据实际业务需要开启快速分析。
根据所部署的Roacketchat聊天系统,使用混合云架构对其进行优化,完成以下操作。
6.在私有云中申请一台云服务器ChinaSkill-mongo-bak,配置Mongo数据库每天定时备份公有云数据库ChinaSkill-mongo中数据。
7.在私有云平台申请一台云服务器ChinaSkill-node-3,部署Roacketchat聊天系统。
8.配置负载均衡器chinaskill-elb,添加私有云云服务器ChinaSkill-node-3节点。
9.通过日志管理API接入,将Roacketchat系统中收集的日志信息存储与私有云平台Roacketchat-log云服务器中。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server;
2.在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
3.在kcloud集中部署helm工具。
4.使用chart包通过helm工具将Drone部署到kcloud集群中,通过NodePort方式对外暴露服务。
5.使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。
6.通过应用编排服务部署magento电商商城。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷7
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-manila.sh,填充脚本,安装manila共享文件系统服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-octavia.sh,填充脚本,安装Octavia负载均衡服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.在提供的OpenStack平台上,使用Cinder块存储服务,创建块存储卷,并使用该卷连接到云主机。
2.在提供的OpenStack平台上,编写heat模板createuser.yml文件,模板作用为按照要求创建项目与用户,并赋予用户admin权限。
3.在提供的OpenStack平台上,上传cirros镜像,要求启动该镜像起码需要1G内存和10G硬盘。
4.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
5.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
6.使用cloudkitty计费服务,处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
7.在OpenStack私有云平台,创建一台云主机,编写定时任务脚本,要求可以在每个星期的周三晚上11点,定时自动备份数据库。
8.在OpenStack私有云平台,创建一台云主机,并创建一个40G大小的cinder块存储,将块存储连接到云主机,然后在云主机上对云硬盘进行操作。要求分出三个大小为5G的分区,使用这三个分区,创建名chinaskill-vg的卷组。然后创建名chinaskill-lv的逻辑卷,大小为12G。
9.使用OpenStack私有云平台,创建三个云主机,使用提供的软件包安装RabbitMQ服务,安装完毕后,搭建RabbitMQ集群,并打开RabbitMQ服务的图形化监控页面插件。集群使用普通集群模式,其中第一台做磁盘节点,另外两台做内存节点。
10.使用提供的iaas-error7镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为neutron网络命令无法正常使用,请结合报错信息排查错误,使neutron服务可以正常使用。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷7
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,查看当前集群支持的所有API resources。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
云梦公司开发了一套基于SpringBoot+MyBatis微服务架构的ChinaSkillsMall电商系统,并实现全容器化部署,ChinaSkillsMall电商应用系统架构图如下:
模块
说明
mall-monitor
监控中心
mall-gateway
微服务网关
mall-auth
认证中心
mall-admin
商城后台服务
mall-portal
商城前台服务
请将以上组件按照要求进行容器化。
1. 编写Dockerfile构建chinaskill-mariadb:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装并初始化MariaDB,密码为123456,设置数据库编码为UTF-8,开放端口3306,并设置服务开机自启。
2. 编写Dockerfile文件构建chinaskill-redis:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装Redis服务,设置Redis免密,并关闭保护模式,开放端口:6379,并设置服务开机自启。
3. 编写Dockerfile文件构建chinaskill-nacos:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装JDK工具和nacos-server工具,并设置Nacos服务开机自启。
4. 编写Dockerfile文件构建chinaskill-nginx:v1.1镜像,要求使用基础镜像centos:centos7.9.2009,安装Nginx服务,将提供的文件拷贝到/usr/share/nginx/html目录下,并设置Nginx服务开机自启。
5. 编写docker-compose.yaml文件,使用以上镜像编排部署ChinaSkillsMall商城。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用GitLab + Jenkins + Helm + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD完整流程如下:
1. 完成Helm3工具的安装。
2. 配置GitLab配置清单文件,使用Helm3将Gitlab服务安装到Kubernetes集群中,创建项目,并配置SSH Key。
3. 配置Jenkins配置清单文件,使用Helm3将Jenkins服务安装到Kubernetes集群中,并完成BlueOcean工具的安装。
4. 在Jenkins中配置Pod Template和Container Template,使其能够动态生成 Slave Pod。
5. 使用BlueOcean方式完成CI/CD工作,新建Jenkinsfile文件,包含clone代码、测试、代码构建、构建Docker镜像、推送镜像和Deploy更新服务 6个阶段。
6. 将提供的代码push到GitLab中触发自动构建,实现基于Helm3工具自动将构建的服务发布到Kubernetes集群中。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 在master节点/root目录下编写YAML文件创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)镜像:nginx;
(3)挂载一个Volume,名称为cache-volume,将其/data目录挂载到宿主机/data目录下。
完成后使用该YAML文件创建Pod。
2. 在master节点/root目录下编写YAML文件deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)镜像:nginx:latest;
(3)副本数:2;
(4)标签:app: nginx;
(5)容器端口:80。
完成后使用该YAML文件创建Deployment。
3. 在master节点/root目录下编写YAML文件scale.yaml为上一题的nginx-deployment配置Pod水平自动伸缩,具体要求如下:
(1)Pod水平自动伸缩名称:scale;
(2)Pod最小副本数为1;
(3)Pod最大副本数为5;
(4)根据设定的CPU使用率(75%)动态的增加或者减少Pod 数量。
完成后使用该YAML文件创建Pod水平自动伸缩。
4. 在master节点/root目录下编写YAML文件quota.yaml创建命名空间和ResourceQuota,具体要求如下:
(1)命名空间名称:quota-exam;
(2)ResourceQuota名称:compute-resources;
(3)要求限制命名空间内Pod数量不超过4;
(4)所有容器内存申请总和不得超过1Gi;
(5)所有容器申请的CPU不得超过2000m。
完成后使用该YAML文件创建命名空间和ResourceQuota。
5. 默认情况下,Pod能够使用集群节点全部可用计算资源,请配置集群为系统守护进程kube-reserved和system-reserved预留500m CPU、1Gi memory和1Gi ephemeral-storage计算资源。
6. 在master节点/root目录下编写YAML文件创建角色,具体要求如下:
(1)角色名称:exam;
(2)该角色拥有创建、删除和更新Pod的权限;
(3)该角色拥有查看、创建、更改和删除Deployment的权限。
完成后使用该YAML文件创建角色。
7. 在master和node节点安装NFS文件服务器,共享目录为/data/k8s/,然后在master节点/root目录下编写YAML文件nfs-pv.yaml创建PV,具体要求如下:
(1)PV名称:exma-pv;
(2)使用NFS存储作为后端存储;
(3)存储空间为1Gi;
(4)访问模式为ReadWriteOnce;
(5)回收策略为Recyle。
完成后使用该YAML文件创建PV。
8. 在Kubernetes集群中完成HTTPBin服务的部署,在master节点/root目录下编写YAML文件istio.yaml创建Egress控制Istio服务网格的出口流量,具体要求如下:
(1)虚拟服务名称:httpbin-ext;
(2)设置调用外部服务httpbin.org的超时时间为3秒;
(3)响应时间超过3秒的httpbin.org服务将被切断。
完成后使用该YAML文件创建Egress控制Istio服务网格的出口流量。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称:exam;
(2)挂载一块磁盘emptyDisk,大小为5Gi;
(3)启动参数:timedatectl set-timezone Asia/Shanghai。
完成后使用该YAML文件创建VMI。
2. 在KubeVirt中启用快照/恢复支持功能,然后在master节点/root目录下编写YAML文件snap.yaml为虚拟实例exam创建一个快照,具体要求如下:
(1)快照名称:exam-snap;
(2)创建快照超时时间:5min。
完成后使用该YAML文件为虚拟实例exam创建快照。
3. 在master节点/root目录下编写YAML文件vmi-role.yaml创建RBAC角色,具体要求如下:
(1)角色名称:vmi-role;
(2)该角色对VMI拥有get、delete、create、update、patch和list权限。
完成后使用该YAML文件创建角色。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷7
第三部分、公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上部署Roacketchat聊天系统,完成以下搭建内容。
1.在公有云中创建一个名为intnetX的虚拟私有云172.16.X.0的网络配置。
2.在公有云中创建一个名为intsql的虚拟私有云10.10.X.0的网络配置。
3.创建对等连接,使intnetX和intsql两个虚拟私有云网络直接可以相互访问。
4.创建一个安全组intnetX-security,允许策略intnetX主机访问intsql内云数据库服务。
5.使用intsql网络购买mongo云数据库服务ChinaSkill-sql-1。
6.按照1核CPU、4G内存、40G硬盘,使用intnetX网络按流量计费访问网络的方式创建一台名为ChinaSkill-node-1和ChinaSkill-node-2的云主机。
7.在ChinaSkill-node-1和ChinaSkill-node-2两个节点中部署Roacketchat系统,使用ChinaSkill-sql-1后端数据库。
8.创建一个云存储对象server_data,容量为100G。
9.将server_data挂载到ChinaSkill-node-1和ChinaSkill-node-2节点中,使得两节点可以共用此存储。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Roacketchat聊天系统,对其架构进行优化,完成以下操作。
1.使用ChinaSkill-node-1云服务器在server_backup备份存储库中创建镜像Roacketchat-image。
2.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
3. 使用Roacketchat-image镜像新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。并设置ChinaSkill-node-1和ChinaSkill-node-2节点不被移除。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却120秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加2台。冷却120秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却120秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加2台。冷却120秒。
4.为云数据库ChinaSkill-sql-1添加数据库安全服务,保证Roacketchat聊天系统数据安全。
5.为云服务器ChinaSkill-node-1主机接入日志管理,配置日志流根据规则将采集日志至日志服务中。
6.配置云服务日志接入负载均衡,创建日志组和创建日志流,使用结构化配置使负载均衡器elb可以根据实际业务需要开启快速分析。
7. 根据所部署的Roacketchat聊天系统,使用混合云架构对其进行优化,在私有云平台中申请一台云服务器ChinaSkill-node-3,并部署Roacketchat聊天系统,后端数据库采用公有云购买的云数据库ChinaSkill-sql-1。
8.修改公有云负载均衡chinaskill-elb,添加私有云服务器ChinaSkill-node-3。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server;
2.在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
3.在kcloud集群上创建GitLab程序的工作负载,副本数为2, GitLab服务对外暴露30081端口。
4.在kcloud集群上完成GitLab-Runner的部署,并完成Shared Runner的注册。
5.将kcloud集群添加到GitLab中,并命名为cicd-kcloud。
6.编写.gitlab-ci.yml自动化脚本,要求整个构建流程包含test、build、release、review和deploy几个阶段。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷8
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-designate.sh,填充脚本,安装DNS服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cloudkitty.sh,填充脚本,安装cloudkitty计费服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-heat.sh,填充脚本,安装heat编排服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.使用提供的OpenStack私有云平台,修改普通用户权限,使普通用户不能对镜像进行创建和删除操作。
2.在提供的OpenStack私有云平台上,在/root目录下编写Heat模板create_user.yaml,创建名为heat-user的用户,属于admin项目,并赋予heat-user用户admin的权限,配置用户密码为123456。
3.使用提供的OpenStack私有云平台,优化KVM的I/O调度算法,将默认的deadline修改为none模式。
4.在提供的OpenStack私有云平台,创建一台云主机,配置该主机为nfs的server端,将该云主机中的/mnt/test目录进行共享(目录不存在可自行创建)。然后配置controller节点为nfs的client端,要求将/mnt/test目录作为glance后端存储的挂载目录。
5.使用提供的OpenStack私有云平台,申请三台云主机,使用提供的http源,在两个节点自行安装redis服务并启动,配置redis的访问需要密码,密码设置为123456。然后将这三个redis节点配置为redis的一主二从三哨兵架构
6.使用提供的OpenStack私有云平台,申请三台云主机,分别命令为node1、node2、node3,使用提供的软件包,在这三个节点上安装数据库服务,数据库密码设置为123456。将这三个节点配置为数据库高可用集群即MariaDB_Galera_Cluster。
7.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用cloudkitty计费服务,使用hashmap计费模型处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
10.使用提供的iaas-error8镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为上传镜像一直处于pending状态,请结合报错信息排查错误,使glance服务可以正常使用。
任务三、私有云运维开发(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷8
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,查看命名空间kube-system内所有资源的信息。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
云梦公司基于Spring Cloud微服务应用程序框架开发了一套快速开发平台,平台设计灵活可扩展、可移植、可应对高并发需求,并实现了全容器化部署,该平台架构图如下:
主要的技术栈如下表所示:
模块
说明
MySQL
读写分离数据库
Redis
分布式缓存服务
Register
注册中心、配置中心
Gateway
动态路由定义
Auth
授权服务提供
Upms
通用用户权限管理模块
UI
前端页面
试将MySQL组件、Redis组件、Register组件和nginx组件按照要求进行容器化,其它组件Gateway、Auth、Upms已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile文件制作MySQL镜像,生成镜像名micro-mysql:v1.0,基于centos:7.9.2009基础镜像,要求安装MySQL服务,设置初始密码为123456,并设置服务自启动。
2. 编写Dockerfile文件制作Redis镜像,生成镜像名micro-redis:v1.0,基于centos:7.9.2009基础镜像,安装Redis服务,关闭保护模式,并设置服务自启动。
3. 编写Dockerfile文件制作Register镜像,生成镜像名micro-register:v1.0,基于centos:7.9.2009基础镜像,安装JDK环境和Register服务,暴露8848端口,并设置服务自启动。
4. 编写Dockerfile文件制作UI镜像,生成镜像名micro-nginxl:v1.0,基于centos:7.9.2009基础镜像,安装nginx服务,暴露80端口,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上面构建的镜像编排部署该快速开发平台。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用Kubernetes + GitLab + Drone + Helm + Harbor 架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1. 在master节点完成Helm3工具的安装。
2. 使用Helm工具和chart包,将Drone部署到Kubernetes集群中,以NodePort方式对外暴露服务。
3. 使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。完成后创建一个公开项目drone-kubernetes-demo。
4. 编写.drone.yml文件,包含构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
5. 将提供的代码推送到GitLab触发构建,完成后访问该应用。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 修改集群配置参数,要求集群节点可用内存低于500Mi时,kubelet开始驱逐节点上的Pods。
2. 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)镜像:nginx:latest;
(3)以Guaranteed QoS类运行;
(4)其requests值等于limits值。
完成后使用该YAML文件创建Pod。
3. 在master节点/root目录下编写YAML文件nginx-deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)镜像:nginx;
(3)副本数:2;
(4)网络:hostNetwork;
(5)容器端口:80。
完成后使用该YAML文件创建Deployment。
4. 在master节点/root目录下编写YAML文件hpa.yaml为上一题的Deployment创建Pod水平自动伸缩,具体要求如下:
(1)Pod水平自动伸缩名称:frontend-scaler;
(2)副本数伸缩范围:3--5;
(3)期望每个Pod根据设定的CPU使用率50%动态的伸缩。
完成后使用该YAML文件创建Pod水平自动伸缩。
5. 在master节点/root目录下编写YAML文件role.yaml创建角色,具体要求如下:
(1)角色名称:exam-reader;
(2)对default命名空间内的Pod拥有get、watch、list、create、delete的权限;
(3)对default命名空间内的Deployment拥有get、list的权限。
完成后使用该YAML文件创建角色。
6. Kubernetes集群支持Pod优先级抢占,通过抢占式调度策略来实现同一个Node节点内部的Pod对象抢占。在master节点/root目录下编写YAML文件schedule.yaml创建一个抢占式调度策略,具体要求如下:
(1)抢占式调度策略名称:high-scheduling;
(2)优先级为1000000;
(3)不要将该调度策略设置为默认优先调度策略。
完成后使用该YAML文件创建抢占式调度策略。
7. 在master节点/root目录下编写YAML文件部署MySQL服务,具体要求如下:
(1)Service名称:myqsl;Deployment名称:myqsl;
(2)镜像:mysql:5.7;
(3)数据库用户:root;密码:123456;
(4)挂载一个持久卷mysql-pv,拥有2GB的存储空间,路径为/ mnt/data;
(5)以NodePort方式将3306端口对外暴露为33306.
完成后使用该YAML文件部署MySQL服务。
8. 在Kubernetes集群中完成Bookinfo示例程序的部署,然后对productpage服务进行链路追踪,具体要求如下:
(1)安装Jaeger服务到集群中;
(2)使用curl工具向productpage服务发送1000个请求以生成追踪信息,每秒请求一次;
完成后通过Jaeger服务追踪最近一次访问productpage的详细信息。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1. 使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称:exam;
(2)内存为2Gi,CPU为1核;
(3)基于Multus多网络方案为该VMI添加一个额外网络macvlan;
(4)启动参数:echo Abc@1234 | passwd --stdin root。
完成后使用该YAML文件创建VMI。
2. 在master节点/root目录下编写YAML文件hpa.yaml创建HorizontalPodAutoscaler对象,具体要求如下:
(1)名称:exam-hpa;
(2)将其关联到虚拟实例exam;
(3)VMI的最小副本数为1,最大副本数为3
(4)要求VMI根据设定的CPU使用率70%动态伸缩。
完成后使用该YAML文件创建HorizontalPodAutoscaler对象。
3. 在master节点/root目录下编写YAML文件vmi-network.yaml为VMI创建网络策略,具体要求如下:
(1)策略名称:deny-by-default;
(2)要求VMI仅允许来自同一命名空间内的VMI的HTTP 和 HTTPS 访问请求。
完成后使用该YAML文件创建网络策略。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷8
第三部分、公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上部署Owncloud网盘系统,完成以下搭建内容。
1.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
2.在公有云中完成虚拟私有云的创建,创建一个名为intnetX的内部网络,创建子网名称为intnetX-server;创建子网名称为intnetX-sql;
3.登录公有云平台,使用intnetX-server网络创建一台云实例名称:ChinaSkill-node-1;
4.利用提供的软件包源,在ChinaSkill-node-1中部署Owncloud服务。
5.使用intnetX-sql网络创建云数据库MySQL实例chinaskill-mysql,并创建只读数据库chinaskill-read实例。云数据库chinaskill-mysql申请读写分离地址。
6.将Owncloud数据源迁移至云数据库MySQL实例chinaskill-mysql上,并修改ChinaSkill-node-1使用云数据库chinaskill-mysql读写分离节点作为数据源。
7.使用弹性文件服务给chinaskill-node-1云服务器提供后端存储,并设置owncloud使用弹性文件服务存储。
8.创建一个云存储对象server_data,容量为100G。
9.将server_data挂载到ChinaSkill-node-1中,使得该节点可以共用此存储。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Owncloud网盘系统,优化其架构,完成以下操作。
1.利用ChinaSkill-node-1云主机创建镜像ChinaSkill-image。
2.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
3.使用ChinaSkill-image镜像新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
4.配置云审计功能,对访问Owncloud网盘系统的用户身份进行验证,并检测其上传文件内容是否包含关键词。
5.配置数据安全,对Owncloud系统中的数据进行敏感数据识别,删除其包含敏感关键词的内容。
6. 根据所部署的Owncloud网盘系统,使用混合云架构对其进行优化,下载公有云ChinaSkill-node-1云服务器制作的镜像ChinaSkill-image,并上传至私有云平台中。
7.使用上传至私有云平台中的ChinaSkill-image镜像创建ChinaSkill-node-3云服务器。
8.修改公有云中负载均衡器chinaskill-elb,添加私有云平台中所创建的owncloud系统节点ChinaSkill-node-3。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX-server;
2.在kcloud集群中安装helm命令,使用提供的mychart-0.1.0.tgz模板包,修改模板代码使外部可通过节点地址进行访问。在模板市场中上传我的模板mychart,在kcloud集群中安装名为nginx的模板实例。
3.配置GitLab配置清单文件,使用Helm将Gitlab服务安装到kcloud集群中,创建项目,并配置SSH Key。
4.配置Jenkins配置清单文件,使用Helm将Jenkins服务安装到kcloud集群中,并完成BlueOcean工具的安装。
5.使用BlueOcean方式完成CI/CD工作,新建Jenkinsfile文件,包含clone代码、测试、代码构建、构建Docker镜像、推送镜像和Deploy更新服务 6个阶段。
6.将提供的代码push到GitLab中触发自动构建,实现基于Helm工具自动将构建的服务发布到kcloud集群中。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷9
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务 (10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh, 填充脚本,在 controller 和 compute 节点上安装 cinder 服务并完成配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-manila.sh,填充脚本,安装manila共享文件系统服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-cyborg.sh,填充脚本,安装Cyborg-硬件加速生命周期管理服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-karbor.sh,填充脚本,安装Karbor-数据保护即服务服务并完成相关配置。
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.OpenStack各服务内部通信都是通过RPC来交互,各agent都需要去连接RabbitMQ;随着各服务agent增多,MQ的连接数会随之增多,最终可能会到达上限,成为瓶颈。使用提供的OpenStack私有云平台,通过修改limits.conf配置文件来修改RabbitMQ服务的最大连接数为10240。
2.在提供的OpenStack私有云平台上,在/root目录下编写Heat模板create_net.yaml,创建名为Heat-Network网络,选择不共享;创建子网名为Heat-Subnet,子网网段设置为10.20.2.0/24,开启DHCP服务,地址池为10.20.2.20-10.20.2.100。
3.使用提供的OpenStack私有云平台,申请三台云主机,分别命令为node1、node2、node3,使用提供的软件包,在这三个节点上安装数据库服务,数据库密码设置为123456。将这三个节点配置为数据库高可用集群即MariaDB_Galera_Cluster。
4.使用上一题配置完成的数据库集群,使用提供的mariadb-repo.tar.gz软件包,安装haproxy负载均衡服务。配置node1节点为负载均衡的窗口,配置负载均衡为轮询算法;HA服务监听的端口为node1节点的3307端口;配置访问三个节点的权重依次为1,2,4。
5.在OpenStack私有云平台,创建一台云主机,编写脚本,使得可以一键部署ELK系统。
6.在提供的OpenStack平台上,上传cirros镜像,并对该镜像打上一个test的标签。
7.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
8.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
9.使用cloudkitty计费服务,处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
10.使用提供的iaas-error9镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为cinder服务因创建的卷太多,无法满足使用,请结合报错信息排查错误,扩容cinder存储池,使cinder服务可以正常使用。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷9
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 集群部署完成后,查看整个集群的配置信息。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
该公司开发了一套基于Spring Cloud的分布式系统套件,并实现全容器化部署,该系统主要模块如下:
模块
说明
Config
配置中心
Gateway
微服务网关
Eureka
注册中心
Spring Boot Admin
监控和管理的源软件
Zipkin
分布式实时数据追踪系统
Hello Service
服务注册
试将Config组件、Spring Boot Admin、Zipkin组件和Hello Service组件按照要求进行容器化,其它组件Gateway、Eureka已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile基于centos:7.9.2009基础镜像制作Config镜像,生成镜像名为chinaskill-config:v1.0,安装JDK环境和Config服务,并设置服务自启动。
2. 编写Dockerfile基于centos:7.9.2009基础镜像制作Spring Boot Admin镜像,生成镜像名为chinaskill-admin:v1.0,安装Spring Boot Admin工具,并设置服务自启动。
3 编写Dockerfile基于centos:7.9.2009基础镜像制作Zipkin镜像,生成镜像名为chinaskill-zipkin:v1.0,安装JDK环境和Zipkin服务,并设置服务自启动。
4. 编写Dockerfile基于centos:7.9.2009基础镜像制作Hello Service镜像,生成镜像名为chinaskii-hello:v1.0,安装Hello Service服务,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上述镜像编排部署Spring Cloud分布式系统。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用Kubernetes + GitLab + Harbor + KubeSphere(集成了Jenkins、Istio等工具) 架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1. 在Kubernetes集群中完成GitLab服务的部署,完成后创建一个公开项目。
2. 在KubeSphere中创建Harbor仓库的访问令牌。
3. 在KubeSphere中创建GitLab凭证
4. 创建流水线,编辑Jenkinsfile,包含Checkout SCM、单元测试、SonarQube分析、构建并推送镜像、部署服务至Kubernetes集群等几个步骤。
5. 选择Jenkins Agent,基于maven:3.3.9-jdk-8-alpine镜像配置Pod模板。
6. 在GitLab中配置webhook,将提供的代码推送到GitLab触发构建,完成后访问部署的应用。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 为master节点打上“app=exam”标签,并将其调度策略设置为PreferNoSchedule。
2. 在master节点/root目录下编写YAML文件nginx.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx-pod;
(2)镜像:nginx;
(3)镜像拉取策略:IfNotPresent;
(4)启用进程命名空间共享。
完成后使用该YAML文件创建Pod。
3. 在master节点/root目录下编写YAML文件nginx-deployment.yaml创建Deployment,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)Pod名称:nginx-deployment,副本数:2;
(3)镜像:nginx;
(4)容器端口:80
完成后使用该YAML文件创建Deployment。
4. 在master节点/root目录下编写YAML文件service.yaml创建Service,具体要求如下:
(1)Service名称:exam-service;
(2)集群内部访问端口:80;
(3)使用TCP协议;
(4)服务类型:ClusterIP。
完成后使用该YAML文件创建Service。
5. 在master节点/root目录下编写YAML文件创建Pod并使用ConfigMap,具体要求如下:
(1)Pod名称:exam;
(2)镜像:busybox;
(3)在数据卷里面使用ConfigMap,并设置变量“DB_HOST=localhost”和“DB_PORT=3306”。
完成后使用该YAML文件创建Pod。
6. 在master节点/root目录下编写YAML文件role.yaml创建角色,具体要求如下:
(1)角色名称:exam-role;
(2)命名空间:kube-system;
(3)资源对象:Deployment、ReplicaSet和Pod。
(4)对以上资源对象拥有所有执行权限。
完成后使用该YAML文件创建角色。
7. 在master节点/root目录下编写YAML文件pv.yaml创建PV,具体要求如下:
(1)PV名称:test-pv;
(2)要求使用NFS类型的后端存储;
(3)分配1G的存储空间;
(4)访问模式为ReadWriteOnce;
(5)回收策略为Recyle。
完成后使用该YAML文件创建PV。
8. 在Kubernetes集群中完成Bookinfo示例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml为ratings服务注入HTTP延迟故障,具体要求如下:
(1)注入规则名称:ratings;
(2)为用户jason在reviews:v2和ratings服务之间注入一个7秒的延迟。
完成后使用该YAML文件创建故障注入规则。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像(该镜像内部署有Web应用),在master节点/root目录下编写YAM文件vmi.yaml创建VMI,具体要求如下:
(1)VMI名称:exam;
(2)启用Istio代理注入;
(3)内存为4Gi,CPU为1核;
(4)运行策略:Always。
完成后使用该YAML文件创建VMI。
2. 在master节点/root目录下编写YAML文件vmi-service.yaml为VMI内部应用创建Service,具体要求如下:
(1)访问方式:NodePort;
(2)将VMI的80端口对外暴露为30080。
完成后使用该YAML文件创建Service。
3. 在master节点/root目录下编写YAML文件disk.yaml为VMI挂载一个卷,具体要求如下:
(1)卷名称:volume-hotplug;
(2)模式:ReadWriteOnce;
(3)容量为2Gi。
完成后使用该YAML文件创建卷并挂载到虚拟实例exam上。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷9
第三部分、公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署Lychee图床系统组件,完成以下搭建内容。
1.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
2.按照2核CPU、4G内存、40G硬盘,使用所上传的镜像创建两台名为ChinaSkill-node-1和ChinaSkill-data-2的云主机使用创建的intnetX虚拟私有云网络配置。
3.在公有云中购买云数据库ChinaSkill-mysql-1,并配置读写分离节点。
4. 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署Lychee的Web服务,使用chinaskill-lychee.sql以云数据库读写分离地址为数据源运行Lychee。
5.创建虚拟专用网络VPN网关VPN-gateway,并创建一个VPN连接VPN-connect。
6.在公有云平台中购买弹性公网IP地址,带宽大小为20Mbit/s。并将此弹性公网IP地址绑定至VPN-gateway网关中。
7.创建一个云存储对象server_data,容量为100G。
8.将server_data挂载到ChinaSkill-node-1和ChinaSkill-node-2节点中,使得两节点可以共用此存储。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Lychee图床系统,对其架构进行优化,完成以下操作。
1.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
2.将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
3.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,使用chinaskill-image镜像。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
为伸缩组as-exam新建告警触发策略:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
4.为云主机设置自定义告警模板策略,监控云主机CPU使用率超过80%的告警,内存使用率超过80%的告警。以邮件形式提醒管理员
5.在ChinaSkill-node-1云服务器中安装ICAgent工具,通过日志管理API接入,将ChinaSkill-node-1云服务器中的日志上报至云日志服务中。
6.配置云日志转储,将从ChinaSkill-node-1云服务器中收集到的日志转储至log OBS桶中。
7. 根据所部署的Lychee图床系统,使用混合云架构对其进行优化,在私有云平台中申请VPN服务,与公有云中VPN网关连接,使私有云平台中的云主机与公有云中服务通过VPN虚拟专用网络的方式进行数据传输。
8.在私有云平台申请一台云服务器Lychee-node-1,部署Lychee图床系统,使用公有云云数据库读写分离地址。
9.配置负载均衡器chinaskill-elb,添加私有云云服务器Lychee-node-1节点。
10.通过日志管理API接入,将Lychee图床系统中收集的日志信息存储与私有云平台Lychee-log云服务器中。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX;
2.在kcloud集中部署helm工具。
3.使用chart包通过helm工具将Drone部署到kcloud集群中,通过NodePort方式对外暴露服务。
4.使用Helm工具和chart包,将GitLab部署到Kubernetes集群中,以NodePort方式对外暴露服务。
5.编写.drone.yml文件,包含使用构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
6.将提供的应用的代码推送到GitLab触发构建,完成后访问该应用。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷10
第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。
图1系统架构图
表1 IP地址规划
设备名称
主机名
接口
IP地址
说明
云服务器1
Controller
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器2
Compute
eth0
172.129.x.0/24
Vlan x
eth1
自定义
自行创建
云服务器3
...
云服务器n
自定义
eth0
172.129.x.0/24
PC-1
本地连接
172.24.16.0/24
PC使用
说明:
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;
2.表中的x为工位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
任务一、私有云服务搭建任务(10分)
题目1. 基础环境搭建(5分)
1.使用提供的用户名密码,登录竞赛用的云计算平台,自行使用 CentOS7.9镜像创建两台云主机,flavor 使用 4v_8G_100G_50G 的配置,第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网段为 10.10.X.0/24,X为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配置服务器:
(1)设置控制节点主机名为controller,设置计算节点主机名为compute;
(2)修改hosts文件将IP地址映射为主机名;
2.设置controller节点可以无秘钥访问compute节点。
3.使用提供的 http 服务地址,在 http 服务下,存在 centos 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。
4.在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启动。
5.在 compute 节点上利用空白分区划分 2 个 20G 分区。
题目2. OpenStack平台搭建(5分)
本任务需要完成openstack平台的安装搭建及运维任务,表2提供了在安装过程中需要使用相关服务参数。
表2 密码
服务名称
变量
参数/密码
Mysql
root
000000
Keystone
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Keystone
DOMAIN_NAME
demo
Admin
000000
Rabbit
000000
Glance
000000
Nova
000000
Neutron
000000
Heat
000000
Zun
000000
Neutron
Metadata
000000
External Network
enp9s0(外网卡名)
1.使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本,在controller 和 compute 节点上分别安装openstack 平台的基础组件并完成相关配置。
2.使用提供的脚本框架iaas-install-mysql.sh,填充脚本,在 controller 节点上安装mariadb、 mencached、rabbitmq 等服务并完成相关配置。
3.使用提供的脚本框架 iaas-install-keystone.sh,填充脚本,在 controller 节点上安装keystone 服务并完成相关配置。
4.使用提供的脚本框架 iaas-install-glance.sh,填充脚本,在 controller 节点上安装glance服务并完成相关配置。
5.使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填充脚本,在 controller 和 compute 节点上安装 nova 服务并完成配置。
6.使用提供的脚本框架iaas-install-neutron-controller.sh 和iaas-install-neutron-compute.sh,填充脚本,在 controller 和 compute 节点上安装 neutron 服务并完成配置。
7.使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本,在 controller 节点上安装dashboard 服务并完成相关配置。
8.使用提供的脚本框架 iaas-install-designate.sh,填充脚本,安装DNS服务并完成相关配置。
9.使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充脚本,在 controller 和 compute 节点上安装 swift 服务并完成配置。
10.使用提供的脚本框架 iaas-install-cyborg.sh,填充脚本,安装Cyborg硬件加速生命周期管理服务并完成相关配置。
11.使用提供的脚本框架 iaas-install-karbor.sh,填充脚本,安装Karbor数据保护即服务服务并完成相关配置。
12.使用提供的脚本框架 iaas-install-blazar.sh,填充脚本,安装增加Blazar资源预订服务并完成相关配置。
(注:为了避免OpenStack不能成功搭建而影响后面竞赛进程,任务2-3向选手提供openstack平台,供参赛选手进行竞赛)
任务二、私有云服务运维任务(10分)
题目3. OpenStack云平台运维(10分)
1.在提供的OpenStack平台上,通过nova的相关命令创建云主机类型,名字exam,ID为1234,内存为1024,硬盘为20G,虚拟内核数量为2。并修改云平台中默认每个tenant的实例配额为20个。
2.在提供的OpenStack平台上,使用Zun组件创建容器。
3.在日常运维管理中,安装包的依赖关系冲突是经常存在的。在控制节点,安装libguestfs-tools工具的时候,会发生依赖包的冲突,请解决依赖关系的报错,完成libguestfs-tools工具的安装。
4.使用提供的OpenStack私有云平台,假设在使用过程中,发现该创建的云主机配置太低,需要调整,请修改相应配置,将dashboard界面上的云主机调整实例大小可以使用。
5.在提供的OpenStack平台上,使用ceilometer相关命令,修改名称为cpu_hi的告警状态为不生效。
6.使用manila共享文件系统服务,使manila为多租户云环境中的共享文件系统提供统一的管理服务。
7.使用Blazar服务,使得管理员可以在OpenStack中为虚拟(实例,卷等)和物理(主机,存储等)的不同资源类型提供资源预留的能力。
8.使用cloudkitty计费服务,处理来自不同监控指标后端的数据并进行计费规则创建。以达到费用核算目的。
9.在OpenStack私有云平台,创建一台云主机,编写脚本,要求可以完成数据库的定期备份,把数据库备份文件存放在/opt目录下,要求每个备份文件都已时间命名,并只保留一个月的备份文件,超过一个月的自动删除。
10.使用提供的iaas-error10镜像创建云主机,创建后的云主机内有错误的OpenStack平台,错误现象为安全组策略无法正常使用,请结合报错信息排查错误,使安全组可以正常使用。
任务三、私有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. Ansible自动化运维(5分)
使用自动化运维工具Ansible对云主机进行批量系统配置、批量程序部署、批量运行命令等运维操作。
题目5. OpenStack APIs运维开发(5分)
编写Python脚本调用OpenStack API对OpenStack云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷10
第二场次:容器云(40分)
说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。
任务一、容器云服务搭建任务(5分)
题目1. 容器云平台搭建(5分)
1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
2. 在master、node节点完成Kubernetes集群的安装。
3. 在Kubernetes集群中完成KubeVirt环境的安装。
4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
5. 使用kubectl自带排序功能列出集群内所有的Service并以name字段排序。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
云梦公司基于Spring Cloud微服务应用程序框架开发了一套快速开发平台,平台设计灵活可扩展、可移植、可应对高并发需求,并实现了全容器化部署,该平台架构图如下:
主要的技术栈如下表所示:
模块
说明
MySQL
读写分离数据库
Redis
分布式缓存服务
Register
注册中心、配置中心
Gateway
动态路由定义
Auth
授权服务提供
Upms
通用用户权限管理模块
UI
前端页面
试将Gateway组件、Auth组件、Upms组件和nginx组件按照要求进行容器化,其它组件MySQL、Redis、Register已经实现容器化,直接从仓库中拉取镜像运行容器即可。
1. 编写Dockerfile文件制作Gateway镜像,生成镜像名micro-gateway:v1.0,基于centos:7.9.2009基础镜像,安装JDK环境和Gateway服务,并设置服务自启动。
2. 编写Dockerfile文件制作Auth镜像,生成镜像名micro-auth:v1.0,基于centos:7.9.2009基础镜像,安装JDK环境和Auth服务,暴露3000端口,并设置服务自启动。
3. 编写Dockerfile文件制作Upms镜像,生成镜像名micro-upms:v1.0,基于centos:7.9.2009基础镜像,安装JDK环境和Upms服务,暴露4000端口,并设置服务自启动。
4. 编写Dockerfile文件制作UI镜像,生成镜像名micro-nginxl:v1.0,基于centos:7.9.2009基础镜像,安装nginx服务,暴露80端口,并设置服务自启动。
5. 编写docker-compose.yaml文件,使用上面构建的镜像编排部署该快速开发平台。
题目3. 基于Kubernetes构建CICD(8分)
云梦公司决定采用GitLab + Jenkins + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署(构建持续集成所需要的所有软件包在附件Jenkins_offline.tar中)。CICD应用系统架构如下:
1.在Kubernetes集群中部署Jenkins服务,将Pod的/var/jenkins_home目录以hostPath方式挂载到宿主机/home/jenkins_home下,然后以NodePort方式暴露Jenkins服务。
2. 在Kubernetes集群中部署GitLab服务,以NodePort方式对外暴露GitLab服务。
3.在GitLab中创建公开项目SpringCloud,并配置SSH Key,实现通过SSH方式克隆项目。
4. 在GitLab中配置webhook,测试其连通性。
5. 新建一个流水线任务,并编写构建项目所需的流水线脚本,脚本包含编译代码、构建镜像、上传镜像、拉取镜像、发布服务等几个阶段。
6. 将SpringCloud项目中的代码推送到Gitlab中触发构建,完成服务的自动发布。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
1. 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)Pod名称:exam;
(2)该Pod包含2个容器:redis和nginx;
(3)容器redis使用镜像redis,容器nginx使用镜像nginx。
完成后使用该YAML文件创建Pod。
2.在master节点/root目录下编写YAML文件limit.yaml创建LimitRange,具体要求如下:
(1)LimitRange名称:mem-limit-range;
(2)要求命名空间exam内容器默认资源请求为256Mi内存、500m CPU;
(3)要求命名空间exam内容器资源请求上限为800Mi内存、3000m CPU;
(4)内存和CPU超售的比率均为2。
完成后使用该YAML文件创建LimitRange。
3. 在master节点/root目录下编写YAML文件role.yaml创建集群角色,具体要求如下:
(1)集群角色名称:deployment-clusterrole
(2)资源对象:eployment、Daemonset、StatefulSet;
(3)对以上资源拥有create、update和delete的权限。
完成后使用该YAML文件创建集群角色。
4. 在master节点/root目录下编写YAML文件secrect.yaml创建Secret,具体要求如下:
(1)Secret名称:mysecret;
(2)内含password字段,值为chinaskill。
完成后使用该YAML文件创建Secret。
5. 在master节点/root目录下编写YAML文件daemonset.yaml创建DaemonSet,具体要求如下:
(1)DaemonSet名称:nginx;
(2)镜像:nginx:latest;
(3)确保其在集群的每个节点上运行一个Pod,且不覆盖当前环境中的任何traints。
完成后使用该YAML文件创建DaemonSet。
6. Kubernetes集群支持Pod优先级抢占,通过抢占式调度策略来实现同一个Node节点内部的Pod对象抢占。在master节点/root目录下编写YAML文件schedule.yaml创建一个抢占式调度策略,具体要求如下:
(1)抢占式调度策略名称:high-scheduling;
(2)优先级为1000000;
(3)不要将该调度策略设置为默认优先调度策略。
完成后使用该YAML文件创建抢占式调度策略。
7. 在master节点/root目录下编写YAML文件部署MySQL服务,具体要求如下:
(1)Service名称:myqsl;Deployment名称:myqsl;
(2)镜像:mysql:5.7;
(3)数据库用户:root;密码:123456;
(4)挂载一个持久卷mysql-pv,拥有2GB的存储空间,路径为/ mnt/data;
(5)以NodePort方式将3306端口对外暴露为33306.
完成后使用该YAML文件部署MySQL服务。
8. 在Kubernetes集群中完成Bookinfo示例程序的部署,然后在master节点/root目录下编写YAML文件istio.yaml创建基于权重的路由,具体要求如下:
(1)虚拟服务名称:reviews;
(2)将30%的流量路由到reviews服务的v1版本;
(3)将70%的流量路由到reviews服务的v3版本。
完成后使用该YAML文件创建权重路由。
题目5. Kubernetes基于虚拟机的运维(4分)
根据Garnter的最新预测,到2022年将会有75%的生产应用全部跑在容器环境之上。由于技术原因,某公司的多数架构仍运行在虚拟机上。经过技术调研,KubeVirt支持完全的虚拟机纳管,可以完美迁移因为内核版本过于陈旧或者及语言问题而无法迁移到容器的部分应用,所以公司决定将业务全部迁移到Kubernetes集群中。
1.使用提供的OpenStack qcow2镜像,在master节点/root目录下编写YAML文件vm.yaml创建VM,具体要求如下:
(1)VM名称:exam-vm;
(2)将SSH密钥放入Kubernetes密钥并注入到VM中;
(3)内存为2Gi,CPU为1000m。
完成后使用该YAML文件创建VM。
2. 在KubeVirt中启用快照/恢复支持功能,然后在master节点/root目录下编写YAML文件snap.yaml为虚拟实例exam创建一个快照,具体要求如下:
(1)快照名称:exam-snap;
(2)创建快照超时时间:1min。
完成后使用该YAML文件为虚拟实例exam创建快照。
3. 在master节点/root目录下编写YAML文件vmi-role.yaml创建RBAC角色,具体要求如下:
(1)角色名称:vm-role;
(2)该角色对VM拥有get、delete、create、update、patch和list权限。
完成后使用该YAML文件创建角色。
任务四、容器云运维开发任务(10分)(本任务为4-6道Kubernetes APIs 运维开发题,只公布考试范围,不公布赛题)
题目6. Kubernetes APIs 运维开发(10分)
编写Python脚本,调用Kubernetes API实现对Kubernetes容器云平台进行管理和运维。
2022年全国职业院校技能大赛(高职组)
“云计算”赛项赛卷10
第三部分、公有云(30分)
环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。
选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
任务一、公有云服务搭建任务(10分)
题目1. 使用公有云组件搭建应用服务(10分)
在公有云上购买所需部署Filerun网盘系统组件,完成以下搭建内容。
1.使用本地提供的Centos qcow2镜像文件,上传至公有云镜像服务中。
2.按照2核CPU、4G内存、40G硬盘,使用所上传的镜像创建两台名为ChinaSkill-node-1和ChinaSkill-data-2的云主机使用创建的intnetX虚拟私有云网络配置。
3.在公有云中购买云数据库ChinaSkill-mysql-1,并配置读写分离节点。
4. 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署Filerun的Web服务,使用chinaskill-filerun.sql以云数据库读写分离地址为数据源运行Filerun。
5.创建虚拟专用网络VPN网关VPN-gateway,并创建一个VPN连接VPN-connect。
6.在公有云平台中购买弹性公网IP地址,带宽大小为10Mbit/s。并将此弹性公网IP地址绑定至VPN-gateway网关中。
7.创建一个云存储对象server_data,容量为100G。
8.将server_data挂载到ChinaSkill-node-1和ChinaSkill-node-2节点中,使得两节点可以共用此存储。
任务二、公有云服务运维任务(10分)
题目2. 在已搭建服务的基础上优化公有云服务(5分)
根据所部署的Filerun网盘系统,对其架构进行优化,完成以下操作。
1.创建一个负载均衡器chinaskill-elb,将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为80。
2.将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
3.新建一个弹性伸缩启动配置template-exam,以ChinaSkill-node-1的云服务器配置进行创建,使用chinaskill-image镜像。创建一个伸缩组as-exam,关联启动配置template-exam,并将创建的云服务器添加至负载均衡chinaskill-elb中。
4.为云主机设置自定义告警模板策略,监控云主机CPU使用率超过80%的告警,内存使用率超过80%的告警。以邮件形式提醒管理员
5.配置云审计功能,对访问Filerun网盘系统的用户身份进行验证,并检测其上传文件内容是否包含关键词。
6.在ChinaSkill-node-1云服务器中安装ICAgent工具,通过日志管理API接入,将ChinaSkill-node-1云服务器中的日志上报至云日志服务中。
7. 根据所部署的Filerun网盘系统,使用混合云架构对其进行优化,在私有云平台中申请VPN服务,与公有云中VPN网关连接,使私有云平台中的云主机与公有云中服务通过VPN虚拟专用网络的方式进行数据传输。
8.在私有云平台中申请一台云服务器NFS,部署NFS服务,将公有云弹性文件服务中存储的数据以备份的形式保存至私有云中。
9.通过日志管理API接入,将Filerun网盘系统中收集的日志信息存储与私有云平台Filerun-log云服务器中。
题目3.公有云云容器引擎集群运维(5分)
管理公有云云容器引擎集群,完成以下搭建与运维操作。
1.创建一个容器集群kcloud,集群版本:v1.19.10;集群节点使用子网:intnetX;
2.在kcloud集群中安装helm命令,使用提供的mychart-0.1.0.tgz模板包,修改模板代码使外部可通过节点地址进行访问。在模板市场中上传我的模板mychart,在kcloud集群中安装名为nginx的模板实例。
3.使用Helm将Drone服务安装到kcloud集群中,通过NodePort方式对外暴露服务。
4.配置GitLab配置清单文件,使用Helm将Gitlab服务安装到kcloud集群中,以NodePort方式对外暴露服务。
5.编写.drone.yml文件,包含使用构建镜像、推送镜像、拉取镜像、发布服务等几个步骤。
6.将提供的应用的代码推送到GitLab触发构建,完成后访问该应用。
任务三、公有云运维开发任务(10分)(本任务只公布考试范围,不公布赛题)
题目4. 公有云自动化运维(10分)
使用公有开发APIs,编写Python脚本调用公有云API完成公有运维和管理。
2022年全国职业院校技能大赛高职组 智能财税赛项模拟赛题(Word版): 这是一份2022年全国职业院校技能大赛高职组 智能财税赛项模拟赛题(Word版),文件包含92022高职组智能财税竞赛赛题九docx、62022高职组智能财税竞赛赛题六docx、52022高职组智能财税竞赛赛题五docx、12022高职组智能财税竞赛赛题一docx、42022高职组智能财税竞赛赛题四docx、102022高职组智能财税竞赛赛题十docx、32022高职组智能财税竞赛赛题三docx、82022高职组智能财税竞赛赛题八docx、72022高职组智能财税竞赛赛题七docx、22022高职组智能财税竞赛赛题二docx等10份试卷配套教学资源,其中试卷共2286页, 欢迎下载使用。
2022年全国职业院校技能大赛高职组 中药传统技能赛项模拟赛题(Word版): 这是一份2022年全国职业院校技能大赛高职组 中药传统技能赛项模拟赛题(Word版),文件包含2022年大赛性状+真伪试题-第7套-GA-答案docx、2022年大赛性状+真伪试题-第6套-GA-答案docx、2022年大赛性状+真伪试题-第1套-GA-答案docx、2022年大赛性状+真伪试题-第2套-GA-答案docx、2022年大赛性状+真伪试题-第9套-GA-答案docx、2022年大赛性状+真伪试题-第3套-GA-答案docx、2022年大赛性状+真伪试题-第8套-GA-答案docx、2022年大赛性状+真伪试题-第4套-GA-答案docx、2022年大赛性状+真伪试题-第10套-GA-答案docx、2022年大赛性状+真伪试题-第5套-GA-答案docx、1-2022年中药显微鉴别题库范围评分标准混合粉末doc、2022年大赛性状+真伪试题-第6套-GAdocx、2022年大赛性状+真伪试题-第7套-GAdocx、2022年大赛性状+真伪试题-第8套-GAdocx、2022年大赛性状+真伪试题-第9套-GAdocx、中药炮制操作评分标准docx、2022年大赛性状+真伪试题-第10套-GAdocx、中药调剂操作评分标准docx、2022GS-4Adoc、2022年大赛性状+真伪试题-第3套-GAdocx、2022GS-10Bdoc、2022GS-10Bdoc、2022GS-1Adoc、2022GS-1Adoc、2022GS-1Bdoc、2022GS-1Bdoc、2022GS-2Adoc、2022GS-2Adoc、2022年大赛性状+真伪试题-第4套-GAdocx、2022GS-2Bdoc、2022GS-2Bdoc、中药制剂分析操作评分标准docx、2022年大赛性状+真伪试题-第2套-GAdocx、2022GS-3Adoc、2022年大赛性状+真伪试题-第1套-GAdocx、2022GS-3Adoc、2022GS-3Bdoc、2022GS-3Bdoc、2-2022年中药显微鉴别评分标准docx、2022GS-4Adoc、2022年中药制剂分析操作题库范围评分标准样题doc、2022年中药性状+真伪评分标准docx、2022GS-10Adoc、2022年大赛性状+真伪试题-第5套-GAdocx、2022GS-6Bdoc、2022GS-7Adoc、2022GS-5Adoc、2022GS-4Bdoc、2022GS-10Adoc、2022GS-5Bdoc、2022GS-5Bdoc、2022GS-6Adoc、2022GS-6Adoc、2022GS-5Adoc、2022GS-6Bdoc、2022GS-7Adoc、2022GS-7Bdoc、2022GS-7Bdoc、2022GS-8Adoc、2022GS-8Adoc、2022GS-8Bdoc、2022GS-8Bdoc、2022GS-9Adoc、2022GS-9Adoc、2022GS-9Bdoc、2022GS-9Bdoc、中药药剂操作评分标准docx、2022GS-4Bdoc、2022年大赛中药炮制试题-第7套-GBdocx、2022年大赛中药炮制试题-第8套-GBdocx、2022年大赛中药炮制试题-第8套-GAdocx、中药审方理论评分标准docx、2022年大赛中药炮制试题-第7套-GAdocx、2022年大赛中药炮制试题-第6套-GBdocx、2022年大赛中药炮制试题-第6套-GAdocx、2022年大赛中药炮制试题-第5套-GBdocx、2022年大赛中药炮制试题-第5套-GAdocx、2022年大赛中药炮制试题-第9套-GAdocx、2022年大赛中药药剂试题-第8套doc、2022年大赛中药炮制试题-第9套-GBdocx、2022年大赛中药药剂试题-第10套doc、2022年大赛中药药剂试题-第1套doc、2022年大赛中药药剂试题-第2套doc、2022年大赛中药药剂试题-第3套doc、2022年大赛中药药剂试题-第4套doc、2022年大赛中药药剂试题-第5套doc、2022年大赛中药药剂试题-第6套doc、2022年大赛中药药剂试题-第7套doc、2022年大赛中药药剂试题-第9套doc、2022年大赛中药炮制试题-第4套-GAdocx、2022年大赛中药炮制试题-第4套-GBdocx、2022GT-9Adocx、2022年大赛中药炮制试题-第3套-GBdocx、2022GT-2Cdocx、2022GT-4Ddocx、2022GT-4Cdocx、2022GT-4Bdocx、2022GT-4Adocx、2022GT-3Ddocx、2022GT-3Cdocx、2022GT-3Bdocx、2022GT-3Adocx、2022GT-2Ddocx、2022GT-2Bdocx、2022GT-5Bdocx、2022GT-2Adocx、2022GT-1Ddocx、2022GT-1Cdocx、2022GT-1Bdocx、2022GT-1Adocx、2022GT-10Ddocx、2022GT-10Cdocx、2022GT-10Bdocx、2022GT-10Adocx、2022GT-5Adocx、2022GT-5Cdocx、2022年大赛中药炮制试题-第3套-GAdocx、2022GT-8Ddocx、2022年大赛中药炮制试题-第2套-GBdocx、2022年大赛中药炮制试题-第2套-GAdocx、2022年大赛中药炮制试题-第1套-GBdocx、2022年大赛中药炮制试题-第1套-GAdocx、2022年大赛中药炮制试题-第10套-GBdocx、2022年大赛中药炮制试题-第10套-GAdocx、2022GT-9Ddocx、2022GT-9Cdocx、2022GT-9Bdocx、2022GT-8Cdocx、2022GT-5Ddocx、2022GT-8Bdocx、2022GT-8Adocx、2022GT-7Ddocx、2022GT-7Cdocx、2022GT-7Bdocx、2022GT-7Adocx、2022GT-6Cdocx、2022GT-6Bdocx、2022GT-6Adocx、2022GT-6Ddocx等139份试卷配套教学资源,其中试卷共235页, 欢迎下载使用。
2022年全国职业院校技能大赛高职组 软件测试赛项模拟赛题(Word版): 这是一份2022年全国职业院校技能大赛高职组 软件测试赛项模拟赛题(Word版),共66页。试卷主要包含了环境搭建及系统部署,单元测试,设计测试文档,功能测试,自动化测试,性能测试,接口测试等内容,欢迎下载使用。