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

news2024/11/25 0:48:55

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

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

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

容器云

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

     项目需求:某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台建设,平台聚焦“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.coloradmin.cn/o/1647259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【一起深度学习——kaggle叶子分类】

kaggle 叶子分类 目的:将叶子进行分类。实现步骤:1、数据处理:2、加载数据3、 定义残差块4、定义Resnet模型。5、定义训练以及评估函数:6、开始训练:7、输出结果: 目的:将叶子进行分类。 实现步…

观测与预测差值自动变化系统噪声Q的自适应UKF(AUKF_Q)MATLAB编写

简述 基于三维模型的UKF,设计一段时间的输入状态误差较大,此时通过对比预测的状态值与观测值的残差,在相应的情况下自适应扩大系统方差Q,构成自适应无迹卡尔曼滤波(AUKF),与传统的UKF相比&…

【Qt】按钮类控件

文章目录 1 :peach:Push Button:peach:2 :peach:Radio Buttion:peach:3 :peach:Check Box:peach:4 :peach:Tool Button:peach: 1 🍑Push Button🍑 使⽤ QPushButton 表⽰⼀个按钮,这也是当前我们最熟悉的⼀个控件了,QPushButton …

Ubuntu添加非root用户到Docker用户组

前言 首先平常公司的Linux生产环境为了防止误操作导致灾难性问题,一般都不会给我们开发开放root管理员的账号权限。所以平常在Ubuntu的普通用户登录的时候,要操作Dcoker一般都需要带上sudo来提升命令执行权限。为了解决这一问题,我们只需要将…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-13-按键实验

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Axure中继器介绍以及案例分享

中继器是 Axure 中一个比较高阶的应用,它可以让我们在纯静态网页中模拟出类似带有后台数据交互的增删改查的效果。 一、中继器的基本使用方法: 整体流程分为三个步骤 ☆创建中继器 我们先在 Axured画布中拖入一个中继器元件 双击中继器后的效果 打开之…

java高并发实战<1>

我们一个请求--->tomcat--->db 我们只需要把我们的应用部署在tomcat中, 就可以了 这就是你单体的感念,单机结构你只用一个服务器就完成了你项目的部署单点问题一旦这台机器挂了,用户就没有办法用你这个服务,单机能力有限 随着你用户量增长的过程…

04.添加自定义监控项

添加自定义监控项 监控项就是监控每一个指标 1.命令行,手动取值 [rootyunlong66 ~]# iostat |awk $1 ~/sda/ sda 5.89 36.10 122.71 557910 1896585 [rootyunlong66 ~]# iostat |awk $1 ~/sda/{print $2} 5.892.修改zabbix-age…

OpenNJet下载安装及入门实战教程

一、什么是OpenNJet OpenNJet是一款开放原子开源基金会孵化及运营的开源项目。OpenNJet采用C语言实现。是一款高性能、轻量级的WEB应用及代理软件。    OpenNJet 应用引擎是高性能、轻量级的WEB应用与代理软件。作为云原生服务网格的数据平面,NJet具备动态配置加载…

【Git】回滚旧提交版本且不影响最新提交版本

【Git】回滚旧提交版本且不影响最新提交版本 一、场景假设 远程仓库origin中有一个分支main,有4次提交记录:v1、v2、v3、v4。 二、需求 需要回滚旧提交版本,但不影响已有的所有提交版本(即不影响最新提交版本)&…

k8s保持pod健康

存活探针 Kubemetes 可以通过存活探针 (liveness probe) 检查容器是否还在运行。可以为 pod 中的每个容器单独指定存活探针。如果探测失败,Kubemetes 将定期执行探针并重新启动容器。 Kubemetes 有以下三种探测容器的机制: HTTP GET 探针对容器的 IP 地…

深入探索归并排序算法:分而治之的排序艺术

在计算机科学领域,排序算法是一项基础且重要的技术,归并排序作为一种经典的分治算法,以其稳定性和高效性而闻名。本文将带您深入探索归并排序算法的原理、实现方法以及应用场景,揭示这一排序艺术背后的精髓。 **归并排序算法简介…

【管理篇】管理三步曲:管理规划(一)

目录标题 管理到底都要做哪些事呢如何开始带团队? 职能:如何界定团队是干什么的?目标:如何为团队设定合理的目标规划资源:需要申请哪些资源(1)你是否了解资源的丰富性?(2…

判断dll/lib是32/64位、查看lib是导入库/静态库的方法 、查看dll包含的符合、lib包含的函数

一、判断dll/lib是32/64位 原文链接:https://www.cnblogs.com/bandaoyu/p/16752602.html 1. 简便方法: 直接用记事本或者notepad(或txt文本)打开exe文件(dll文件),会有很多乱码,不要头疼,接下…

优雅处理返回信息状态码:Result对象在Spring Boot中的应用

前言 在开发过程中,处理返回的信息状态码是一个重要的问题,尤其是在大型项目中。为了统一处理这些状态码,我在Spring Boot中创建了一个名为Result的Java对象,用于封装返回的信息和状态码。在本文中,我将分享如何实现这…

网络安全的重要性及人才需求

安全现在是大趋势,说是铁饭碗也不为过,就业前景好,方向多比传统计算机行业就业舒服点。但是大厂依然是985,211的天下,是双非能进大厂的,只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 以2023年为…

Leetcode—622. 设计循环队列【中等】

2024每日刷题(128) Leetcode—622. 设计循环队列 实现代码 class MyCircularQueue { public:MyCircularQueue(int k): q(k) {qSize k;}bool enQueue(int value) {if(isFull()) {return false;}q[rear] value;rear (rear 1) % qSize;deflag false;…

精准读取CSV/Excel数据 - 灵活指定行列范围的 Python 解决方案

文章目录 源代码项目简介导入相关库__file_exists 装饰器函数的签名和注释主要功能的实现运行演示读取 Excel 文件 源代码 https://github.com/ma0513207162/PyPrecip。pyprecip\reading\read_api.py 路径下。 项目简介 PyPrecip 是一个专注于气候数据处理的 Python 库&#xf…

【STM32嵌入式系统设计与开发】——18DAC(DAC输出应用)

这里写目录标题 STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码:8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑(1)主函数编辑&#…

Python3中Richdem包遇到问题

Python3中Richdem包遇到问题 文章目录 Python3中Richdem包遇到问题问题一报错解决 问题二报错解决 参考 问题一 报错 RichDEM 是一套数字高程模型 (DEM) 水文分析工具,这次打算用richdem进行地形分析,尝试在conda里面安装richde…