2022年山东省职业院校技能大赛高职组云计算赛项试卷第二场-容器云

2022年山东省职业院校技能大赛高职组云计算赛项试卷

目录

【赛程名称】云计算赛项第二场-容器云

需要竞赛软件包以及资料可以私信博主!


【赛程名称】云计算赛项第 场- 容器云

【赛程时间】2022-11-27 09:00:00至2022-11-27 16:00:00

说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机:master和node。Chinaskill_Cloud_PaaS.iso镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。

某公司技术部产品开发上线周期长,客户的需求经常得不到及时响应。引入CICD (Continuous Integration持续集成、Continuous Delivery持续交付) 成了公司的当务之急,研发团队决定搭建基于Kubernetes 的CICD环境,希望基于这个平台来实现DevOps的部分流程,来减轻开发、部署、运维的负担。

为了能够让公司开发的web应用系统产品能够基于服务器的性能、可靠性、高可用性与方便维护,研发部决定使用微服务架构,实现基于Kubernetes的容器化部署。

节点规划如表1所示。

表1容器云平台节点规划

|--------------------|--------|-------|-----|------|
| 节点角色 | 主机名 | VCPUS | 内存 | 硬盘 |
| Master、Harbor、CICD | master | 4 | 12G | 100G |
| Worker Node | node | 4 | 12G | 100G |

【任务1】容器云平台搭建[5分]

【适用平台】私有云

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

使用提供的用户名和密码,登录OpenStack私有云平台,当前租户下,已经存在两台云主机,使用CRT工具进行连接,使用kubeeasy工具完成Kubernetes 1.22.1集群的搭建。然后使用nginx镜像在default命名空间下创建一个名为exam的Pod,并为该Pod设置环境变量exam,其值为2022。(搭建kubernetes集群需要用到的iso镜像已经在master节点中)

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

【题目2】Pod管理--创建Pod[1分]

在default命名空间下使用nginx:latest镜像创建一个QoS类为Burstable的Pod,名称为qos-demo。

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

【题目3】平台部署--部署Istio服务网格[1分]

在Kubernetes集群上完成Istio服务网格环境的安装,在default命名空间下使用busybox镜像创建一个名为busybox的Pod,并手动为该Pod注入Sidecar。

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

【题目4】平台部署--部署KubeVirt虚拟化[0.5分]

在Kubernetes集群上完成KubeVirt虚拟化环境的安装。

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

【题目5】平台部署--部署Harbor仓库及Helm包管理工具[0.5分]

在master节点上完成Harbor镜像仓库及Helm包管理工具的部署。然后使用nginx镜像自定义一个Chart,Deployment名称为nginx,副本数为1,然后将该Chart部署到default命名空间下,Release名称为web。

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

【题目6】集群管理--备份ETCD数据[1分]

Kubernetes使用ETCD来存储集群的实时运行数据,为防止服务器宕机导致Kubernetes集群数据丢失,请将Kubernetes集群数据备份到/root/etcd.db中。

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

【任务2】容器化应用搭建: Docker Compose 编排部署[7分]

【适用平台】私有云

【题目1】容器化Memcached服务[1分]

在master节点/root/DjangoBlog目录下编写Dockerfile-memcached文件构建blog-memcached:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)

(1)基础镜像:centos:7.9.2009;

(2)完成memcached服务的安装;

(3)声明端口:11211;

(4)设置服务开机自启。

完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。

【题目2】容器化Mariadb服务[1.5分]

在master节点/root/DjangoBlog目录下编写Dockerfile-mariadb文件构建blog-mysql:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)

(1)基础镜像:centos:7.9.2009;

(2)安装MariaDB服务并设置root用户的密码为root;

(3)创建数据库djangoblog并将sqlfile.sql导入该数据库;

(4)声明端口:3306;

(5)设置服务开机自启。

完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。

【题目3】容器化前端服务[1分]

在master节点/root/DjangoBlog目录下编写Dockerfile-nginx文件构建blog-nginx:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)

(1)基础镜像:centos:7.9.2009;

(2)安装nginx服务;

(3)使用提供的nginx.conf作为默认的配置文件;

(3)声明端口:80;

(4)设置服务开机自启。

完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。

【题目4】容器化Blog服务[1.5分]

在master节点/root/DjangoBlog目录下编写Dockerfile-blog文件构建blog-service:v1.0镜像,具体要求如下:(需要用到的软件包:Django.tar.gz)

(1)基础镜像:centos:7.9.2009;

(2)安装Python3.6环境;

(3)使用pip3工具离线安装requirements.txt中的软件包;

(4)安装DjangoBlog服务;

(5)声明端口:8000;

(6)设置DjangoBlog服务开机自启。

完成后构建镜像,并提交master节点的用户名、密码和IP地址到答题框。

【题目5】编排部署博客系统[2分]

在master节点/root/DjangoBlog目录下编写docker-compose.yaml文件,具体要求如下:

(1)容器1名称:blog-memcached;镜像:blog-memcached:v1.0;端口映射:11211:11211;

(2)容器2名称:blog-mysql;镜像:blog-mysql:v1.0;端口映射:3306:3306;

(3)容器3名称:blog-nginx;镜像:blog-nginx:v1.0;端口映射:80:8888;

(4)容器4名称:blog-service;镜像:blog-service:v1.0;端口映射:8000:8000。

完成后编排部署该博客系统,并提交master节点的用户名、密码和IP地址到答题框。

【任务3】容器云应用部署:基于Kubernetes构建CICD[8分]

该公司决定采用GitLab +Jenkins来构建CICD环境,以缩短新功能开发上线周期,及时满足客户的需求,实现DevOps的部分流程,来减轻部署运维的负担,实现可视化容器生命周期管理、应用发布和版本迭代更新,请完成GitLab + Jenkins + Kubernetes的CICD环境部署(构建持续集成所需要的所有软件包在软件包BlueOcean.tar.gz中)。CICD应用系统架构如下:

【适用平台】私有云

【题目1】安装Jenkins环境[1.5分]

使用镜像jenkins/Jenkins:latest在Kubernetes集群devops命名空间下完成Jenkins的部署,Deployment和Service名称均为jenkins,要求以NodePort方式将Jenkins的8080端口对外暴露为30880,并使用提供的软件包完成Blue Ocean等离线插件的安装。部署完成后设置Jenkins用户名为jenkins;密码为000000,并在授权策略中配置"任何用户可以做任何事(没有任何限制)"。

完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径http://<IP>/BlueOcean.tar.gz)

【题目2】安装GitLab环境[1.5分]

使用镜像gitlab/gitlab-ce:latest在Kubernetes集群devops命名空间下完成GitLab的部署,Deployment和Service名称均为gitlab,设置GitLab的root用户密码为admin@123,并以NodePort方式将GitLab的80端口对外暴露为30888。部署完成后新建公开项目springcloud,并将springcloud文件夹中的代码上传到该项目。

完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径http://<IP>/BlueOcean.tar.gz)

【题目3】配置Jenkins连接GitLab[1分]

在GitLab中生成名为jenkins的"Access Tokens",在Jenkins中配置GitLab凭据并测试其连通性。

完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径http://<IP>/BlueOcean.tar.gz)

【题目4】构建CI/CD[4分]

在Jenkins中新建流水线任务springcloud,流水线选择"Pipeline script from SCM"。在springcloud项目中新建Jenkinsfile脚本文件,编写声明式Pipeline,要求完成构建maven项目,然后构建Docker镜像并推送到Harbor仓库的springcloud项目,并基于新构建的镜像完成config和gateway服务自动发布到Kubernetes集群springcloud命名空间下。最后配置Webhook触发构建。

完成后提交master节点的用户名、密码和IP地址到答题框。(需要用到的软件包路径http://<IP>/BlueOcean.tar.gz

【任务4】容器云服务运维:Kubernetes基于容器的运维[ 10 分]

【适用平台】私有云

【题目1】安全管理--配置Pod安全上下文[0.5分]

使用busybox镜像启动一个名为context-demo的Pod,为该Pod配置安全上下文,要求容器内以用户1000和用户组3000来运行所有进程,并在启动时执行"sleep 1h"命令。

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

【题目2】CRD管理--创建自定义资源类型[0.5分]

在Kubernetes集群中自定义一种资源类型Student,API为stable.example.com/v1,单数形式为student,复数形式为students,简写为stu,作用域为命名空间级,然后在default命名空间下创建一个名为exam的Student对象。

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

【题目3】HPA管理--创建HPA规则[0.5分]

默认情况下HPA是无法调整伸缩灵敏度的,但不同的业务场景对伸缩灵敏度的要求不一样。要求在default命名空间下使用nginx镜像创建一个名为web的deployment,自定义HPA的伸缩灵敏度,为该deployment创建一个名为web的HPA,扩容时立即新增当前9倍数量的副本数,时间窗口为5s,伸缩范围为1--1000。例如一开始只有1个Pod,当CPU使用率超过80%时,Pod数量变化趋势为:1 → 10 → 100 → 1000。

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

【题目4】节点亲和性管理--创建软限制规则的Pod[1分]

在default命名空间下使用nginx镜像运行一个Pod,名称为nginx,要求使用preferredDuringSchedulinglgnoredDuringExecution策略将Pod调度到具有"disktype=ssd"标签的节点。

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

【题目5】驱逐机制管理--配置节点压力驱逐[0.5分]

设置kubelet数据存储在/apps/data/kubelet目录下,并设置当kubelet的存储空间不足5%,或者当容器运行时文件系统可用存储空间不足5%时开始驱逐Pod。

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

【题目6】LimitRange管理--配置内存默认值[0.5分]

创建命名空间default-mem-example,在master节点/root目录下编写YAML文件,具体要求如下:

(1)LimitRange名称:mem-limit-range;

(2)命名空间:default-mem-example;

(3)设置容器默认分配256M的内存请求和512M的内存上限。

完成后使用该YAML文件创建LimitRange,并提交master节点的用户名、密码和IP到答题框。

【题目7】RBAC管理--创建角色并绑定[1分]

创建一个名为deployment-clusterrole的clusterrole,并且对该clusterrole只绑定对Deployment、Daemonset、Statefulset的创建权限。在指定命名空间exam创建一个名为exam-user的serviceaccount,并且将上一步创建clusterrole和该serviceaccount绑定。

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

【题目8】存储卷管理--Pod时间同步[1分]

容器默认的时区采用的是UTC时区,而宿主机采用的是CST时区。使用nginx:latest镜像在default命名空间下创建一个名为exam的Pod,要求Pod时区与宿主机时区同步。

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

【题目9】流量管理--创建Ingress Gateway[0.5分]

使用提供的软件包ServiceMesh.tar.gz将Bookinfo应用部署到default命名空间下,使用Istio Gateway可以实现应用程序从外部访问,请为Bookinfo应用创建一个名为bookinfo-gateway的网关,指定所有HTTP流量通过80端口流入网格,然后将网关绑定到虚拟服务bookinfo上。

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

【题目10】服务网格--创建默认目标规则[1分]

为Bookinfo应用的四个微服务设置默认目标规则,名称分别为productpage、reviews、ratings和details。定义好可用的版本,productpage服务可用的版本为v1,reviews服务可用的版本为v1、v2、v3,ratings服务可用的版本为v1、v2,details服务可用的版本为v1、v2。

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

【题目11】服务网格--创建基于用户身份的路由[0.5分]

创建一个名为reviews路由,要求来自名为Jason的用户的所有流量将被路由到服务reviews:v2。

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

【题目12】VM管理--创建VM[ 0.5 分]

使用镜像fedora-virt:v1.0在default命名空间下创建一台vm,名称为vm-fedora,内存为1G。

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

【题目13】存储与卷--创建emptyDisk卷[1分]

使用镜像fedora-virt:v1.0在default命名空间下创建一台vmi,名称为vmi-fedora,并使用emptyDisk卷为vmi挂载一块2G的磁盘。

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

【题目14】KubeVirt运维--创建V MI [1分]

将提供的镜像exam.qcow2转换为docker镜像exam:v1.0,然后使用镜像exam:v1.0镜像在default命名空间下创建一台vmi,名称为exam,将虚拟机的80端口以NodePort的方式对外暴露为30082,并使用数据源在启动时将VM的主机名初始化为exam。

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

【任务 5 】容器云运维开发 Kubernetes APIs运维开发[10分]

【适用平台】私有云

【题目1】 Kubernetes Python运维脚本开发:使用Restful API方式管理service服务 [ 3 分]

在提供的OpenStack私有云平台上,使用k8s-python-dev镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为"root/1DaoYun@2022"。

使用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】Python运维开发:基于Kubernetes Python SDK方式管理deployment服务 [ 3 分]

在提供的OpenStack私有云平台上,使用"k8s-python-dev"镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为"root/1DaoYun@2022"。使用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】Python运维开发: Pod资源的 Restful APIs HTTP服务封装[ 2 分]

编写Python程序实现Pod资源管理程序,将Pod资源管理的封装成Web服务。

在/root目录下创建pod_server.py程序,实现Pod的增删查改等Web访问操作。http.server的host为localhost,端口8889;程序内部实现Kubernetes认证。

提示说明:Python标准库http.server模块,提供了HTTP Server请求封装。

需要实现的Restful API接口如下:

GET /pod/{name} ,查询指定名称{name}的Pod;Response的Body以json格式输出。

POST /pod/{yamlfilename} 创建yaml文件名称为{yamlfilename}的Pod;Response的Body以json格式。

编码完成后,"手工下载"文件服务器主目录所有*.yaml文件到root目录下,"手动执行"所编写pod_server.py程序,提交答案进行检测。

【题目4】Python运维开发: Service资源 Restful APIs HTTP服务封装[ 2 分]

编写Python程序实现Service资源管理程序,将Service资源管理的封装成Web服务。

在/root目录下创建service_server.py程序,实现Service的增删查改等Web访问操作。http.server的host为localhost,端口8888;程序内部实现Kubernetes认证。

提示说明:Python标准库http.server模块,提供了HTTP Server请求封装。

需要实现的Restful API接口如下:

GET /services/{name},查询指定名称{name}的Service;Response的Body以json格式输出。

POST /services/{yamlfilename} 创建yaml文件名称为{yamlfilename}的Service;Response的Body以json格式,(手工将文件服务器主目录所有*.yaml文件下载到root目录下)。

DELETE /services/{name};删除指定名称的Service;Response的Body以json格式。

编码完成后,自己手动执行提供Web HTTP服务的service_server.py程序,提交答案进行检测。

相关推荐
沉到海底去吧Go1 小时前
软件工具:批量图片区域识别+重命名文件的方法,发票识别和区域选择方法参考,基于阿里云实现
数据库·阿里云·云计算
亚林瓜子14 小时前
AWS Elastic Beanstalk部署极简Spring工程(EB CLI失败版)
spring·云计算·aws·cli·eb
Johny_Zhao17 小时前
Vmware workstation安装部署微软SCCM服务系统
网络·人工智能·python·sql·网络安全·信息安全·微软·云计算·shell·系统运维·sccm
国际云21 小时前
阿里云国际站与国内站的核心布局与本土化服务的选择
阿里云·云计算
小雨光21 小时前
阿里云ECS部署Dify
阿里云·云计算
亚林瓜子1 天前
AWS Elastic Beanstalk控制台部署Spring极简工程(LB版)
spring·云计算·aws·elb·beanstalk·alb·eb
国际云,接待1 天前
云服务器的运用自如
服务器·架构·云计算·腾讯云·量子计算
Blossom.1181 天前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
亚林瓜子2 天前
AWS Elastic Beanstalk控制台部署Spring极简工程
java·spring·云计算·aws·eb
小王格子2 天前
AI 编程革命:腾讯云 CodeBuddy 如何重塑开发效率?
人工智能·云计算·腾讯云·codebuddy·craft