目录
【题目1】Python运维开发:华为云Python 运行环境准备[1分]
【题目2】Python运维开发:实现容器集群创建[1.5分]
【题目3】Python运维开发:ECS云主机管理的命令行工具开发[3.5分]
【题目4】Python运维开发:ECS云主机管理与监控的Restful APIs??HTTP服务封装[4分]
需要竞赛资料可私信博主
【赛程时间】2022-12-22 08:00:00至2022-12-22 14:30:00
在公有云中完成虚拟私有云的创建,具体要求如下:
(1)在上海一区域进行创建操作;
(2)创建一个名为intnetX的内部网络:IP地址为172.16.0.0/16;
(3)创建子网名称为intnetX-server:IP地址为172.16.1.0/24;
(4)创建子网名称为intnetX-mysql:IP地址为172.16.2.0/24;
完成创建后,提交当前的AK(SecretId)、SK(SecretKey)和intnetX网络的ID到答题框。
登录华为云平台,创建两台云实例,具体要求如下:
(1)计费模式:按需计费;
(2)地域:上海一;
(3)CPU架构:x86计算;
(4)规格:c7.xlarge.2;
(5)镜像:CentOS 7.5 64位;
(6)系统盘:高IO?50G硬盘;
(7)公网带宽:按带宽计费,5Mbps;
(8)实例名称:ChinaSkill-node-1、ChinaSkill-node-2;
(9)登录方式:使用密码登录,密码自定义。
创建完成后,提交当前的AK(SecretId)、SK(SecretKey)和ChinaSkill-node-1的实例ID到答题框。
使用intnetX-mysql网络创建两台chinaskill-sql-1和chinaskill-sql-2云服务器,使用提供的压缩文件rocketchat-cloud.tar.gz中的软件包源,在chinaskill-sql-1和chinaskill-sql-2中部署MongoDB数据库服务。配置完成后提交连接chinaskill-sql-1节点的用户名、密码和公网IP地址到答题框。
在chinaskill-sql-1和chinaskill-sql-2云服务器中配置MongoDB主从数据库,配置MongoDB集群名称为rs并完成集群设置。完成后提交连接chinaskill-sql-1节点的用户名、密码和公网IP地址到答题框。
使用提供的压缩文件rocketchat-cloud.tar.gz中软件包源,在ChinaSkill-node-1部署nodejs,根据所提供的rocket.chat所需要求安装nodejs。配置完成后提交连接ChinaSkill-node-1节点的用户名、密码和公网IP地址到答题框。
创建一个安全组,具体要求如下:
(1)名称:intnetX-security;
(2)允许策略:只放行源地址为172.16.1.0/24访问27017端口;
(3)允许策略:只放行源地址为172.16.1.0/24使用ping命令访问;
(4)关联实例:将intnetX-security安全组关联至所创建的数据库中;
创建完成后,提交当前的AK(SecretId)、SK(SecretKey)和安全组ID到答题框。
使用http服务器提供的压缩文件rocketchat-cloud.tar.gz中的RocketChat软件包,在ChinaSkill-node-1中部署RocketChat的Web服务。使用chinaskill-sql-1的MongoDB为后端数据库,设置RocketChat服务访问端口为3000。完成Rocketchat系统上云后,将ChinaSkill-node-1节点的用户名、密码和公网IP地址到答题框。
创建一个公网NAT网关,具体配置如下:
(1)名称为:kcloud-nat;
(2)虚拟私有云:intnetX;
(3)子网:intnetX-server;
(4)规则:内部子网地址访问外网;
(5)设置Chinaskill-node-1云服务器3000端口转换为外部3000服务端口。
创建完成后提交当前的AK(SecretId)、SK(SecretKey)和NAT网关的ID到答题框。
创建一个云服务器备份存储库名为server_backup,容量为100G。将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。完成后,将当前的AK(SecretId)、SK(SecretKey)和存储库ID到答题框。
使用所创建的私有镜像chinaskill-image购买云服务器ChinaSkill-node-3,配置与ChinaSkill-node-1云服务器相同。完成后提交chinaskill-node-3的用户名、密码和公网IP到答题框。
创建一个网络ACL,具体要求如下:
(1)名称:intnetX-acl;
(2)允许策略:只放行源地址为172.16.1.0/24访问3306端口;
(3)允许策略:只放行源地址为172.16.1.0/24使用ping命令访问;
创建完成后,提交你当前的AK(SecretId)、SK(SecretKey)和网络ACL ID到答题框。
新建一个启动配置,具体要求如下:
(1)启动配置名称:template-exam;
(2)计费模式:按量计费;
(3)地域:上海一;
(4)镜像:chinaskill-image;
(5)登录方式:使用密码登录,密码自定义。
创建一个伸缩组,具体要求如下:
(1)名称:as-exam;
(2)最小伸缩数:1;起始实例数:1;最大伸缩数:5;
(3)启动配置:template-exam;
(4)使用负载均衡:chinaskill-elb;
(5)移出策略:移出最旧的实例。
为伸缩组as-exam新建告警触发策略,具体要求如下:
(1)如果实例的内存利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(2)如果实例的内存利用率在5分钟内的最大值大于80%,且连续发生3次。则实例数增加1台。冷却60秒;
(3)如果实例的CPU利用率在5分钟内的最大值小于40%,且连续发生3次。则实例数减少1台。冷却60秒;
(4)如果实例的CPU利用率在5分钟内的平均值大于等于80%,且连续发生3次。则实例数增加1台。冷却60秒。
创建完成后提交当前的AK(SecretId)、SK(SecretKey)和伸缩组的实例ID到答题框。
在公有云上的主机时刻面临被攻击的危险,除了可以购买云安全服务,还可以自行部署安全服务。在华为云上创建一个X86架构的云主机,镜像使用CentOS7.9。使用提供的makechk.tar.gz包安装chkrootkit入侵检测工具,安装完毕后使用chkrootkit工具扫描系统,并将扫描结果保存到/var/log/chkrootkit/chkrootkit.log,根据扫描的结果,修复漏洞。操作完成后,提交该云主机的用户名、密码和公网IP到答题框。
安全在公有云服务中占很大的比重,而日志分析服务可以很有效的分析日志规避部分风险。请在华为云上创建一个X86架构的云主机,镜像使用CentOS7.9。自行配置YUM源安装Docker服务,然后使用提供的sepb_elk_latest.tar镜像安装ELK服务,安装完成后,进行添加数据操作,将ELK监控目标节点所需安装的RPM安装包下载到本地云主机的/root目录下。完成后提交ELK云主机的用户名、密码和公网IP到答题框。
创建一个x86架构集群,具体要求如下:
(1)集群名称:kcloud;
(2)集群版本:v1.21;
(3)地域:上海一;
(4)集群管理规模:50节点;
(5)控制节点数:3;
(6)节点使用子网:intnetX-server;
(7)Pod实例上限:64;
(8)容器网段:10.10.0.0/16。
节点配置信息要求如下:
(1)节点名称:kcloud-server;
(2)节点规格:c6s.xlarge.2
(3)节点:EulerOS?2.9
创建完成后提交当前的AK(SecretId)、SK(SecretKey)和集群的ID到答题框。
使用插件管理在kcloud容器集群中安装dashboard可视化监控界面。完成后,提交dashboard访问地址到答题框。
在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
使用提供的helm软件包(软件包为helm-v3.3.0-linux-amd64.tar.gz在http服务下),在kcloud集群中安装helm服务。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
购买云硬盘存储卷,具体配置如下:
(1)名称为:ckloud-disk;
(2)集群:kcloud;
(3)容量:30G;
(4)类型:高I/O;
完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在master节点/root目录下编写YAML文件secret.yaml,具体要求如下:
(1)Secret名称:mysecret;
(2)命名空间:default;
(3)类型:Opaque;
(4)username: YWRtaW4=;password: MWYyZDFlMmU2N2Rm。
完成后使用该YAML文件创建Secret,并提交master节点的用户名、密码和IP到答题框。
登录kcloud集群节点,在default命名空间下使用 nginx:latest 镜像创建一个名为lifecycle-demo的Pod,要求容器创建成功后执行命令"echo Hello from the postStart handler > /usr/share/message”,容器终止前执行命令“nginx -s quit; while killall -0 nginx; do sleep 1;done"。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在kcloud集群节点/root目录下编写yaml文件date.yaml
具体要求如下:
(1)CronJob名称:date;
(2)命名空间:default;
(3)基于时间的调度规则:每分钟启动一次;
(4)容器名称:hello;镜像:busybox。
完成后使用该YAML文件创建cronjob,并提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在kcloud集群节点/root目录下编写YAML文件hpa.yaml,具体要求如下:
(1)HPA名称:frontend-scaler;
(2)命名空间:default;
(3)副本数伸缩范围:3--10;
(4)期望每个Pod的CPU使用率为50%。
完成后使用该YAML文件创建HPA,并提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
使用赛项提供的mychart-0.1.0.tgz模板包(在http服务下),修改模板代码使外部可通过节点地址进行访问。在模板市场中上传我的模板mychart,在kcloud集群中安装名为nginx的模板实例。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在kcloud集群中使用k8s集群创建名为liveness-http的pod,设置http探针监控pod状态,探针初始延迟时间为20秒,探测失败1次后重启容器。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
根据提供的chart包wordpress-13.0.23.tgz部署wordpress服务,根据chart包中内容创建wordpress所需要的pv,并修改其访问模式为NodePort。使用修改后的chart包创建wordpress服务。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在k8s集群中创建chartmuseum命名空间,编写yaml文件在chartmuseum命名空间中使用chartmuseum:latest镜像创建本地私有chart仓库,设置其仓库存储目录为宿主机的/data/charts目录。编写service.yaml文件,为chart私有仓库创建Service访问策略,定义其为ClusterIP访问模式。编写完成后启动chartmuseum服务。提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
在master节点添加搭建的本地私有chart仓库源,name为chartmuseum,并上传wordpress-13.0.23.tgz包至chartmuseum私有仓库中。可以使用本地仓库chart源部署应用。完成后提交连接kcloud集群节点的用户名、密码和公网IP地址到答题框。
通过华为云控制台,选择北京四区域,创建一台 x86 架构,“按需计费”的2核,4G,系统盘50G的云实例,实例名为chinaskill2022,选择镜像为CentOS 7.9 64bit(40GB),分配独立的公网IP,带宽选择按使用流量计费5M。登录此云服务器,安装Python3.68运行环境,并安装华为云旧版SDK、新版(v3.0) Python SDK中弹性云服务、虚拟私有云、镜像服务、容器云引擎的python库。
完成后提交“chinaskill2022开发运行环境云主机”的用户名、密码和 IP 地址到答题框。
基于在Huawei Cloud API的云容器引擎CCE Python模块,使用以下信息,在/root目录下手动编写cce_cluser.yaml文件。
云服务器的/root/ 目录下编写cce_cluster_manager.py 文件,编码实现读取cce_cluser.yaml,创建“按需计费”的CCE容器引擎集群(Cluster),创建后根据名称查询该集群(Cluster)的详细信息,通过控制台以json格式输出该集群的信息。
创建CCE集群的信息如下:
CCE名称chinaskillscce2022;
按需计费;集群版本:v1.21;
集群规模:节点数50;
网络模式:VPC网络;
其他必要信息不限。
完成后提交“chinaskill2022开发运行环境云主机”的用户名、密码和 IP 地址到答题框。
使用已建好的运维开发环境,在/root/目录下创建ecs_manager.py脚本,完成ECS云主机管理,ecs_manager.py程序支持命令行参数执行。
提示说明:华为云主机支持安装所需Python库。提交前答案前,需安装所开发程序所依赖的Python库。
(1)程序支持根据命令行参数,创建1个云主机。
位置参数“create”,表示创建;
参数“-i 或--input”,格式为json格式文本的云主机的名称、镜像名称2个信息。其他参数同上述开发环境云主机一致。
创建待成功,再返回查询该云主机的信息,结果以json格式输出到控制台。
参考执行实例如下:
python3 ecs_manager.py?create --input?'{?"name": "?chinaskill001", "imagename": "CentOS 7.9 64bit"} '
(2)支持查询给定具体名称的ECS云主机查询。
位置参数“get”,表示查询ECS;
参数“-n?或 --name”支持指定名称ECS查询,类型为string。
参数“-o?或 --output”支持查询该ECS信息输出到文件,格式为json格式。
参考执行实例如下:
python3 ecs_manager.py?get --name?chinaskill001-o?chinaskill001.json
(3)程序支持查询目前区域账号下所有的ECS云主机。
位置参数“getall”,表示查询所有ECS云主机;
参数“-o?或--output”支持输出到文件,格式为yaml格式。
参考执行实例如下:
python3 ecs_manager.py?getall -o huawei_all_ecs.yaml
(4)支持删除指定名称的云主机。
位置参数“delete”,表示删除一个ECS云主机;返回response,通过控制台输出。
参数“-n或--name”支持指定名称查询,类型为string。
参考执行实例如下:
python3 ecs_manager.py?delete --name chinaskill001
完成后提交“chinaskill2022开发运行环境云主机”的用户名、密码和 IP 地址到答题框。
云服务器的/root/目录下编写 huawei_ecs_server.py 文件编写Python程序实现华为ECS云主机管理与云主机操作系统性能远程监控。所有的资源申请区域为“华北-北京四”,所有服务封装成Restful APIs方式,host为127.0.0.1,端口8888,供外部检测。
提示说明:华为云主机支持安装所需Python库。提交前答案前,需安装程序所依赖的Python库。
具体要求:
(1)POST /ecs/server 创建云主机,需要等待成功该云主机后,返回查询该云主机信息。Request传输的数据为application/json,json包含2个必备信息,名称、镜像名称。
json数据格式案例如下:
{?"name": "?cloud001", "imagename": "CentOS 7.9 64bit"}
其他必备参数与开发环境云主机一致。
Response的Body以json格式,返回所创建成功的主机详细信息。
(2)GET /ecs/server/{name}查询云主机;Response的Body以yaml格式。
(3)GET /ecs/server/{name}/os查询所指定ID云主机的操作系统信息;Response的json格式返回。返回格式要求如下:
os_release:操作系统的版本系统;
cpu_util:CPU使用率%;
mem_util:内存使用率%;
disk_util:磁盘使用率%。
(4)DELETE /ecs/server/{name}删除云主机;Response的Body以json格式。
编码完成后,自己手动执行提供Web?HTTP服务的huawei_ecs_server.py程序。
完成后提交“chinaskill2022开发运行环境云主机”的用户名、密码和 IP 地址到答题框。