第一场次:私有云(30分)
某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。
系统架构如图1所示,IP地址规划如表1所示。


说明:
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 密码
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分)
- 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
- 在master、node节点完成Kubernetes集群的安装。
- 在Kubernetes集群中完成KubeVirt环境的安装。
- 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
- 集群部署完成后,为集群创建一个永久时效的Token。
任务二、容器云应用部署任务(15分)
题目2. 容器云应用(7分)
该公司基于Hyperf基础框架开发了一个微服务DEMO,并实现全容器化部署,该应用技术栈如下:
其整体架构如下:
请将Zipkin组件、MariaDB组件、ElasticSearch组件和nginx组件按照要求进行容器化,其它组件Hyperf、Redis、RabbitMQ已经实现容器化,直接从仓库中拉取镜像运行容器即可。
- 编写Dockerfile基于centos:7.9.2009基础镜像制作Zipkin镜像,镜像名为chinaskill-zipkin:v1.0,要求安装Zipkin服务,暴露9411端口,并设置服务自启动。
- 编写Dockerfile基于centos:7.9.2009基础镜像制作MySQL镜像,镜像名为chinaskill-mysql:v1.0,要求安装MariaDB服务,设置其字符编码为UTF-8,暴露3306端口,并设置服务自启动。
- 编写Dockerfile基于centos:7.9.2009基础镜像制作Nginx镜像,镜像名为chinaskill-nginx:v1.0,要求安装Nginx服务,暴露80端口,并设置服务自启动。
- 编写Dockerfile基于centos:7.9.2009基础镜像制作ElasticSearch镜像,镜像名为chinaskii-elk:v1.0,要求安装JDK环境和ElasticSearch服务,并设置服务自启动。
- 编写docker-compose.yaml文件,使用上述镜像编排部署基于Hyperf基础框架的微服务DEMO。
题目3. 基于Kubernetes构建CICD(8分)
该公司决定采用GitLab + GitLab CI + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD应用系统架构如下:
1.在maser节点上完成Helm3工具的安装。
- 使用Helm3工具完成GitLab服务在Kubernetes集群上的部署,使用NodePort方式将GitLab服务对外暴露30081端口。
3.使用Helm3工具在Kubernetes集群上完成GitLab-Runner服务的部署,并完成Shared Runner在GitLab中的注册。
- 在GitLab中开启Container Registry,并完成Environment variables的设置。
5.将Kubernetes集群添加到GitLab中,并命名为cicd-cluster。
- 编写.gitlab-ci.yml自动化脚本,要求整个构建流程包含test、build、release、review和deploy几个阶段。
7.将提供的项目包推送到GitLab仓库并触发自动构建,完成代码编译、镜像构建、镜像推送和服务发布的自动化实现。
任务三、容器云服务运维任务(10分)
题目4. Kubernetes基于容器的运维(6分)
- Kubelet使用证书进行Kubernetes API的认证,证书默认有效期为1年。请配置Kubelet证书轮换,当证书即将过期时,将自动生成新的秘钥,并从Kubernetes API申请新的证书。
- 为Kubernetes集群节点配置资源配置最小回收量,要求当节点可用内存不足1Gi或者可用文件系统空间不足10Gi时开始驱逐节点上的Pod。
- 在master节点/root目录下编写YAML文件pod.yaml创建Pod,具体要求如下:
(1)Pod名称:nginx;
(2)容器默认请求100M内存;
(3)容器最多请求200M内存。
完成后使用该YAML文件创建Pod。
- 在master节点/root目录下编写YAML文件replicaset.yaml创建ReplicaSet。具体要求如下:
(1)ReplicaSet名称:nginx;
(2)命名空间:default;
(3)副本数:3;
(4)镜像:nginx。
完成后使用该YAML文件创建ReplicaSet
- 在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。
- 创建命名空间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。
- 在master节点/root目录下编写YAML文件api.yaml扩展一个Kubernetes API,具体要求如下:
(1)API Server名称:crontabs;
(2)作用域:整个集群。
完成后使用该YAML文件创建API Server。
- 在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。
- 在master节点/root目录下编写YAML文件vmi-service.yaml为VMI内部应用创建Service,具体要求如下:
(1)Service名称:vmi-service
(2)访问方式:NodePort;
(3)将VMI的80端口对外暴露为30080。
完成后使用该YAML文件创建Service。
- 在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,并配置读写分离节点。
- 利用提供的软件包源,在ChinaSkill-node-1和ChinaSkill-node-2中部署WordPress的Web服务,使用chinaskill-wordpress.sql以云数据库读写分离地址为数据源运行WordPress。
- 设置云主机的防火墙策略,保证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完成公有运维和管理。
表2 密码