2023 年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷 B(容器云)

server/2024/9/25 19:15:17/

#需要资源(软件包及镜像)或有问题的,可私聊博主!!!

#需要资源(软件包及镜像)或有问题的,可私聊博主!!!

#需要资源(软件包及镜像)或有问题的,可私聊博主!!!

容器云

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

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

     拟将该任务交给工程师A 与B,分工协助完成云平台服务部署、云应用开发、云系统运维等任务,系统架构如下:

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

图 1 系统架构图

表 1 IP 地址规划

设备名称

主机名

接口

IP 地址

说明

云服务器1

Controller

eth0

192.168.x.0/24

Vlan x

eth1

自定义

自行创建

云服务器2

Compute

eth0

192.168.x.0/24

Vlan x

eth1

自定义

自行创建

云服务器3...云服务器 n

自定义

eth0

192.168.x.0/24

用于实操题

PC-1

本地连接

172.16.232.0/24

PC 使用

说明:

  1. 竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题;同组 2 名选手的账号密码一样。
  2. 表中的x 为赛位号;在进行OpenStack 搭建时的第二块网卡地址根据题意自行创建;
  3. 根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
  4. 考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
  5. 竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的 IP 地址,用户名和密码。

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

【适用平台】私有云

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

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

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

【任务 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)

【题目 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)

【题目 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)

【题目 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)

【题目 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)

【题目 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)

【题目 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)

【题目 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 触发自动构建,具体要求如下:

  1. 基于镜像 maven:3.6-jdk-8 构建项目的 drone 分支;
  2. 构建镜像的名称:demo:latest;
  3. 将镜像推送到 Harbor 仓库 demo 项目中;
  4. 将 demo-2048 应用自动发布到Kubernetes 集群 gitlab-ci 命名空间下。

完成后提交 Master 节点的用户名、密码和 IP 地址到答题框。(需要用到的软件包:CICD-Runner.tar.gz)

【题目 10】2.2.10 服务网格:创建 VirtualService [1 分]

   将 Bookinfo 应用部署到 default 命名空间下,为 Bookinfo 应用创建一个名为reviews的 VirtualService,要求来自名为 Jason 的用户的所有流量将被路由到 reviews 服务的 v2版本。

完成后提交 Master 节点的 IP 地址、用户名和密码到答题框。(需要用到的软件包:ServiceMesh.tar.gz)

【题目 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 地址、用户名和密码到答题框。

【题目 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 地址到答题框。

【题目 13】2.2.13 容器云平台排错:容器引擎报错[1.5 分]

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

【题目 14】2.2.14 容器云平台排错:DNS 服务报错[1.5 分]

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

【任务 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 代码,代码实现以下任务:

  1. 首先查询查询服务 service,如果 service 名称“nginx-svc”已经存在,先删除。
  2. 如果不存在“nginx-svc”,则使用 service.yaml 文件创建服务。
  3. 创建完成后,查询该服务的信息,查询的 body 部分以 json 格式的文件输出到当前目录下的 service_api_dev.json 文件中。
  4. 然后使用 service_update.yaml 更新服务端口。
  5. 完成更新后,查询该服务的信息,信息通过控制台输出,并通过 json 格式追加到 service_api_dev.json 文件后。

编写完成后,提交该云主机的用户名、密码和 IP 地址到答题框。

【题目 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 代码,代码实现以下任务:

  1. 首先使用 nginx-deployment.yaml 文件创建 deployment 资源。
  2. 创建完成后,查询该服务的信息,查询的 body 部分通过控制台输出,并以 json格式的文件输出到当前目录下的 deployment_sdk_dev.json 文件中。编写完成后,提交该云主机的用户名、密码和 IP 地址到答题框。

【题目 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 个方法:

crd_manager.py 内部实现 3 个方法:

  1. 实现方法 create_crd(),实现对 Competition CRD 的创建。
  2. 实现方法 delete_crd(),实现对 Competition CRD 的删除。
  3. 实现方法watch_crd_object(),实现对 CRD 资源的变化事件监听,将监听到Competition CRD 被删除,将 event 信息输出到控制台,并停止监听。

【题目 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 个方法:

  1. 实现方法 create_crd_object(ymlfile:str),实现 CRD 的自定义对象的创建,yamlfile 为 CRD 的自定义对象 yaml 文件。
  1. 实现方法 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信息输出到控制台,并停止监听。


http://www.ppmy.cn/server/35026.html

相关文章

什么是高级持续威胁(APT)

高级持续性威胁(Advanced Persistent Threat,APT),又叫高级长期威胁,是一种复杂的、持续的网络攻击,包含三个要素:高级、长期、威胁。 【高级】是指执行APT攻击需要比传统攻击更高的定制程度和…

代码随想录算法训练营第十三天:树的认知(补五一)

代码随想录算法训练营第十三天:树的认知(补五一) ‍ 二叉树的递归遍历 #算法公开课 《代码随想录》算法视频公开课 ****(opens new window)****​ :​每次写递归都要靠直觉? 这次带你学透二叉树的递归遍历&#xf…

C++11,{}初始化,initializer_list,decltype,右值引用,类和对象的补充

c98是C标准委员会成立第一年的C标准,C的第一次更新是C03,但由于C03基本上是对C98缺陷的修正,所以一般把C98与C03合并起来,叫做C98/03; 后来原本C委员会更新的速度预计是5年更新一次,但由于C标准委员会的进…

从VPS切换到云服务器的几大理由

有很多文章比较VPS和云服务器,选择哪种解决方案来提供最佳效率。尽管很多人仍在使用VPS,但其中许多人已对云服务器拥有简单的认知,且已有意图从VPS迁移到云服务器。然而在这样做之前,您需要更加深入了解云服务器,它的优…

GridCtrl成员函数及功能简要说明

一、特点: ● 使用鼠标可以进行单元格的选择,还可以辅助ctrl和shift的组合键进行选择。也可以取消选择。 ● 行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。 ● 双击区分点,行或者列可以按照大小自动排序 ● 可以对…

[渗透利器]某大佬公开自用红队渗透工具

前言 看到群里大佬发的文章,公开了自用的工具,前来拜膜一下。 使用方式 该工具首先需要初始化数据库,Windows推荐使用PHP Study,搭建更方便。 修改默认root密码后新建数据库,账号密码随便填,公网环境注意…

GPT-3

论文:Language Models are Few-Shot Learners(巨无霸OpenAI GPT3 2020) 摘要 最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调,在许多NLP任务和基准方面取得了实质性进展。虽然这种方法…

Debian mariadb 10.11设定表名 大小写不敏感方法

目录 问题表现:应用中查询 表提示 表不存在 处理步骤: 1、查询表名大小写敏感情况: show global variables like %case%; 2、修改mariadb 配置设置大小写 不敏感 mysql 配置大小写不敏感 mariadb 10.11设置表名大小写不敏感 /etc/mysq…