第一场次:私有云(30分)

某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、 企业应用集中管理、统一安全认证和授权等管理。

系统架构如图1所示,IP地址规划如表1所示。

图1系统架构图
图1系统架构图
表1 IP地址规划
表1 IP地址规划

说明:

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 密码
表2 密码

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电商应用系统架构图如下:

2022年全国职业院校技能大赛(高职组) “云计算”赛项赛卷2

请将以上组件按照要求进行容器化。

  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构建CICD8分)

该公司决定采用GitLab + Jenkins + Helm + Harbor + Kubernetes架构来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成CICD环境部署。CICD完整流程如下:

2022年全国职业院校技能大赛(高职组) “云计算”赛项赛卷2

  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。

  1. 在master节点/root目录下编写YAML文件创建Pod,具体要求如下:

(1)Pod名称:exam;

(2)镜像:nginx;

(3)Volume名称为cache-volume,将其/data目录挂载到宿主机/data目录下。

完成后使用该YAML文件创建Pod。

  1. 在master节点/root目录下编写YAML文件nginx-deployment.yaml创建Deployment,具体要求如下:

(1)Deployment名称:nginx;

(2)保证其副本在每个节点上运行,且不覆盖节点原有的Tolerations。

完成后使用该YAML文件创建Deployment。

  1. 在master节点/root目录下编写YAML文件nginx-service.yaml为上一题的Deployment创建一个Service,具体要求如下:

(1)Service名称:nginx;

(2)以ClusterIP方式访问服务。

完成后使用该YAML文件创建Service。

  1. 在master节点/root目录下编写YAML文件quota.yaml创建StorageQuota,具体要求如下:

(1)StorageQuota名称:storagequota;

(2)限制命名空间exam的PVC数目为10;

(3)限制命名空间exam累计存储容量为20Gi。

完成后使用该YAML文件创建StorageQuota。

  1. 在master节点/root目录下编写YAML文件pv.yaml创建PV,具体要求如下:

(1)PV名称:pv-local;

(2)回收策略:Delete;

(3)访问模式:RWO;

(4)挂载路径:node节点/data/k8s/localpv;

(5)卷容量:5G。

完成后使用该YAML文件创建PV。

  1. 在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。

  1. 在KubeVirt中启用快照/恢复支持功能,然后在master节点/root目录下编写YAML文件snap.yaml为虚拟实例exam创建一个快照,具体要求如下:

(1)快照名称:exam-snap;

(2)创建快照超时时间:1min。

完成后使用该YAML文件为虚拟实例exam创建快照。

  1. 在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完成公有运维和管理。

 

相关新闻

联系我们

027-87870986

在线咨询:点击这里给我发消息

邮件:931234110@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信