2023 年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷评分文件

说明:文件搬运于全国职业院校技能大赛官网

【赛程名称】第一场:模块一 私有云、模块二 容器云

​ 项目需求:某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台建设, 平台聚焦“DevOps 建运一体”和“数据驱动产品开发”,拟采用开源 OpenStack 搭建企业 内部私有云平台,开源 Kubernetes 搭建云原生服务平台,选择国内主流公有云平台服务, 基于数字化平台底座,面向业务开发云应用产品。

​ 拟将该任务交给工程师 A 与 B,分工协助完成云平台服务部署、云应用开发、云系统运 维等任务,系统架构如下: 系统架构如图1所示,IP 地址规划如表1所示。

image-20240421170200867

image-20240421170215287

说明:

​ 1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资 源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题; 同组 2 名选手的账号密码一样。

​ 2.表中的x为赛位号;在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;

​ 3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;

​ 4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;

​ 5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息 时,请确认自己的 IP 地址,用户名和密码。

【任务 1】私有云服务搭建[5 分]

【适用平台】私有云

【题目 1】1.1.1 基础环境配置[0.2 分]

​ 1.控制节点主机名为 controller,设置计算节点主机名为 compute;

​ 2.hosts 文件将 IP 地址映射为主机名。

​ 使用提供的用户名密码,登录提供的 OpenStack 私有云平台,在当前租户下,使用 CentOS7.9 镜像,创建两台云主机,云主机类型使用 4vCPU/12G/100G_50G 类型。当前租户 下默认存在一张网卡,自行创建第二张网卡并连接至 controller 和 compute 节点(第二张 网卡的网段为 10.10.X.0/24,X 为工位号,不需要创建路由)。自行检查安全组策略,以 确保网络正常通信与 ssh 连接,然后按以下要求配置服务器:

  • 设置控制节点主机名为 controller,设置计算节点主机名为 compute;

  • 修改 hosts 文件将 IP 地址映射为主机名;

    完成后提交控制节点的用户名、密码和 IP 地址到答题框。

 1.查看控制节点名字为 controller,查看 hosts 文件中有正确的主机名和 IP 映射计 0.1 分
 2.控制节点正确使用两块网卡计 0.1 分
【题目 2】1.1.2 Yum 源配置[0.2 分]

​ 使用提供的 http 服务地址,分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。

​ 使用提供的 http 服务地址,在 http 服务下,存在 centos7.9 和 iaas 的网络 yum 源, 使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文件 http.repo。

​ 完成后提交控制节点的用户名、密码和 IP 地址到答题框。

1.查看/etc/yum.repos.d/http.repo 文件,有正确的 baseurl 路径,计 0.2 分
【题目 3】1.1.3 配置无秘钥 ssh[0.2 分]

​ 配置 controller 节点可以无秘钥访问 compute 节点。

​ 配置 controller 节点可以无秘钥访问 compute 节点,配置完成后,尝试 ssh 连接 compute 节点的 hostname 进行测试。

​ 完成后提交 controller 节点的用户名、密码和 IP 地 址到答题框。

1.查看控制节点允许计算节点无秘钥登录计 0.2 分
【题目 4】1.1.4 基础安装[0.2 分]

​ 在控制节点和计算节点上分别安装 openstack-iaas 软件包。

​ 在控制节点和计算节点上分别安装 openstack-iaas 软件包,根据表 2 配置两个节点脚 本文件中的基本变量(配置脚本文件为/etc/openstack/openrc.sh)。

image-20240421170702376

image-20240421170724603

​ 完成后提交控制节点的用户名、密码和 IP 地址到答题框。

1.检查环境变量文件配置正确计 0.2 分
【题目 5】1.1.5 数据库安装与调优[0.5 分]

​ 在控制节点上使用安装 Mariadb、RabbitMQ 等服务。并进行相关操作。

​ 在 controller 节点上使用 iaas-install-mysql.sh 脚本安装 Mariadb、Memcached、 RabbitMQ 等服务。安装服务完毕后,修改/etc/my.cnf 文件,完成下列要求:

  • 设置数据库支持大小写;

  • 设置数据库缓存 innodb 表的索引,数据,插入数据时的缓冲为 4G;

  • 设置数据库的 log buffer 为 64MB;

  • 设置数据库的 redo log 大小为 256MB;

  • 设置数据库的 redo log 文件组为 2。

  • 修改 Memcached 的相关配置,将内存占用大小设置为 512MB,调整最大连接数参数为 2048;

  • 调整 Memcached 的数据摘要算法(hash)为 md5;

    完成后提交控制节点的用户名、密码和 IP 地址到答题框。

    1.检查数据库和 memcached 配置正确计 0.5 分
    
    
【题目 6】1.1.6 Keystone 服务安装与使用[0.5 分]

​ 在控制节点上安装 Keystone 服务并创建用户。

​ 在 controller 节点上使用 iaas-install-keystone.sh 脚本安装 Keystone 服务。

​ 然后创建 OpenStack 域 210Demo,其中包含 Engineering 与 Production 项目,在域 210Demo 中创建组 Devops,其中需包含以下用户:

  • Robert 用户是 Engineering 项目的用户(member)与管理员(admin),email 地址 为:Robert@lab.example.com。

  • George 用 户 是 Engineering 项 目 的 用 户 ( member ) , email 地址为: George@lab.example.com。

  • William 用户是 Production 项目的用户(member)与管理员(admin),email 地址 为:William@lab.example.com。

  • John 用户是 Production 项 目 的 用 户 ( member ) , email 地 址 为 : John@lab.example.com。 完成后提交控制节点的用户名、密码和 IP 地址到答题框。

    1.检查平台中的 210Demo 域中是否有题目所需的用户与项目,正确计 0.5 分
    
    
【题目 7】1.1.7 Glance 安装与使用[0.5 分]

​ 在控制节点上安装 Glance 服务。上传镜像至平台,并设置镜像启动的要求参数。

​ 在 controller 节点上使用 iaas-install-glance.sh 脚本安装 glance 服务。然后使 用提供的 coreos_production_pxe.vmlinuz 镜像(该镜像为 Ironic Deploy 镜像,是一个 AWS 内核格式的镜像,在 OpenStack Ironic 裸金属服务时需要用到)上传到 OpenStack 平 台中,命名为 deploy-vmlinuz。完成后提交控制节点的用户名、密码和 IP 地址到答题框。

1.检查 glance 服务安装正确计 0.1 分
2.检查 deploy-vmlinuz 镜像内核格式正确计 0.4 分
【题目 8】1.1.8 Nova 安装与优化[0.5 分]

​ 在控制节点和计算节点上分别安装 Nova 服务。安装完成后,完成 Nova 相关配置。

​ 在 controller 节点和 compute 节点上分别使用 iaas-install-placement.sh 脚本、 iaas-install-nova -controller.sh 脚本、iaas-install-nova-compute.sh 脚本安装 Nova 服务。在 OpenStack 中,修改相关配置文件,修改调度器规则采用缓存调度器,缓存主机 信息,提升调度时间。配置完成后提交controller点的用户名、密码和IP地址到答题框。

1.检查 nova 服务调度器配置正确计 0.5 分
【题目 9】1.1.9 Neutron 安装[0.2 分]

​ 在控制和计算节点上正确安装 Neutron 服务。

​ 使用提供的脚本 iaas-install-neutron-controller.sh 和 iaas-install-neutroncompute.sh,在 controller 和 compute 节点上安装 neutron 服务。完成后提交控制节点的 用户名、密码和 IP 地址到答题框。

1.检查 neutron 服务安装正确计 0.1 分
2.检查 neutron 服务的 linuxbridge 网桥服务启动正确计 0.1 分
【题目 10】1.1.10 Dashboard 安装[0.5 分]

​ 在控制节点上安装 Dashboard 服务。安装完成后,将 Dashboard 中的 Django 数据修改 为存储在文件中。

​ 在 controller 节点上使用 iaas-install-dashboad.sh 脚本安装 Dashboard 服务。 安装完成后,修改相关配置文件,完成下列两个操作:

  • 使得登录 Dashboard 平台的时候不需要输入域名;
  • 将 Dashboard 中的 Django 数据修改为存储在文件中。 完成后提交控制节点的用户名、密码和 IP 地址到答题框。
1.检查 Dashboard 服务中 Djingo 数据修改为存储在文件中配置正确计 0.22.检查 Dashboard 服务中登陆平台不输入域名配置正确计 0.3
【题目 11】1.1.11 Swift 安装[0.5 分]

​ 在控制节点和计算节点上分别安装 Swift 服务。安装完成后,将 cirros 镜像进行分片 存储。

​ 在控制节点和计算节点上分别使用 iaas-install-swift-controller.sh 和 iaasinstall-swift-compute.sh 脚本安装 Swift 服务。安装完成后,使用命令创建一个名叫 examcontainer 的容器,将 cirros-0.3.4-x86_64-disk.img 镜像上传到 examcontainer 容 器中,并设置分段存放,每一段大小为 10M。完成后提交控制节点的用户名、密码和 IP 地 址到答题框。

1.检查 swift 服务安装正确计 0.3 分
2.分段上传 cirros 镜像正确计 0.2 分
【题目 12】1.1.12 Cinder 创建硬盘[0.5 分]

​ 在控制节点和计算节点分别安装 Cinder 服务,请在计算节点,对块存储进行扩容操作。

​ 在 控 制 节 点 和 计 算 节 点 分 别 使 用 iaas-install-cinder-controller.sh 、 iaasinstall-cinder-compute.sh 脚本安装 Cinder 服务,请在计算节点,对块存储进行扩容操 作,即在计算节点再分出一个 5G 的分区,加入到 cinder 块存储的后端存储中去。完成后 提交计算节点的用户名、密码和 IP 地址到答题框。

1.检查 cinder 后端存储扩容成功计 0.5 分
【题目 13】1.1.13 配置主机禁 ping [0.5 分]

​ 修改 controller 节点的相关配置文件,配置 controller 节点禁止其他节点可以 ping 它。 配置完之后。完成后提交 controller 节点的用户名、密码和 IP 地址到答题框。

1.检查系统配置文件正确计 0.5 分

【任务 2】私有云服务运维[15 分]

【适用平台】私有云

【题目1】1.2.1 Heat 编排-创建用户[1分]

​ 编写 Heat 模板 create_user.yaml,创建名为 heat-user 的用户。

​ 使用自己搭建的OpenStack 私有云平台,使用heat 编写摸板(heat_template_version: 2016-04-08)创建名为”chinaskills”的 domain,在此 domain 下创建名为 beijing_group的租户,在此租户下创建名为 cloud 的用户,将此文件命名及保存在 /root/user_create.yml,完成后提交 controller 点的用户名、密码和 IP 地址到答题框。

(竞赛系统会执行yaml 文件,请确保执行的环境)

1.执行 heat 模板成功创建出域和租户以及用户正确计 1 分
【题目2】1.2.2 KVM 优化[1分]

​ 在OpenStack平台上修改相关配置文件,启用-device virtio-net-pci in kvm。
​ 在自行搭建的OpenStack私有云平台或赛项提供的all-in-one平台上,修改相关配置文件,启用-device virtio-net-pci in kvm,配置完成后提交控制节点的用户名、密码和IP地址到答题框。

1.检查 nova 服务 KVM 配置正确计 1 分
【题目3】1.2.3 NFS 对接Glance 后端存储[1 分]

​ 使用OpenStack私有云平台,创建一台云主机,安装NFS服务,然后对接Glance后端存储。
​ 使用赛项提供的OpenStack私有云平台,创建一台云主机(镜像使用CentOS7.9,flavor使用带临时磁盘50G的),配置该主机为nfs的server端,将该云主机中的50G磁盘通过/mnt/test目录进行共享(目录不存在可自行创建)。然后配置controller节点为nfs的client端,要求将/mnt/test目录作为glance后端存储的挂载目录。配置完成后提交controller控制节点的用户名、密码和IP地址到答题框。

1.检查挂载共享目录正确计 0.5 分
2.检查共享目录用户合组正确计 0.5 分
【题目4】1.2.4 Redis 主从[1分]

​ 使用赛项提供的OpenStack私有云平台,创建两台云主机,配置为redis的主从架构。
​ 使用赛项提供的OpenStack私有云平台,申请两台CentOS7.9系统的云主机,使用提供的http源,在两个节点安装redis服务并启动,配置redis的访问需要密码,密码设置为123456。然后将这两个redis节点配置为redis的主从架构。配置完成后提交redis主节点的用户名、密码和IP地址到答题框。

1.检查 redis 主从集群部署正确计 1 分
【题目5】1.2.5 Linux 系统调优-脏数据回写[1分]

​ 修改系统配置文件,要求将回写磁盘的时间临时调整为60秒。
​ Linux系统内存中会存在脏数据,一般系统默认脏数据30秒后会回写磁盘,修改系统配置文件,要求将回写磁盘的时间临时调整为60秒。完成后提交controller节点的用户名、密码和IP地址到答题框。


【题目6】1.2.6 Glance 调优[1 分]

​ 在OpenStack平台中,修改相关配置文件,将子进程数量相应的配置修改成2。
​ 在OpenStack平台中,glance-api处理请求的子进程数量默认是0,只有一个主进程,请修改相关配置文件,将子进程数量相应的配置修改成2,这样的话有一个主进程加2个子进程来并发处理请求。完成后提交控制节点的用户名、密码和IP地址到答题框。

1.检查 glance 服务进程配置正确计 1 分
【题目7】1.2.7 Ceph 部署[1 分]

​ 使用提供的ceph.tar.gz软件包,安装ceph服务并完成初始化操作。
​ 使用提供的ceph-14.2.22.tar.gz软件包,在OpenStack平台上创建三台CentOS7.9系统的云主机,使用这三个节点安装ceph服务并完成初始化操作,第一个节点为mon/osd节点,第二、三个节点为osd节点,部署完ceph后,创建vms、images、volumes三个pool。完成后提交第一个节点的用户名、密码和IP地址到答题框。

1.检查 ceph 集群状态为 OK 正确计 0.5 分
2.检查 ceph 集群的 osd 正确计 0.5 分
【题目8】1.2.8 Glance 对接Ceph 存储[1 分]

​ 修改OpenStack平台中Glance服务的配置文件,将Glance后端存储改为Ceph存储。
​ 在自己搭建的OpenStack平台中修改glance服务的相关配置文件,将glance后端存储改为ceph存储。也就是所以的镜像会上传至ceph的images pool中。通过命令使用cirros-0.3.4-x86_64-disk.img镜像文件上传至云平台中,镜像命名为cirros。完成后提交controller节点的用户名、密码和IP地址到答题框。

1.检查 glance 服务存储配置正确计 1 分
【题目9】1.2.9 Cinder 对接Ceph 存储[1 分]

​ 修改OpenStack平台中cinder服务的配置文件,将cinder后端存储改为Ceph存储。
​ 修改OpenStack平台中cinder服务的相关配置文件,将cinder后端存储改为ceph存储。使创建的cinder块存储卷在ceph的volumes pool中。配置完成后,在OpenStack平台中使用创建卷cinder-volume1,大小为1G。完成后提交controller节点的用户名、密码和IP地址到答题框。

1.检查 cinder 服务存储配置正确计 1 分
【题目10 】1.2.10 Nova 对接Ceph 存储[1 分]

​ 修改OpenStack平台中Nova服务的配置文件,将Nova后端存储改为Ceph存储。
​ 修改OpenStack平台中nova服务的相关配置文件,将nova后端存储改为ceph存储。使nova所创建的虚拟机都存储在ceph的vms pool中。配置完成后在OpenStack平台中使用命令创建云主机server1。完成后提交controller节点的用户名、密码和IP地址到答题框。

1.检查 nova 服务存储配置正确计 0.5 分
2.检查云主机在 vms pool 中正确计 0.5 分
【题目11 】1.2.11 私有云平台优化:系统网络优化[1 分]

​ 使用自行创建的OpenStack云计算平台,配置控制节点的网络缓存,使得每个UDP连接(发送、 接受)保证能有最小358 KiB最大460 KiB的buffer,重启后仍然生效。配置完成后提交controller控制节点的用户名、密码和IP地址到答题框。

1.检查网络缓存的系统配置正确计 1 分
【题目12 】1.2.12 私有云平台排错:Neutron 网络组件排错[2 分]

​ 使用赛项提供的chinaskill-error01镜像创建一台云主机(云主机的登录用户名为root,密码为Abc@1234),该云主机中存在错误的网络服务,错误现象为dashboard不能查看网络相关的页面,请修复neutron服务。修复完成后提交该云主机的用户名、密码和IP地址到答题框。

1.检查数据库中网络服务不存在冲突计 2 分
【题目13】1.2.13 私有云平台排错:Cinder 卷组件报错[2 分]

​ 使用赛项提供的chinaskill-error01镜像创建一台云主机(云主机的登录用户名为root,密码为Abc@1234),该云主机中存在错误的卷服务,错误现象为无法正常使用cinder命令,请修复卷服务,然后使用命令创建名为chinaskill-cinder的卷,大小为2G。修复完成后提交该云主机的用户名、密码和IP地址到答题框。

1.检查卷组件命令可以正常使用计 2 分

【任务3】私有云运维开发[10 分]

【适用平台】私有云

【题目1】1.3.1 编写Shell 一键部署脚本[1.0 分]

​ 编写一键部署nfs云网盘应用系统。
​ 在OpenStack私有云平台,创建一台云主机,使用提供的软件包,在root目录下编写一键部署脚本install_owncloud.sh,要求可以一键部署owncloud云网盘应用系统。完成后提交节点的IP地址、用户名和密码到答题框。

1.检查 owncloud 服务正常启动计 1 分
【题目2】1.3.2 Ansible 服务部署:部署ELK 集群服务[2 分]

​ 编写Playbook,部署的ELK。
​ 使用赛项提供的OpenStack私有云平台,创建三台CentOS7.9系统的云主机分别命名为elk-1、elk-2和elk-3,Ansible主机可以使用上一题的环境。要求Ansible节点编写剧本,执行Ansible剧本可以在这三个节点部署ELK集群服务(在/root目录下创建install_elk目录作为ansible工作目录,部署的入口文件命名为install_elk.yaml)。具体要求为三个节点均安装Elasticserach服务并配置为Elasticserach集群;kibana安装在第一个节点;Logstash安装在第二个节点。(需要用到的软件包在HTTP服务下)完成后提交ansible节点的用户名、密码和IP地址到答题框。(考试系统会连接到ansible节点,执行ansible脚本,准备好环境,以便考试系统访问)

1.执行 yaml 文件正确计 0.5 分
2.检查 ELK 服务部署正确计 1.5 分
【题目3】1.3.3 Ansible 部署Kafka 服务[2.0 分]

​ 编写Playbook,部署的ZooKeeper和Kafka。
​ 使用提供的OpenStack私有云平台,创建4台系统为centos7.5的云主机,其中一台作为Ansible的母机并命名为ansible,另外三台云主机命名为node1、node2、node3,通过附件中的/ansible/ansible.tar.gz软件包在ansible节点安装Ansible服务;使用这一台母机,编写Ansible脚本(在/root目录下创建example目录作为Ansible工作目录,部署的入口文件命名为cscc_install.yaml),编写Ansible脚本使用roles的方式对其他三台云主机进行安装kafka集群的操作(zookeeper和kafka的安装压缩包在gpmall-single.tar.gz压缩包中,将zookeeper和kafka的压缩包解压到node节点的/opt目录下进行安装)。完成后提交ansible节点的用户名、密码和IP地址到答题框。(考试系统会连接到你的ansible节点,去执行ansible脚本,请准备好环境,以便考试系统访问)

1.执行 yaml 文件正确计 0.5 分
2.检查 Kafka 和 Zookeeper 服务部署正确计 1.5 分
【题目4】1.3.4 OpenStack 资源管理的客户端程序开发 [2 分]

​ 使用已建好的OpenStack Python运维开发环境,在root目录下创建resource_manager.py脚本,基于OpenStack资源配额管理服务封装客户端工具,resource_manager.py程序支持命令行带参数执行,命令参数要求说明如下:

  • 位置参数“command”,表示操作类型。操作类型包括“list”:标识查看所有的对象;“get”:查询指定的对象。
  • 位置参数“resource”,表示资源信息类型:类型包括 “provider”:资源提供者;“inventory”:资源库存;“usage”:资源使用情况。
  • 参数“-p或-- provider”,标识资源提供者的名称。

​ 功能要求如下:

  • 程序查询所有资源提供者,以json格式控制台输出。
    执行实例如下: python3 resource_manager.py list provider
  • 查询指定资源提供者的资源信息,以json格式控制台输出。
    执行实例如下: python3 resource_manager.py get provider -p “providername”
  • 查询指定资源提供者的资源库存信息,以json格式控制台输出。
    执行实例如下: python3 resource_manager.py get inventory -p “providername”
  • 查询指定资源提供者的资源使用信息,以json格式控制台输出。
    执行实例如下: python3 resource_manager.py get usage -p “providername”
1. 实现查询所有资源提供者的功能开发,计 0.5 分;
2. 实现查询指定资源提供者的资源信息的功能开发,计 0.5 分;
3. 实现查询指定资源提供者的资源库存信息的功能开发,计 0.5 分;
4. 实现查询指定资源提供者的资源使用信息的功能开发,计 0.5 分。
【题目5】1.3.5 OpenStack 数据库操作开发[3 分]

​ 使用已建好的OpenStack Python运维开发环境,在/root目录下创建mysql_db_manager.py脚本,基于python的sqlalchemy库进行数据库的管理,实现对OpenStack内指定服务的MariaDB数据库管理功能,实现该数据库下表创建、删除、数据插入、更新等操作(为确保检测成功,OpenStack MariaDB数据库的账户root、密码000000不要修改):
​ 该表(table)用于描述OpenStack成员信息,表结构如下:
​ 表名称"member",该表有4个字段:
​ id INTEGER 主键,自动递增;
​ name VARCHAR(256);
​ level INTEGER;
​ place varchar(256);

  • mysql_db_manager内部实现DM_Manager类,类初始化方法def init(self,db_name),参数db_name是OpenStack内部指定的某一服务数据库名称。
  • DM_Manager类实现create_table(self)方法。实现创建表功能,表指member表。
  • DM_Manager类实现insert_table_data(self,kwargs)方法。实现表中表数据插入功能,参数kwargs参数为要插入数据记录信息,key与表字段名称一致。
  • DM_Manager类实现update_table_data(self,**kwargs)方法。实现表中数据记录更新功能,参数kwargs参数为要更新数据记录信息,key与表字段名称一致。
  • DM_Manager类实现run_table_raw_sql(self, raw_sql:str): 方法,无参数。实现表中直接执行sql语句功能,raw_sql参数为sql语句。
  • DM_Manager类实现delete_table(self)方法。实现删除表功能,表指member表。
1. 完成 OpenStack 内部指定数据库链接功能,计 0.5 分;
2. 实现 OpenStack 指定数据库中创建表功能,计 0.5 分;
3. 实现指定数据库表插入数据记录功能,计 0.5 分;
4. 实现指定数据库表数据更新功能,计 0.5 分。
5. 实现通过 sql 直接操作执行数据库功能,计 0.5 分。
6. 实现删除指定数据库表功能,计 0.5 分。

【任务4 】容器云服务搭建[5 分]

【适用平台】私有云

【题目1】2.1.1 部署容器云平台[5分]

​ 使用OpenStack私有云平台创建两台云主机,云主机类型使用4vCPU/12G/100G类型,分别作为Kubernetes集群的Master节点和node节点,然后完成Kubernetes集群的部署,并完成Istio服务网格、KubeVirt虚拟化和Harbor镜像仓库的部署。
​ 完成后提交Master节点的用户名、密码和IP到答题框。

1.Kubernetes 集群部署成功得 5 分;

【任务5 】容器云服务运维[15 分

【适用平台】私有云

【题目1】2.2.1 容器化部署MariaDB [0.5分]

​ 编写Dockerfile文件构建mysql镜像,要求基于centos完成MariaDB数据库的安装和配置,并设置服务开机自启。
​ 编写Dockerfile构建镜像erp-mysql:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成MariaDB数据库的安装,设置root用户的密码为tshoperp,新建数据库jsh_erp并导入数据库文件jsh_erp.sql,并设置MariaDB数据库开机自启。
完成后提交Master节点的IP地址、用户名和密码到答题框。(需要用到的软件包:ERP.tar.gz)

1.镜像构建成功得 0.1 分;
2.数据库安装且导入数据成功得 0.4 分。
【题目2】2.2.2 容器化部署Redis [0.5分]

​ 编写Dockerfile文件构建redis镜像,要求基于centos完成Redis服务的安装和配置,并设置服务开机自启。
​ 编写Dockerfile构建镜像erp-redis:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Redis服务的安装,修改其配置文件关闭保护模式,并设置Redis服务开机自启。
​ 完成后提交Master节点的IP地址、用户名和密码到答题框。(需要用到的软件包:ERP.tar.gz)

1.镜像构建成功的 0.1 分;
2.Redis 服务安装成功且配置正确得 0.4 分。
【题目3】2.2.3 容器化部署Nginx [0.5分]

​ 编写Dockerfile文件构建nginx镜像,要求基于centos完成Nginx服务的安装和配置,并设置服务开机自启。
​ 编写Dockerfile构建镜像erp-nginx:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Nginx服务的安装,使用提供的app.tar.gz和nginx.conf启动Nginx服务,并设置开机自启。
​ 完成后提交Master节点的IP地址、用户名和密码到答题框。(需要用到的软件包:ERP.tar.gz)

1.镜像构建成功得 0.3 分;
2.Nginx 安装成功且配置正确得 0.2 分。
【题目4】2.2.4 容器化部署ERP[0.5分]

​ 编写Dockerfile文件构建erp镜像,要求基于centos完成JDK环境和ERP服务的安装与配置,并设置服务开机自启。
​ 编写Dockerfile构建镜像erp-server:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成JDK环境的安装,启动提供的jar包,并设置服务开机自启。
​ 完成后提交Master节点的IP地址、用户名和密码到答题框。(需要用到的软件包:ERP.tar.gz)

1.镜像构建成功得 0.3 分;
2.erp 环境安装正确得 0.2 分。
【题目5】2.2.5 编排部署ERP管理系统[1分]

​ 编写docker-compose.yaml文件,要求使用镜像mysql、redis、nginx和erp完成ERP管理系统的编排部署。
​ 编写docker-compose.yaml完成ERP管理系统的部署,要求定义mysql、redis、nginx和erp共四个Service,分别使用镜像erp-redis:v1.0、erp-mysql:v1.0、erp-nginx:v1.0和erp-server:v1.0,并将nginx服务的80端口映射到宿主机的8888端口。
​ 完成后提交Master节点的IP地址、用户名和密码到答题框。(需要用到的软件包:ERP.tar.gz)

1.8888 端口可以访问到 ERP 系统得 1 分
【题目6】2.2.6 部署GitLab [1分]

​ 将GitLab部署到Kubernetes集群中,设置GitLab服务root用户的密码,使用Service暴露服务,并将提供的项目包导入到GitLab中。
​ 在Kubernetes集群中新建命名空间gitlab-ci,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,设置GitLab服务root用户的密码为admin@123,将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。
​ 完成后提交Master节点的用户名、密码和IP地址到答题框。(需要用到的软件包:CICD-Runner.tar.gz)

1.GitLab 部署正确且能正常访问得 0.5 分;
2.项目导入成功得 0.5 分。
【题目7】2.2.7 部署GitLab Runner [1分]

​ 将GitLab Runner部署到Kubernetes集群中,为GitLab Runner创建持久化构建缓存目录以加速构建速度,并将其注册到GitLab中。
​ 将GitLab Runner部署到gitlab-ci命名空间下,Release名称为gitlab-runner,为GitLab Runner创建持久化构建缓存目录/home/gitlab-runner/ci-build-cache以加速构建速度,并将其注册到GitLab中。
​ 完成后提交Master节点的用户名、密码和IP地址到答题框。(需要用到的软件包:CICD-Runner.tar.gz)

1.GitLab Runner 部署成功得 0.2 分;
2.GitLab Runner 注册成功得 0.3 分;
3.GitLab Runner 持久化配置成功得 0.5 分。
【题目8】2.2.8 部署GitLab Agent [1分]

​ 将Kubernetes集群添加到GitLab项目中指定名称和命名空间。
​ 将Kubernetes集群添加到demo-2048项目中,并命名为kubernetes-agent,项目命名空间选择gitlab-ci。
​ 完成后提交Master节点的用户名、密码和IP地址到答题框。(需要用到的软件包:CICD-Runner.tar.gz)


【题目9】2.2.9 构建CI/CD [2分]

​ 编写流水线脚本触发自动构建,要求基于GitLab项目完成代码的编译、镜像的构建与推送,并自动发布应用到Kubernetes集群中。
​ 编写流水线脚本.gitlab-ci.yml触发自动构建,具体要求如下:

  • 基于镜像maven:3.6-jdk-8构建项目的drone分支;
  • 构建镜像的名称:demo:latest;
  • 将镜像推送到Harbor仓库demo项目中;
  • 将demo-2048应用自动发布到Kubernetes集群gitlab-ci命名空间下。
    完成后提交Master节点的用户名、密码和IP地址到答题框。(需要用到的软件包:CICD-Runner.tar.gz)
1.项目编译成功得 0.5 分;
2.镜像构建成功得 0.5 分;
3.服务发布成功得 0.5 分;
4.服务能正常访问得 0.5 分。
【题目 10】2.2.10 服务网格:创建 VirtualService [1 分]

​ 将 Bookinfo 应用部署到 default 命名空间下,为 Bookinfo 应用创建一个名为reviews的 VirtualService,要求来自名为 Jason 的用户的所有流量将被路由到 reviews 服务的 v2版本。
​ 完成后提交 Master 节点的 IP 地址、用户名和密码到答题框。(需要用到的软件包:ServiceMesh.tar.gz)

1.流量正确走向 Jason 用户得 1 分。
【题目11】2.2.11 KubeVirt运维:创建VMI [1分]

​ 使用提供的镜像在default命名空间下创建一台VMI,名称为exam,指定VMI的内存、CPU、网卡和磁盘等配置,并开启Sidecar注入。
​ 将提供的镜像cirros-0.5.2-x86_64-disk.img转换为docker镜像cirros:v1.0,然后使用镜像cirros:v1.0镜像在default命名空间下创建一台vmi,名称为vmi-cirros,内存为1024M。
​ 完成后提交Master节点的IP地址、用户名和密码到答题框。

1.注入成功得 0.5 分。
2.vmi 创建成功并且可正常访问的 0.5 分。
【题目12 】2.2.12 容器云平台优化:使用审计日志[2分]

​ 启用审计日志可以帮助集群管理员快速的定位问题。请启用Kubernetes集群的审计日志,要求以JSON格式保存审计日志并输出到/etc/kubernetes/audit-logs/audit.log文件中,日志最多保留10天,单个日志文件不超过500M。然后编写审计策略文件/etc/kubernetes/audit-policy/policy.yaml,要求在日志中用RequestResponse级别记录Pod变化,并记录kube-system中ConfigMap变更的请求消息体。
​ 完成后提交master节点的用户名、密码和IP地址到答题框。

1.审计日志开启成功得 1 分。
2.日志成功输出得 1 分。
【题目13 】2.2.13 容器云平台排错:容器引擎报错[1.5 分]

​ 使用赛项提供的chinaskill-k8s-error01镜像创建一台云主机(云主机的登录用户名为root,密码为Abc@1234),该云主机中存在错误的容器服务,错误现象为无法正常使用crictl ps -l命令,请修复容器服务。修复完成后提交该云主机的用户名、密码和IP地址到答题框。

1.containerd 服务正常启动得 1.5 分。
【题目14 】2.2.14 容器云平台排错:DNS 服务报错[1.5 分]

​ 使用赛项提供的chinaskill-k8s-error01镜像创建一台云主机(云主机的登录用户名为root,密码为Abc@1234),该云主机中存在错误的DNS服务,错误现象为coredns一直处于CrashLoopBackOff状态,请修复CoreDNS服务,并将并发上限更改为5000。修复完成后提交该云主机的用户名、密码和IP地址到答题框。

1.CoreDNS 服务为 Running 得 1 分。
2.并发上限配置正确得 0.5 分。

【任务6 】容器云运维开发[10 分

【适用平台】私有云

【题目1】2.3.1 管理service资源[2分]

​ Kubernetes Python运维脚本开发,使用Restful APIs方式管理service服务。
使用已经部署完成的Kubernetes两节点云平台,在Master节点安装Python 3.7.3的运行环境与依赖库。
​ 使用python request库和Kubernetes Restful APIs,在/root目录下,创建api_manager_service.py文件,要求编写python代码,代码实现以下任务:

  • 首先查询查询服务service,如果service名称“nginx-svc”已经存在,先删除。
  • 如果不存在“nginx-svc”,则使用service.yaml文件创建服务。
  • 创建完成后,查询该服务的信息,查询的body部分以json格式的文件输出到当前目录下的service_api_dev.json文件中。
  • 然后使用service_update.yaml更新服务端口。
  • 完成更新后,查询该服务的信息,信息通过控制台输出,并通过json格式追加到service_api_dev.json文件后。
    编写完成后,提交该云主机的用户名、密码和IP地址到答题框。
  • 1.执行 api_manager_service.py 文件,成功创建 Service 资源得 1 分
    2.查询 Service 资源,配置正确得 1 分。
    
    
【题目2】2.3.2 管理Pod服务[3分]

​ Kubernetes Python运维脚本开发-使用SDK方式管理Pod服务。
使用已经部署完成的Kubernetes两节点云平台,在Master节点安装Python 3.7.3的运行环境与依赖库。
​ 使用Kubernetes python SDK的“kubernetes”Python库,在/root目录下,创建sdk_manager_deployment.py文件,要求编写python代码,代码实现以下任务:

  • 首先使用nginx-deployment.yaml文件创建deployment资源。
  • 创建完成后,查询该服务的信息,查询的body部分通过控制台输出,并以json
    格式的文件输出到当前目录下的deployment_sdk_dev.json文件中。
    编写完成后,提交该云主机的用户名、密码和IP地址到答题框。
1.执行 sdk_manager_deployment.py 脚本,成功创建 deployment 资源计 1.5 分
2.检查创建的 deployment 资源,配置信息无误计 1.5 分
【题目3 】2.3.3 Kubernetes CRD 自定义资源的管理封装[3 分]

​ Kubernetes容器云平台通过CRD机制进行自定义APIs资源拓展,将chinaskill-cloud-*.yaml共5个文件复制到root目录下。参考chinaskill-cloud-11.yaml文件,编写CRD文件“chinaskill-cloud-crd.yaml”,放在root目录下。
​ 说明:Competition CRD命名要求如下:
​ Kind为 Competition
​ Plural为competitions
​ singular为competition
​ shortNames为cpt
​ session含义是赛程
​ content含义为竞赛内容。
​ 使用已建好的Kubernetes Python运维开发环境,在/root目录下创建crd _manager.py脚本。crd_manager.py编写基于Kubernetes SDK 实现Competition CRD的创建、删除与事件变化监听。
​ crd_manager.py内部实现3个方法:

  • 实现方法create_crd(),实现对Competition CRD的创建。
  • 实现方法delete_crd(),实现对Competition CRD的删除。
  • 实现方法watch_crd_object(),实现对CRD资源的变化事件监听,将监听到Competition CRD被删除,将event信息输出到控制台,并停止监听。
1. 基于 Kubernetes Python SDK,实现 CRD 自定义资源创建功能,计 1 分;
2. 基于 Kubernetes Python SDK,实现 CRD 自定义资源删除功能,计 1 分;
3. 基于 Kubernetes Python SDK,实现 CRD 自定义资源 watch 与 event 监听功能,遍历CRD 删除 event 并输出,计 1 分;
【题目4 】2.3.4 Kubernetes CRD 的自定义对象管理封装[2 分]

​ 基于前一题目的Competition CRD,使用已建好的Kubernetes Python运维开发环境,在/root目录下创建crd_object_manager.py脚本。crd_object_manager.py编写基于Kubernetes SDK 实现Competition CRD的自定义对象的创建、删除与事件变化监听。
​ crd_manager.py内部实现3个方法:

  • 实现方法create_crd_object(ymlfile:str),实现CRD的自定义对象的创建,
    yamlfile为CRD的自定义对象yaml文件。
  • 实现方法delete_crd_object(crd_object_name:str),实现创建CRD功能,crd_object_name为CRD的自定义对象名称。
  • 实现方法watch_crd_object(crd_object_name:str),实现CRD的自定义对象变化事件监听,当监听到CRD的自定义对象的名称为crd_object_name被删除时,将event信息输出到控制台,并停止监听。
1. 基于 Kubernetes Python SDK,实现 CRD 的自定义对象创建功能,计 0.5 分;
2. 基于 Kubernetes Python SDK,实现 CRD 的自定义对象删除功能,计 0.5 分;
3. 基于 Kubernetes Python SDK,实现 CRD 的自定义对象 watch 与 event 监听功能,遍历 CRD 的自定义对象删除 event 并输出,计 1 分;

【赛程名称】模块三 公有云

【任务1 】公有云服务搭建[5 分]

【适用平台】华为云

【题目1 】3 .1.1 私有网络管理[0.3 分]

​ 在公有云中完成虚拟私有云的创建。
​ 具体要求如下:

  • 在上海一区域进行创建操作;
  • 创建一个名为intnetX的内部网络:IP地址为172.16.0.0/16;
  • 创建子网名称为intnetX-server:IP地址为172.16.1.0/24;
  • 创建子网名称为intnetX-mysql:IP地址为172.16.2.0/24;
    完成创建后,提交当前的AK(SecretId)、SK(SecretKey)和intnetX网络的ID到答题框。
1.查看 vpc 名字为 intnetX 正确计 0.1 分
2.查看子网名为 intnetX-server 和子网网段正确计 0.1 分
3.查看子网名为 intnetX-mysql 和子网网段正确计 0.1 分
【题目2 】3 .1.2 云实例管理[0.5 分]

登录华为云平台,创建两台云实例。
具体要求如下:

  • 计费模式:按需计费;
  • 地域:上海一;
  • CPU架构:x86计算;
  • 规格:c7.xlarge.2;
  • 镜像:CentOS 7.5 64位;
  • 系统盘:高IO 50G硬盘;
  • 公网带宽:按带宽计费,5Mbps;
  • 实例名称:ChinaSkill-node-1、ChinaSkill-node-2;
  • 登录方式:使用密码登录,密码自定义。
    创建完成后,提交当前的AK(SecretId)、SK(SecretKey)和ChinaSkill-node-1的实例ID到答题框。
1.查看云实例使用的类型是否正确计 0.2 分
2.查看云实例使用的云硬盘是否正确计 0.3 分
【题目3 】3 .1.3 数据库管理[0.2 分]

​ 使用intnetX-mysql网络创建三台云服务器chinaskill-sql-1、chinaskill-sql-2和chinaskill-sql-3(系统使用CentOS7.9),使用提供的压缩文件mongodb-repo.tar.gz中的软件包源,在这三台云服务器上部署MongoDB数据库服务。
​ 配置完成后提交连接chinaskill-sql-1节点的用户名、密码和公网IP地址到答题框。

1.查看数据库安装正确计 0.2 分
【题目4 】3 .1.4 主从数据库[0.5 分]

​ 在chinaskill-sql-1、chinaskill-sql-2和chinaskill-sql-3云服务器中配置MongoDB一主二从数据库+副本集操作,chinaskill-sql-1节点为主节点,其余节点为从节点,配置MongoDB集群名称为cloud。
​ 完成后提交连接chinaskill-sql-1节点的用户名、密码和公网IP地址到答题框。

1.查看 mongo 数据库 rs 集群状态正确计 0.5 分
【题目5 】3 .1.5 node 环境管理[0.5 分]

​ 使用提供的压缩文件,安装Node.js环境。
​ 使用提供的压缩文件rocketchat-cloud.tar.gz中软件包源,在ChinaSkill-node-1部署nodejs,根据所提供的rocket.chat所需要求安装nodejs对应版本。配置完成后提交
连接ChinaSkill-node-1节点的用户名、密码和公网IP地址到答题框。

1.查看 node 版本为 v12.16.1 正确计 0.5 分
【题目6 】3 .1.6 安全组管理[0.5 分]

​ 根据要求,创建一个安全组。
​ 具体要求如下:

  • 名称:intnetX-security;
  • 允许策略:只放行源地址为172.16.1.0/24访问27017端口;
  • 允许策略:只放行源地址为172.16.1.0/24使用ping命令访问;
  • 关联实例:将intnetX-security安全组关联至所创建的数据库中;
    创建完成后,提交当前的AK(SecretId)、SK(SecretKey)和安全组ID到答题框。
1.查看安全组是否被创建计 0.1 分
2.查看安全组 tcp 策略是否按要求创建计 0.2 分
3.查看安全组 icmp 策略是否按要求创建计 0.2 分
【题目7 】3 .1.7 RocketChat 上云 0.5 分]

​ 使用http服务器提供文件,将Rocket.Chat应用部署上云。
​ 使用http服务器提供的压缩文件rocketchat-cloud.tar.gz中的RocketChat软件包,在ChinaSkill-node-1中部署RocketChat的Web服务。使用chinaskill-sql-1的MongoDB为后端数据库,设置RocketChat服务访问端口为3000。完成Rocketchat系统上云后,将ChinaSkill-node-1节点的用户名、密码和公网IP地址到答题框。

1.查看 RocketChat 服务正常计 0.2 分
2.查看前端页面是否正常返回计 0.3 分
【题目8 】3 .1.8 N AT 网关[0.5 分]

​ 根据要求创建一个公网NAT网关。
​ 具体配置如下:

  • 名称为:kcloud-nat;
  • 虚拟私有云:intnetX;
  • 子网:intnetX-server;
  • 规则:内部子网地址访问外网;
  • 设置Chinaskill-node-1云服务器3000端口转换为外部3000服务端口。
    创建完成后提交当前的AK(SecretId)、SK(SecretKey)和NAT网关的ID到答题框。
1.查看虚拟私有云中是否存在访问外网 NAT 策略计 0.5 分
【题目9 】3 .1.9 云备份[0.5 分]

​ 创建一个云服务器备份存储库名为server_backup,容量为100G。将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
​ 完成后,将当前的AK(SecretId)、SK(SecretKey)和存储库ID到答题框。

1.查看云服务器备份是否正确计 0.5 分
【题目10 】3 .1.10 负载均衡器[0.5 分]

​ 根据要求创建一个负载均衡器chinaskill-elb。
​ 将ChinaSkill-node-1和ChinaSkill-node-2加入负载均衡的后端。设置一个可用的公网服务IP,服务端口为3000。配置监听器,监听3000端口。对浮动公共IP进行Web访问测试。完成后,提交当前的AK(SecretId)、SK(SecretKey)和负载均衡器的ID到答题框。

1.查看负载均衡器参数是否正确计 0.5 分
【题目11 】3 1 1 弹性伸缩管理[0.5 分]

​ 根据要求新建一个弹性伸缩启动配置。
​ 具体要求如下:

  • 启动配置名称:template-exam;
  • 计费模式:按量计费;
  • 地域:上海一;
  • 镜像:chinaskill-image;
  • 登录方式:使用密码登录,密码自定义。

​ 创建一个伸缩组,具体要求如下:

  • 名称:as-exam;
  • 最小伸缩数:1;起始实例数:1;最大伸缩数:5;
  • 启动配置:template-exam;
  • 使用负载均衡:chinaskill-elb;
  • 移出策略:移出最旧的实例。

​ 为伸缩组as-exam新建告警触发策略,具体要求如下:

  • 如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
  • 如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
  • 如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
  • 如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
    创建完成后提交当前的AK(SecretId)、SK(SecretKey)和伸缩组的实例ID到答题框。
1.查看弹性伸缩参数是否正确计 0.5 分

【任务2 】公有云服务运维[10 分]

【适用平台】华为云

【题目1 】3 .2.1 云容器引擎[1 分

​ 在公有云上,按照要求创建一个x86架构的容器云集群。
​ 具体要求如下:

  • 集群名称:kcloud;
  • 集群版本:v1.25;
  • 地域:上海一;
  • 集群管理规模:50节点;
  • 节点使用子网:intnetX-server;
  • 节点预留容器IP上限:64;
  • 容器网段:10.10.0.0/16。

​ 创建一个集群节点,节点配置信息要求如下:

  • 节点名称:kcloud-server;
  • 节点规格:c6s.xlarge.2
  • 节点:EulerOS 2.9
  • 使用docker容器引擎

​ 创建完成后提交当前的AK(SecretId)、SK(SecretKey)和集群的ID到答题框。

1.查看云容器是否被正确创建 cce.0.kcloud.v1.25.10.10.0.0/16 计 1 分
【题目2 】3 .2.2 云容器管理[1 分

​ 使用插件管理在kcloud容器集群中安装dashboard可视化监控界面。
​ 完成后,提交dashboard访问地址到答题框。

1.查看 dashboard 首页,有 Kubernetes Dashboard 返回计 1 分
【题目3 】3 .2.3 使用kubectl 操作集群[2 分

​ 在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
​ 完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。

1.使用 kubectl 命令查询集群是否正确计 2 分
【题目4 】3 .2.4 安装helm[2 分

​ 在k8s集群中创建chartmuseum命名空间,编写yaml文件部署ChartMuseum服务。
​ 使用提供的helm软件包(软件包为helm-v3.3.0-linux-amd64.tar.gz在http服务下),在kcloud集群中安装helm服务。
​ 完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。

1.查看 helm 是否被正确安装,查看 helm 版本是否为 v3.3.0 计 2 分
【题目5 】3 .2.5 chartmuseum 仓库部署[2 分

​ 在k8s集群中创建chartmuseum命名空间,编写yaml文件部署ChartMuseum服务。
​ 在k8s集群中创建chartmuseum命名空间,编写yaml文件在chartmuseum命名空间中使用chartmuseum:latest镜像创建本地私有chart仓库,设置其仓库存储目录为宿主机的/data/charts目录。编写service.yaml文件,为chart私有仓库创建Service访问策略,
定义其为ClusterIP访问模式。编写完成后启动chartmuseum服务。提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。

1.检测 chartmuseum 服务反馈是否正确计 2 分
【题目6 】3 .2.6 WordPress 应用部署[2 分

​ 根据提供的chart包wordpress.tgz部署WordPress服务。
​ 根据提供的chart包wordpress-13.0.23.tgz部署wordpress服务,根据chart包中内容创建wordpress所需要的pv,并修改其访问模式为NodePort。使用修改后的chart包创建wordpress服务。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。

1.查看 wordpress 前端页面是否正确计 2 分

【任务3 】公有云运维开发[10 分

【适用平台】华为云

【题目1 】3 .3.1 开发环境搭建[1 分

​ 创建一台云主机,并登录此云服务器,基于云服务器Python3.6.8运行环境,安装SDK依赖库。
​ 通过华为云控制台,选择北京四区域,创建一台 x86 架构,“按需计费”的2核,4G,系统盘50G的云实例,实例名为chinaskill,选择镜像为CentOS 7.9 64bit(40GB),分配独立的公网IP,带宽选择按使用流量计费5M。登录此云服务器,在云服务器Python3.6.8环境上,安装华为云最新版本SDK的依赖库,包括弹性云服务、虚拟私有云、镜像服务、容器云引擎、云数据库的python库。
​ 完成后提交“chinaskill”开发运行环境云主机的用户名、密码和 IP 地址到答题框。

1.检查云主机开发环境,正确计 1 分
【题目2】3.3.2 密钥对管理[2分]

​ 编写Python代码,实现密钥对的创建。
​ 在云服务器的/root/huawei/目录下编写create_keypair.py文件,使用SDK编写
Python代码,创建华为云的秘钥对,具体要求为:

  • 秘钥对名称:chinaskills_keypair;
  • 如果秘钥对已经存在,代码中需要先删除;
  • 输出此秘钥对详细信息。

​ 完成后提交云服务器节点的用户名、密码和IP地址到答题框。

1.执行 Python 文件,成功创建出 keypair 并输出详细信息得 2 分。
【题目3】3.3.3 云硬盘管理[2分]

​ 调用SDK云硬盘管理的方法,实现云主机的的增删查改。
​ 在/root/huawei目录下编写create_block_store.py文件,使用SDK编写Python代码,调用创建华为云的云硬盘,具体要求如下:

  • 云硬盘可用区域:cn-north-4a
  • 云硬盘名称:chinaskills_volume
  • 云硬盘规格和大小:超高IO,100G
  • 设置云硬盘共享
  • 设置云硬盘加密,加密秘钥为默认的KMS密钥
  • 如果云硬盘已经存在,代码中需要先删除
  • 输出此云硬盘的详细信息(状态要求为available)

​ 完成后提交云服务器节点的用户名、密码和IP地址到答题框。

1.执行 Python 文件,成功创建出云硬盘并输出详细信息得 2 分
【题目4】3.3.4 云主机管理[3分]

​ 调用SDK云主机管理的方法,实现云主机的的增删查改。
​ 使用已建好的运维开发环境,在/root/huawei目录下创建ecs_manager.py脚本,完成ECS云主机管理,ecs_manager.py程序支持命令行参数执行。
​ 提示说明:华为云主机支持安装所需Python库。提交前答案前,需安装所开发程序所依赖的Python库。

  • 程序支持根据命令行参数,创建1个云主机。
    位置参数“create”,表示创建;
    参数“-i 或–input”,格式为json格式文本的云主机的名称、镜像名称2个信息。其他参数同上述开发环境云主机一致。
    创建待成功,再返回查询该云主机的信息,结果以json格式输出到控制台。
    参考执行实例如下:
    python3 /root/huawei/ecs_manager.py create --input '{ “name”: " chinaskill001", " imagename": “imageid”} ’
  • 支持查询给定具体名称的ECS云主机查询。
    位置参数“get”,表示查询ECS;
    参数“-n 或 --name”支持指定名称ECS查询,类型为string。
    参数“-o 或 --output”支持查询该ECS信息输出到文件,格式为json格式。
  • 程序支持查询目前区域账号下所有的ECS云主机。
    位置参数“getall”,表示查询所有ECS云主机;
    参数“-o 或–output”支持输出到文件,格式为yaml格式。
  • 支持删除指定名称的云主机。
    位置参数“delete”,表示删除一个ECS云主机;返回response,通过控制台输出。
    参数“-n或–name”支持指定名称查询,类型为string。

​ 完成后提交“chinaskill开发运行环境云主机”的用户名、密码和 IP 地址到答题框。

1.执行 ecs_manager.py 脚本,指定 create 和配置参数,成功创建 1 台云主机,计 1 分
2.执行 ecs_manager.py 脚本,指定 get 和配置参数,成功查询具体名称云主机,计 1 分
3.执行 ecs_manager.py 脚本,指定 getall 和配置参数,成功查询目前区域账号下所有
的云主机,计 1 分
4.执行 ecs_manager.py 脚本,指定 delete 和配置参数,成功删除指定的云主机,计 1分

【题目5 】3.3.5 基于FastAPI 框架封装华为云VPC 服务Restful APIs 接口[2 分]

​ 使用已建好的运维开发环境,可用区为华北-北京4,在/root/huaweicloud_fastapi目录下创建main.py文件,基于FastAPI框架,完成虚拟私有云VPC管理服务的封装,端口为7045。
​ 提示说明:华为云主机支持安装所需Python库。提交前答案前,需安装所开发程序所依赖的Python库。

  • 封装创建接口,路径为/cloud_vpc/create_vpc,参数格式为{“name”: “”,“cidr”: “”},name为VPC名称,cidr为虚拟私有云下可用子网的范围;方法为POST,返回数据类型为JSON类型。
  • 封装单个VPC查询接口,路径为/cloud_vpc/vpc/{vpc_name},路径中{vpc_name}为待查询VPC;方法为GET,返回数据类型为JSON类型。
  • 封装服务查询接口,要求可以查询到所有VPC,路径为/cloud_vpc/vpc;方法为GET,返回的数据类型JSON类型的列表类型。
  • 封装更新VPN名称接口,路径为/cloud_vpc/update_vpc,参数格式为
    {“new_name”: “”,“old_name”: “”},new_name为VPC新名称,old_name为待删除的VPN名称;方法为PUT,返回JSON类型的更新后数据。
  • 封装删除接口,接口名为/cloud_vpc/delete_vpc,参数格式为{“vpc_name”: “”},vpc_name为VPC新名称;方法为DELETE,返回JSON类型的删除后的数据。
    功能编写完成后,手工启动Restful服务,再提交检测。
1.创建接口执行成功得 0.5 分。
2.查询接口执行成功得 0.5 分。
3.更新接口执行成功得 0.5 分。
4.删除接口执行成功得 0.5 分。

【任务4 】边缘计算系统运维[10 分]

【适用平台】私有云

【题目1 】4 .1.1 KubeEdge cloudcore 云端模块部署与配置[3 分]

​ 在本地http文件服务器中下载k8s-allinone-v1.22.1.qcow2镜像(该镜像启动后内置一个完整的kubernetes服务)并完成下列操作:

  • 上传该镜像至公有云OBS存储桶中;
  • 使用该镜像文件创建为私有镜像;
  • 使用该镜像创建一台云主机,该云主机作为KubeEdge的云端节点。

​ 云主机申请完成之后,在提供的OBS访问域名中,下载软件包kubernetes_kubeedge.tar到云端节点并部署KubeEdge1.11边缘计算系统,在云端节点部署KubeEdge cloudcore云端模块、启动cloudcore服务并配置该服务可被systemd管理。完成后提交云端节点的IP地址、用户名和密码到答题框。

1.cloudcore 服务正常启动得 1.5 分
2.cloudStream 端口正常启动得 1.5 分
【题目2 】4 .1.2 KubeEdge edgecore 边端模块部署与配置[4 分]

​ 在本地OpenStack环境中申请两台CentOS7.9虚拟机做为KubeEdge的边缘端节点。主机名分别为edge-node1、edge-node2。在http文件服务器中下载kubernetes_kubeedge.tar软件包,使用该软件包在该虚拟机部署KubeEdge edgecore边端模块,并启动edgecore服务。加入成功之后,启用metrics监控服务。
​ 完成后提交云端节点的IP地址、用户名和密码到答题框。

1.edgecore 服务正常启动得 2 分。
2.边缘节点加入到云端得 2 分。
【题目3 】4 .1.3 KubeEdge 应用部署 部署计数器应用 3 分]

​ 利用搭建好的边缘计算平台,在云端节点上使用提供的相关镜像(k8simage目录下)和yaml文件(kubeedge-counter-demo目录下),自行编写DeviceModel、Device资源,
要求如下:
​ DeviceModel名字为counter-model;
​ 属性为status,类型为字符串,存储模式为读写模式,默认值为空;
​ Device名字为counter;
​ 引用counter-model设备模型;
​ 将此设备通过节点选择器与edge-node1节点进行绑定;
​ 在status字段中的twins字段定义属性名称为status、理想值为“OFF”、真实值为“0”;
​ 编写完成后,按照顺序分别部署好DeviceModel、Device以及云端计数应用控制器和计数应用。部署完成后,将计数器打开。
​ 完成后提交云端节点的用户名、密码和IP到答题框。

1.Device 与 DeviceModel 配置正确得 1.5 分。
2.计数器服务部署成功得 1.5 分。

【任务5 】边缘计算云应用开发[5.0 分]

【适用平台】私有云

【题目1 】5.1.1 开发环境构建与用户注册服务开发[1 分]

​ 使用华为云已搭建好的KubeEdge环境,安装Python 3.7.3运行环境,并安装开发所需的依赖包,使用提供的mongoRepo.tar.gz软件包在边端安装MongoDB数据库,设置数据库为任何机器都可以连接登录。
​ 开发环境搭建好之后,将提供的代码包导入到Linux服务器root目录下,并打开fastapi_user工程目录进行用户管理服务开发,服务端口为8046,运行服务后,注册名为chinaskill的用户,密码为Abc@1234,手动启动代码运行服务。代码编写完成后提交该云主机的用户名、密码和IP地址到答题框。

1.环境搭建成功得 0.5 分。
2.服务启动后用户注册成功得 0.5 分。
【题目2 】5.1.2 AI 检测服务与网关服务开发[1 分]

​ 使用现有的开发环境,将提供的代码包导入到Linux服务器root目录下,打开fastapi_ai_pcb工程目录,基于YOLO5与已训练的模型实现PCB缺陷AI识别服务,fastapi框架来定义PCB图片的缺陷检测接口,调用接口时,需要指定device实例名称和上传缺陷图片,当识别到缺陷图片后,返回图片base64编码后的数据、模型的名字、当前的上传时间、以及识别坐标的位置信息和实例名称。
​ 然后打开fastapi_gateway工程目录,基于fastapi-gateway开源框架实现网关服
务,AI PCB微服务端口为8055,微服务网关端口30850,通过这个网关来访问用户管理服务和AI PCB识别服务,手动启动AI PCB和网关服务。
​ AI接口接口路径为:/detect/pcb_detect,参数传递到路径接口上,参数名为device_id。
​ 识别图片在工程目录中的runs目录里。
​ 代码编写完成后提交该云主机的用户名、密码和IP地址到答题框。

1.识别代码编写正确得 0.5 分。
2.服务启动后功能正常使用得 0.5 分。
【题目3 】5.1.3 设备与设备模型管理服务开发[1 分]

​ 使用现有的开发环境,将提供的代码包导入到Linux服务器root目录下,打开fastapi_cloud_edge工程目录,基于FastAPI框架和Kubernetes SDK实现了一组API,主要针对KubeEdge拓展的CRD的资源进行访问封装,微服务端口为8045。

  • 完善设备模型管理服务,要求如下:
    • 定义获取DeviceModel资源接口,接口名为/devicemodel/devicemodel,方法为GET;
    • 定义获取单个DeviceModel接口,接口名为/devicemodel/{name},方法为GET;
    • 定义创建DeviceModel接口,接口名为/devicemodel/devicemodel,方法为POST, 参数格式为{“name”: “”, “properties”: “”},name为DeviceModel的名字,properties为DeviceModel更新的属性内容,类型为列表类型;
    • 定义设备模型同步接口,接口名为/devicemodel/devicemodel,方法为PUT,参数格式为{“name”: “”, “properties”: “”},name为DeviceModel的名字,properties为DeviceModel创建的属性内容,类型为列表类型;
    • 定义删除DeviceModel资源接口,接口名为/device/devicemodel,可以删除指定DeviceModel,参数格式为{“name”: “”},name为DeviceModel的名字,方法为DELETE。
  • 完善设备管理服务,要求如下:
    • 定义获取所有的device资源,接口名为/device/device,方法为GET;
    • 定义获取单个device,接口名为/device/{name},方法为GET;
    • 定义设备同步接口,接口名为/device/device,参数格式为{“name”: “”,“desired”: {}},name为更新设备的名字,desired为更新设备的内容,内容格式为
      JSON格式,方法为PUT;
    • 定义创建device接口,接口名为/device/device,参数格式为{“name”:“”,“dmName”: “”,“nodeName”: “”},name为device的名字,dmName为DeviceModel的名字,nodeName为边缘节点名字,方法为POST;
    • 定义删除device接口,可以删除指定的device资源,接口名为/device/device,参数格式为{“name”: “”},名字为要删除的device名字,方法为DELETE。

​ 手动启动设备与设备模型管理服务。
​ 代码编写完成后提交该云主机的用户名、密码和IP地址到答题框。

1.设备代码编写正确得 0.5 分。
2.服务启动后接口可以正常使用得 0.5 分。
【题目4 】5.1.4 云边数据协同开发[1 分]

​ 使用现有的开发环境,将提供的代码包导入到Linux服务器root目录下,打开fastapi_cloud_edge工程目录,在前面几道题的基础之上,对pcb_data_manager.py文件完善代码,要求如下:
​ 将数据模型上传到数据库中,并返回该模型在数据库中的ID,若有相同模型则不上传;
​ 定义接收边缘消息程序;
​ 云端接收边端MQTT主题里所发送的数据,将数据进行解析,存储到MongoDB数据库中,并对云端pcb-device设备信息进行更新。
​ 设备信息字段为pcb_model(模型名字)、pcb_status(设备状态)、pcb_result(模型在数据中的ID)、upload_time(识别图片的时间)
​ 手动启动该服务。

1.代码编写正确得 0.5 分。
2.可以正常接收数据并更新设备信息得 0.5 分。
【题目5 】5.1.5 云端节点管理开发[1 分]

​ 使用现有的开发环境,将提供的代码包导入到Linux服务器root目录下,打开fastapi_cloud工程目录,基于FastAPI框架和Kubernetes SDK实现了一组API,来进行管理云端节点和边缘节点信息的后端服务,微服务端口为8047,编码要求功能如下:
​ 定义获取云端节点信息的路由,接口为/cloud_edge_service/node/cloudnode,请求为GET,返回的数据类型为列表类型。
​ 定义获取单个节点信息的路由,接口为/cloud_edge_service/node/{node_name},请
求为GET,返回数据类型为字典类型。
​ 定义获取边缘节点信息的路由,接口为/cloud_edge_service/node/edgenode,请求为GET,返回数据类型为列表类型。
​ 定义节点资源使用情况路由,接口为/cloud_edge_service/metrics/node/{node_name},请求为GET,返回获取到的资源使用情况,将任意一台边缘节点的主机名存储到/root/name.txt文件里。
​ 手动启动云端节点管理服务。

1.节点代码编写正确得 0.5 分。
2.服务启动后接口可以正常使用得 0.5 分。
  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021百度全国职业院校技能大赛高职“gz-2021029电子产品设计及制作”赛项赛是一项专注于电子产品设计和制作的比赛。这个赛项旨在提高参赛选手对电子产品设计理论和实践的理解以及技能应用能力。 在比赛中,选手们将面临一系列与电子产品设计相关的任务和挑战。他们将需要运用自己的技术和专业知识,通过装和调试电子元件,设计和制作出满足特定功能和需求的电子产品原型。 参赛选手需要具备扎实的电子产品设计基础知识,熟悉各类电子元器件的工作原理和特性,能够独立进行电路设计和PCB布线。他们还需要熟悉相关的软件工具,掌握使用CAD软件进行电路绘制和仿真的方法,能够进行电路分析和故障排除。 此外,参赛选手还需要有良好的团队合作和沟通能力,能够与队友紧密配合,共同完成项目的各个阶段。他们还需要在规定的时间内按要求完成项目,并展示项目的功能和效果。 通过参加这个比赛,选手们能够锻炼自己的电子产品设计与制作能力,提升自己的创新思维和解决问题的能力。此外,他们还可以通过与其他参赛选手和专家的交流和互动,了解当前电子产品设计和制作领域的最新发展动态,拓宽自己的专业视野。 总之,2021百度全国职业院校技能大赛高职“gz-2021029电子产品设计及制作”赛项赛是一个重要的电子产品设计和制作竞赛,旨在提高参赛选手的技能水平以及对电子产品设计的理论和实践的理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值