当前位置:主页 > 查看内容

2021江苏省云计算技术与应用比赛

发布时间:2021-06-19 00:00| 位朋友查看

简介:2021江苏省云计算技术与应用比赛 前言 环境的话有些地方需要自己修改的要根据自己的环境来有什么错了的地方可以说一下 【容器云】 说明完成本任务需要两台安装了CentOS7.5操作系统的云主机master和node。Chinaskill_Cloud_PaaS.iso镜像包中有本次容器云部署……

2021江苏省云计算技术与应用比赛

前言

环境的话有些地方需要自己修改的要根据自己的环境来,有什么错了的地方可以说一下


【容器云】

说明:完成本任务需要两台安装了CentOS7.5操作系统的云主机:master和node。Chinaskill_Cloud_PaaS.iso镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。 某公司技术部产品开发上线周期长,客户的需求经常得不到及时响应。引入CICD (Continuous Integration持续集成、Continuous Delivery持续交付) 成了公司的当务之急,研发团队决定搭建基于Kubernetes 的CICD环境,希望基于这个平台来实现DevOps的部分流程,来减轻开发、部署、运维的负担。 为了能够让公司开发的web应用系统产品能够基于服务器的性能、可靠性、高可用性与方便维护,研发部决定使用微服务架构,实现基于Kubernetes的容器化部署。 节点规划如表1所示。 表1容器云平台节点规划 节点角色 主机名 VCPUS 内存 硬盘 Master、Harbor、CICD master 16 10G 100G Worker Node node 16 8G 100G

【任务1】Docker CE及私有仓库安装任务

【题目1】安装Docker CE和Docker Compose

在master、node各节点中分别安装DockerCE和docker-compose。完成后提交master节点的用户名、密码和IP到答题框。

k8s_harbor_install.sh ##在master节点跑脚本即可

【题目2】安装私有仓库

在master节点安装私有仓库,导入/opt/images目录下所有镜像,并推送到私有仓库。完成后提交master节点的用户名、密码和IP到答题框。

 cd /opt/images/
 ./k8s_image_push.sh
##记住后面构建的dockerfile千万别构建成镜像不然这题0分

【题目3】容器编排

在master节点上编写/root/wordpress/docker-compose.yaml文件,具体要求如下:
(1)容器名称:wordpress;镜像:wordpress:latest;端口映射:82:80;
(2)容器名称:mysql;镜像:mysql:5.6;
(3)MySQL root用户密码:123456;
(4)创建数据库wordpress。
完成后编排部署WordPress,并提交master节点的用户名、密码和IP到答题框。

[root@master ~]# cat wordpress/docker-compose.yaml 
version: '3.3'
services:
   mysql:
     image: mysql:5.6
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - mysql
     image: wordpress:latest
     ports:
       - "82:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: mysql:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress

【题目4】容器基础操作[1分]

在master节点上停止并删除上述部署的wordpress容器。完成后提交master节点的用户名、密码和IP到答题框。

docker-compose down

【任务2】基于Docker容器的web应用系统部署

将该公司开发的基于微服务架构的web应用系统Chinaskillmall实现全容器化部署,Chinaskillmall应用系统架构图如下:
在这里插入图片描述

模块 使用技术 备注
gpmall.sql Mysql 网站的数据库
dist目录 Nginx 网站的前端项目
gpmall-shopping web项目 8081端口,商品/购物车/首页渲染等交互
gpmall-user 8082端口,提供用户相关的交互,如登录、注册、个人中心等
user-provider 后端服务 提供用户相关服务
shopping-provider 提供购物车、推荐商品、商品等服务

【题目1】容器化部署Redis

在master节点上编写/root/redis/Dockerfile文件构建chinaskill-redis:v1.1镜像,具体要求如下:(需要用到的软件包在/桌面/附件/容器云附件/gpmall-single.tar.gz)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
(4)设置Redis免密,并关闭保护模式;
(5)开放端口:6379;
(6)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。

[root@master redis]# cat Dockerfile 
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
RUN yum -y install redis*
RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf && sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["redis-server","/etc/redis.conf"] 
[root@master redis]# cd /root/redis/ && docker build -t chinaskill-redis:v1.1 .

【题目2】容器化部署MariaDB

在master节点上编写/root/mariadb/Dockerfile文件构建chinaskill-mariadb:v1.1镜像,具体要求如下:(需要用到的软件包在/桌面/附件/容器云附件/gpmall-single.tar.gz)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)设置数据库密码:123456;
(4)创建数据库gpmall并导入数据库文件gpmall.sql;
(5)设置字符编码:UTF-8;
(6)开放端口:3306;
(7)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。

[root@master ~]# cat mariadb/Dockerfile
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
ADD gpmall.sql /opt/
ADD start.sh /opt/
RUN yum -y install mariadb-server \
 && chmod +x /opt/start.sh \
 && /opt/start.sh
EXPOSE 3306
ENV LC_ALL en_US.UTF-8
CMD mysqld_safe 
[root@master ~]# cat mariadb/start.sh 
#!/bin/bash
mysql_install_db --user=mysql
mysqld_safe &
sleep 3
mysqladmin -u root password '123456'
mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"
mysql -uroot -p123456 -e "create database gpmall;use gpmall;source /opt/gpmall.sql;" 
[root@master mariadb]# docker build -t chinaskill-mariadb:v1.1 .

【题目3】容器化部署Zookeeper

在master节点上编写/root/zookeeper/Dockerfile文件构建chinaskill-zookeeper:v1.1镜像,具体要求如下:(需要用到的软件包在/桌面/附件/容器云附件/gpmall-single.tar.gz)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:2181;
(4)设置服务开机自启。
完成后构建镜像,使用构建的镜像运行容器myzookeeper,并提交master节点的用户名、密码和IP到答题框。

[root@master ~]# cat mariadb/Dockerfile
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
EXPOSE 2181
RUN rm -rf /etc/yum.repos.d/*
COPY ftp.repo /etc/yum.repos.d/ftp.repo
ADD zookeeper-3.4.14.tar.gz /opt
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
 && mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
CMD ["sh","-c","bin/zkServer.sh start && tail -f /etc/shadow"] 

[root@master mariadb]# docker build -t chinaskill-zookeeper:v1.1 .

【题目4】容器化部署Kafka

在master节点上编写/root/kafka/Dockerfile文件构建chinaskill-kafka:v1.1镜像,具体要求如下:(需要用到的软件包在/桌面/附件/容器云附件/gpmall-single.tar.gz)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:9092;
(4)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。

[root@master ~]# cat kafka/Dockerfile 
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
ADD zookeeper-3.4.14.tar.gz /opt/
ADD kafka_2.11-1.1.1.tgz /opt/
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
 && mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
EXPOSE 9092
CMD ["sh","-c","/opt/zookeeper-3.4.14/bin/zkServer.sh start && /opt/kafka_2.11-1.1.1/bin/kafka-server-start.sh /opt/kafka_2.11-1.1.1/config/server.properties"] 
[root@master kafka]# cd /root/kafka/ && docker build -t chinaskill-kafka:v1.1 . 

【题目5】容器化部署Nginx

在master节点上编写/root/nginx/Dockerfile文件构建chinaskill-nginx:v1.1镜像,具体要求如下:(需要用到的软件包在/桌面/附件/容器云附件/gpmall-single.tar.gz)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)编写/etc/nginx/conf.d/default.conf文件,配置反向代理,将80端口请求转发到8081、8082和8083;
(4)将dist中的文件复制到/usr/share/nginx/html/目录下;
(5)复制所有的jar包到镜像中;
(6)开放端口:80、443、8081、8082、8083;
(7)设置服务开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。

[root@master nginx]# cat Dockerfile 
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
ADD *.jar /root/
ADD setup.sh /root/
RUN yum -y install nginx java-1.8.0-openjdk java-1.8.0-openjdk-devel \
 && sed -i '1a location /shopping { proxy_pass http://127.0.0.1:8081 ;}' /etc/nginx/conf.d/default.conf \
 && sed -i '2a location /user { proxy_pass http://127.0.0.1:8082 ;}' /etc/nginx/conf.d/default.conf \
 && sed -i '3a location /cashier { proxy_pass http://127.0.0.1:8083 ;}' /etc/nginx/conf.d/default.conf \
 && chmod +x /root/setup.sh \
 && rm -rf /usr/share/nginx/html/ 
EXPOSE 80 8081 8082 8083
ADD dist/ /usr/share/nginx/html/
CMD ["nginx","-g","daemon off;"] 
[root@master nginx]# cat setup.sh 
#!/bin/bash
nohup java -jar /root/shopping-provider-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/user-provider-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/gpmall-shopping-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/gpmall-user-0.0.1-SNAPSHOT.jar &
sleep 5
[root@master nginx]# cd /root/nginx/ && docker build -t chinaskill-nginx:v1.1 .

【题目6】编排部署商城

在master节点上编写/root/chinaskillmall/docker-compose.yaml文件部署,具体要求如下:
(1)容器1名称:mall-mysql;镜像:chinaskill-mariadb:v1.1;端口映射:13306:3306;
(2)容器2名称:mall-redis;镜像:chinaskill-redis:v1.1;端口映射:16379:6379;
(3)容器3名称:mall-kafka;镜像:chinaskill-kafka:v1.1;端口映射:19092:9092;
(4)容器4名称:mall-zookeeper;镜像:chinaskill-zookeeper:v1.1;端口映射:12181:2181;
(5)容器5名称:mall-nginx;镜像:chinaskill-nginx:v1.1;端口映射:83:80,1443:443;自启动所有的jar包程序。
完成后编排部署商城,并能成功访问商城首页。然后提交master节点的用户名、密码和IP到答题框。

[root@master chinaskill]# cat docker-compose.yml 
version: '3.3'
services:
  mall-mysql:
    image: chinaskill-mariadb:v1.1
    ports:
      - 13306:3306
 
  mall-redis:
    image: chinaskill-redis:v1.1
    ports:
      - 16379:6379
 
  mall-kafka:
    image: chinaskill-kafka:v1.1
    ports:
      - 19092:9092

  mall-zookeeper:
    image: chinaskill-zookeeper:v1.1
    ports:
      - 12181:2181

  mall-nginx:
    image: chinaskill-nginx:v1.1
    depends_on:
      - mall-mysql
      - mall-redis
      - mall-zookeeper
      - mall-kafka
    links:
      - mall-mysql:mysql.mall
      - mall-redis:redis.mall
      - mall-zookeeper:zookeeper.mall
      - mall-kafka:kafka.mall
    ports:
      - 83:80 
      - 1443:443
    command: ["sh","-c","/root/setup.sh && nginx && tail -f /etc/shadow"]

【任务3】基于Kubernetes构建持续集成

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

【题目1】安装Jenkins环境

在master节点上使用镜像jenkins/jenkins:2.262-centos部署Jenkins服务,具体要求如下:
(1)容器名称:jenkins;
(2)端口映射:8080:8080;
(3)使用root身份生成容器;
(4)离线安装Jenkins插件;
(5)设置Jenkins用户:chinaskill;密码:000000;
(6)在授权策略中配置“任何用户可以做任何事(没有任何限制)”。
使用chinaskill用户登录Jenkins,完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【题目2】安装Gitlab环境

在master节点上使用镜像gitlab/gitlab-ce:12.9.2-ce.0部署Gitlab服务,具体要求如下:
(1)容器名称:mygitlab;
(2)端口映射:1022:22、81:80、443:443;
(3)容器重启策略:always;
(4)设置root用户及密码;
(5)使用root用户登录Gitlab,密码:00000000;
(6)新建项目ChinaskillProject,将/opt/ChinaskillProject中的代码上传到ChinaskillProject项目中。
完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【题目3】配置Jenkins连接Gitlab

配置Jenkins连接Gitlab,具体要求如下:
(1)设置Outbound requests;
(2)生成“Access Tokens”并命名为jenkins;
(3)设置Jenkins取消对’/project’ end-point进行身份验证;
(4)测试Jenkins与Gitlab的连通性。
完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【题目4】配置Jenkins连接maven

配置Jenkins连接maven,具体要求如下:
(1)采用docker in docker的方式在Jenkins内安装maven;
(2)在Jenkins中配置maven信息。
完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【题目5】配置CI/CD

配置CI/CD,具体要求如下:
(1)新建一个流水线任务ChinaskillProject;
(2)编写流水线脚本,构建ChinaskillProject项目中的gateway和config服务,将构建后的镜像自动上传到Harbor仓库的chinaskillproject项目,并自动发布gateway和config服务到Kubernetes集群的springcloud命名空间下;
(3)配置Webhook;
(4)在Harbor中新建公开项目chinaskillproject。
完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【题目6】触发CI/CD

将ChinaskillProject项目中的代码上传到Gitlab中触发构建,完成后提交master节点的用户名、密码和IP到答题框。(需要用到的附件在/桌面/附件/容器云附件/Jenkins_offline.tar)

后期更新

【任务4】Kubernetes容器云平台部署与运维

【题目1】Deployment管理

在master节点/root目录下编写yaml文件nginx-deployment.yaml,具体要求如下:
(1)Deployment名称:nginx-deployment;
(2)命名空间:default;
(3)Pod名称:nginx-deployment,副本数:2;
(4)网络:hostNetwork;
(5)镜像:nginx;
(6)容器端口:80
完成后使用该yaml文件创建Deployment,并提交master节点的用户名、密码和IP到答题框。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
  labels: 
    app: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx-deployment
    spec:
      hostNetwork: true
      containers:
      - name: nginx-deployment
        image: 192.168.100.10/library/nginx:latest
        ports:
        - containerPort: 80

【题目2】ReplicaSet管理

在master节点/root目录下编写yaml文件replicaset.yaml,具体要求如下:
(1)Replicaset名称:nginx;
(2)命名空间:default;
(3)副本数:3;
(4)镜像:nginx。
完成后使用该yaml文件创建ReplicaSet,并提交master节点的用户名、密码和IP到答题框。

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 3
  selector: 
    app: nginx
  template:
    metadata:
      labels: 
        app: nginx
    spec:
      containers:
        - name: nginx
          image: 192.168.200.3/library/nginx:latest 
##(别问我为啥写的是RC,因为写了RS得0分)

【题目3】健康检查

在master节点/root目录下编写yaml文件liveness_httpget.yaml,具体要求如下:
(1)Pod名称:liveness-http;
(2)命名空间:default;
(3)镜像:nginx;端口:80;
(4)容器启动时运行命令“echo Healty > /usr/share/nginx/html/healthz”;
(5)httpGet请求的资源路径为/healthz,地址默认为Pod IP,端口使用容器中定义的端口名称HTTP;
(6)启动后延时30秒开始运行检测;
(7)每隔3秒执行一次liveness probe。
完成后使用该yaml文件创建Pod,并提交master节点的用户名、密码和IP到答题框。

apiVersion: v1
kind: Pod
metadata:
  name: liveness-http
  namespace: default
spec:
  containers:
    - name: nginx
      image: 192.168.100.10/library/nginx:latest
      ports:
        - containerPort: 80
      args:
        - /bin/sh
        - -c
        - echo Healty > /usr/share/nginx/html/healthz
      livenessProbe:
        httpGet:
          path: /healthz
          port: http
        initialDelaySeconds: 30
        periodSeconds: 3

【题目4】LimitRange管理

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
  namespace: default
spec:
  limits:
  - default:
      memory: 50Gi
      cpu: 5
    defaultRequest:
      memory: 1Gi
      cpu: 1
    type: Container

【题目5】CronJob管理

apiVersion: batch/v2alpha1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure
;原文链接:https://blog.csdn.net/qq_44823950/article/details/115628924
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐