24年 第二部分(题目整理)
容器云
一.容器云环境搭建
部署容器云平台
使用OpenStack私有云平台创建两台云主机,云主机类型使用4vCPU/12G/100G类型,分别作为Kubernetes集群的Master节点和node节点,然后完成Kubernetes集群的部署,并完成Istio服务网格、KubeVirt虚拟化和Harbor镜像仓库的部署。
二.容器云服务运维
容器化部署MariaDB
编写Dockerfile文件构建mysql镜像,要求基于centos完成MariaDB数据库的安装与配置,并设置服务开 机自启。
编写Dockerfile构建镜像explorer-mysql:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成 MariaDB数据库的安装,设置root用户的密码为root,并设置MariaDB数据库开机自启。
容器化部署Redis
编写Dockerfile文件构建redis镜像,要求基于centos完成Redis服务的安装和配置,并设置服务开机自 启。
编写Dockerfile构建镜像explorer-redis:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Redis 服务的安装,修改其配置文件关闭保护模式,并设置Redis服务开机自启。
容器化部署Nginx
编写Dockerfile文件构建nginx镜像,要求基于centos完成Nginx服务的安装和配置,并设置服务开机自 启。
编写Dockerfile构建镜像explorer-nginx:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Nginx 服务的安装,并设置Nginx服务开机自启。
容器化部署Explorer
编写Dockerfile文件构建explorer镜像,要求基于centos完成PHP和HTTP环境的安装和配置,并设置服 务开机自启。
编写Dockerfile构建镜像explorer-server:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成HTTP 和PHP服务的安装,然后将kodexplorer4.37.zip解压到/var/www/html目录下,修改HTTP服务的监听地 址为本机,并设置HTTP服务开机自启。
编排部署Explorer资源管理系统
编写docker-compose.yaml文件,要求使用镜像mysql、 redis、 nginx和explorer完成Explorer管理系统 的编排部署。
编写docker-compose.yaml完成Explorer资源管理系统的部署,要求定义mysql、 redis、 nginx和 explore共四个Service,分别使用镜像explorer-redis:v1.0、explorer-mysql:v1.0、explorer-nginx:v1.0、explorer-server:v1.0,并将explorer的80端口映射到宿主机的8090端口。
容器化部署Node-Exporter
编写Dockerfile文件构建exporter镜像,要求基于centos完成Node-Exporter服务的安装与配置,并设置服务开机自启。 编写Dockerfile构建monitor-exporter:v1.0镜像,具体要求如下:(需要用到的软件包:Monitor.tar.gz) (1)基础镜像:centos:centos7.9.2009; (2)使用二进制包node_exporter-0.18.1.linux-amd64.tar.gz安装node-exporter服务; (3)声明端口:9100; (4)设置服务开机自启。
容器化部署Alertmanager
编写Dockerfile文件构建alert镜像,要求基于centos:latest完成Alertmanager服务的安装与配置,并设置服务开机自启。 编写Dockerfile构建monitor-alert:v1.0镜像,具体要求如下:(需要用到的软件包:Monitor.tar.gz) (1)基础镜像:centos:centos7.9.2009; (2)使用二进制包alertmanager-0.19.0.linux-amd64.tar.gz安装Alertmanager服务; (3)声明端口:9093、9094; (4)设置服务开机自启。
容器化部署Grafana
编写Dockerfile文件构建grafana镜像,要求基于centos完成Grafana服务的安装与配置,并设置服务开机自启。 编写Dockerfile构建monitor-grafana:v1.0镜像,具体要求如下:(需要用到的软件包:Monitor.tar.gz) (1)基础镜像:centos:centos7.9.2009; (2)使用二进制包grafana-6.4.1.linux-amd64.tar.gz安装grafana服务; (3)声明端口:3000; (4)设置nacos服务开机自启。 完成后提交master节点的IP地址、用户名和密码到答题框。
容器化部署Prometheus
编写Dockerfile文件构建prometheus镜像,要求基于centos完成Promethues服务的安装与配置,并设置服务开机自启。 编写Dockerfile构建monitor-prometheus:v1.0镜像,具体要求如下:(需要用到的软件包:Monitor.tar.gz) (1)基础镜像:centos:centos7.9.2009; (2)使用二进制包prometheus-2.13.0.linux-amd64.tar.gz安装promethues服务; (3)编辑/data/prometheus/prometheus.yml文件,创建3个任务模板:prometheus、node和alertmanager,并将该文件拷贝到/data/prometheus/目录下; (4)声明端口:9090; (5)设置服务开机自启。
编排部署监控系统
编写docker-compose.yaml文件,使用镜像exporter、alert、grafana和prometheus完成监控系统的编排部署。 编写docker-compose.yaml文件,具体要求如下: (1)容器1名称:monitor-node;镜像:monitor-exporter:v1.0;端口映射:9100:9100; (2)容器2名称:monitor- alertmanager;镜像:monitor-alert:v1.0;端口映射:9093:9093、9094:9094; (3)容器3名称:monitor-grafana;镜像:monitor-grafana:v1.0;端口映射:3000:3000; (4)容器4名称:monitor-prometheus;镜像:monitor-prometheus:v1.0;端口映射:9090:9090。 完成后编排部署监控系统,将Prometheus设置为Grafana的数据源,并命名为Prometheus。
部署GitLab
将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。(需要用到的软件包: CICD- Runner.tar.gz)
部署GitLab Runner
将GitLab Runner部署到Kubernetes集群中,为GitLab Runner创建持久化构建缓存目录以加速构建速 度,并将其注册到GitLab中。
将GitLab Runner部署到gitlab-ci命名空间下, Release名称为gitlab-runner,为GitLab Runner创建持久 化构建缓存目录/home/gitlab-runner/ci-build-cache以加速构建速度,并将其注册到GitLab中。(需要用到的软件包: CICD- Runner.tar.gz)
部署GitLab Agent
将Kubernetes集群添加到GitLab项目中指定名称和命名空间。
将Kubernetes集群添加到demo-2048项目中,并命名为kubernetes-agent,项目命名空间选择gitlab- ci。
(需要用到的软件包: CICD- Runner.tar.gz)
构建CI/CD
编写流水线脚本触发自动构建,要求基于GitLab项目完成代码的编译、镜像的构建与推送,并自动发布 应用到Kubernetes集群中。
编写流水线脚本.gitlab-ci.yml触发自动构建,具体要求如下:
(1)基于镜像maven:3.6-jdk-8构建项目的drone分支;
(2)构建镜像的名称: demo:latest;
(3)将镜像推送到Harbor仓库demo项目中;
(4)将demo-2048应用自动发布到Kubernetes集群gitlab-ci命名空间下。
(需要用到的软件包: CICD- Runner.tar.gz)
部署GitLab
将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。
(需要用到的软件包:CICD-Runners-demo2048.tar.gz)
部署 GitLab Runner
将 GitLab Runner 部署到 Kubernetes 集群中,为 GitLab Runner 创建持久化构建缓存 目录以加速构建速度,并将其注册到 GitLab 中。 将 GitLab Runner 部署到 gitlab-ci 命名空间下,Release 名称为 gitlab-runner,为 GitLab Runner 创建持久化构建缓存目录/home/gitlab-runner/ci-build-cache 以加速构 建速度,并将其注册到 GitLab 中。
(需要用到的软件包:CICD-Runner-demo2048.tar.gz)
部署 GitLab Agent
将 Kubernetes 集群添加到 GitLab 项目中指定名称和命名空间。 将 Kubernetes 集群添加到 demo-2048 项目中,并命名为 kubernetes-agent,项目命名 空间选择 gitlab-ci。
构建 CI/CD
编写流水线脚本触发自动构建,要求基于 GitLab 项目完成代码的编译、镜像的构建与 推送,并自动发布应用到 Kubernetes 集群中。 编写流水线脚本.gitlab-ci.yml 触发自动构建,具体要求如下: (1)基于镜像 maven:3.6-jdk-8 构建项目的 drone 分支; (2)构建镜像的名称:demo:latest; (3)将镜像推送到 Harbor 仓库 demo 项目中; (4)将 demo-2048 应用自动发布到 Kubernetes 集群 gitlab-ci 命名空间下。
服务网格:创建VirtualService
将Bookinfo应用部署到default命名空间下,为Bookinfo应用创建一个名为reviews的VirtualService,要 求来自名为Jason的用户的所有流量将被路由到reviews服务的v2版本。(需要用到的软件包: ServiceMesh.tar.gz)
服务网格: Sidecar管理
在default命名空间下部署Bookinfo应用。创建exam命名空间,并声明一个Sidecar配置,允许向指定命 名空间的公共服务输出流量。为所有指定标签的Pod声明一个Sidecar配置,接收和转发指定的流量。
在prod-us1命名空间中声明一个名为exam的Sidecar配置,允许向prod-us1、 prod-apis和istio-system 命名空间的公共服务输出流量。
KubeVirt运维:创建VMI
使用提供的镜像在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。
KubeVirt运维:创建VM
使用云端镜像在default命名空间下创建一台VM,名称为exam ,指定VM的内存、 CPU、运行策略、启动 参数等配置。
使用镜像fedora-virt:v1.0在default命名空间下创建一台VM,名称为vm-fedora,内存为1G,运行策略 为Always,出初始化fedora用户的密码为fedora。
三.容器云开发
管理Deployment服务
自定义调度器
Python运维开发: Pod资源的Restful APIs HTTP服务封装
Python运维开发: Service资源的Restful APIs HTTP服务封装
管理 service 资源
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 文件后。
管理 Pod 服务
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 文件中。