金砖国家技能大赛云盘算赛项(容器云部分题解)

  金牌会员 | 2024-12-16 08:29:42 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 751|帖子 751|积分 2253

容器云搭建

2.1.1 部署Kubernetes容器云平台

使用OpenStack私有云平台创建两台云主机,云主机类型使用4vCPU/12G/100G类型,分别作为Kubernetes集群的Master节点和node节点,然后完成Kubernetes集群部署。
2.1.2 部署Harbor镜像堆栈

在Kubernetes集群中完成Harbor镜像堆栈部署。
2.1.3 部署Istio服务网格

在Kubernetes集群中完成Istio服务网格组件部署。
2.1.4 部署kubeVirt 虚拟化组件

在Kubernetes集群中完成kubeVirt虚拟化组件部署。
  1. mount -o loop chinaskills_cloud_paas_v2.1.iso /mnt/
  2. cp -rfv /mnt/* /opt/
  3. umount /mnt/
  4. ## 在master节点安装kubeeasy工具:
  5. mv /opt/kubeeasy-v2.0 /usr/bin/kubeeasy
  6. ## 在master节点安装依赖包:
  7. kubeeasy install dependencies \
  8. --host 10.28.0.205,10.28.0.221 \
  9. --user root \
  10. --password Abc@1234 \
  11. --offline-file /opt/dependencies/packages.tar.gz
  12. ## 配置SSH免密:
  13. kubeeasy check ssh \
  14. --host 10.28.0.205,10.28.0.221 \
  15. --user root \
  16. --password Abc@1234
  17. kubeeasy create ssh-keygen \
  18.   --master 10.28.2.191 \
  19.   --worker 10.28.0.198 \
  20.   --user root \
  21.   --password Abc@1234
  22. ## master节点部署kubernetes
  23. kubeeasy install kubernetes \
  24.   --master 10.24.2.10 \
  25.   --worker 10.24.2.20,10.24.2.30,10.24.2.40 \
  26.   --user root \
  27.   --password 000000 \
  28.   --version 1.25.2 \
  29.   --offline-file /opt/kubeeasy.tar.gz
复制代码
容器云服务运维:

2.2.1 容器化部署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)设置服务开机自启。
  1. tar -zxvf Monitor.tar.gz
  2. docker load -i Monitor/CentOS_7.9.2009.tar
  3. cd Monitor/
  4. ##编写Dockerfile文件
  5. vim Dockerfile-exporter
  6. FROM centos:centos7.9.2009
  7. RUN rm -rf /etc/yum.repos.d/*
  8. ADD node_exporter-0.18.1.linux-amd64.tar.gz /root/
  9. EXPOSE 9100
  10. ENTRYPOINT ["./root/node_exporter-0.18.1.linux-amd64/node_exporter"]
  11. ##运行脚本
  12. docker build -t monitor-exporter:v1.0 -f Dockerfile-exporter .
复制代码
2.2.2容器化部署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)设置服务开机自启。
  1. tar -zxvf Monitor.tar.gz
  2. docker load -i Monitor/CentOS_7.9.2009.tar
  3. cd Monitor/
  4. ##编写Dockerfile文件
  5. vim Dockerfile-alert
  6. FROM centos:centos7.9.2009
  7. RUN rm -rf /etc/yum.repos.d/*
  8. ADD alertmanager-0.19.0.linux-amd64.tar.gz /root/
  9. EXPOSE 9093 9094
  10. ENTRYPOINT ["./root/alertmanager-0.19.0.linux-amd64/alertmanager","--config.file","/root/alertmanager-0.19.0.linux-amd64/alertmanager.yml"]
  11. ##运行脚本
  12. docker build -t monitor-alert:v1.0 -f Dockerfile-alert .
复制代码
2.2.3 容器化部署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服务开机自启。
  1. tar -zxvf Monitor.tar.gz
  2. docker load -i Monitor/CentOS_7.9.2009.tar
  3. cd Monitor/
  4. ##编写Dockerfile文件
  5. vim Dockerfile-grafana
  6. FROM centos:centos7.9.2009
  7. RUN rm -rf /etc/yum.repos.d/*
  8. ADD grafana-6.4.1.linux-amd64.tar.gz /root/
  9. EXPOSE 3000
  10. ENTRYPOINT ["./root/grafana-6.4.1/bin/grafana-server","-homepath","/root/grafana-6.4.1/"]
  11. ##运行脚本
  12. docker build -t monitor-grafana:v1.0 -f Dockerfile-grafana .
复制代码
2.2.4 容器化部署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)设置服务开机自启。
编写Dockerfile文件
  1. FROM centos:centos7.9.2009
  2. RUN rm -rf /etc/yum.repos.d/*
  3. ADD prometheus-2.13.0.linux-amd64.tar.gz /root/
  4. RUN mkdir -p /data/prometheus
  5. EXPOSE 9090
  6. RUN cat <<EOF > /data/prometheus/prometheus.yml
  7. global:
  8.   scrape_interval: 15s
  9. scrape_configs:
  10. - job_name: prometheus
  11.   static_configs:
  12.   - targets: ['localhost:9090']
  13. - job_name: node
  14.   static_configs:
  15.   - targets: ['localhost:9090']
  16. - job_name: alertmanager
  17.   static_configs:
  18.   - targets: ['localhost:9090']
  19. - job_name: grafana:
  20.   static_configs:
  21.   - targets: ['localhost:9090']   
  22. EOF
  23. ENTRYPOINT ["./root/prometheus-2.13.0.linux-amd64/prometheus","--config.file","/data/prometheus/prometheus.yml"]
复制代码
上面cat写入了 下面的prometheus.yml就不用再写了
编写prometheus.yml (如果写了下面的文件 必要在Dockerfile中COPY文件到/data/prometheus/)
  1. [root@master Monitor]# vim prometheus.yml
  2. global:
  3.   scrape_interval:     15s
  4.   evaluation_interval: 15s
  5. alerting:
  6.   alertmanagers:
  7.   - static_configs:
  8.     - targets:
  9.       - alertmanager: 9093
  10. rule_files:
  11. scrape_configs:
  12.   - job_name: 'prometheus'
  13.     static_configs:
  14.     - targets: ['localhost:9090']
  15.   - job_name: 'node'
  16.     static_configs:
  17.     - targets: ['node:9100']
  18.   - job_name: 'alertmanager'
  19.     static_configs:
  20.     - targets: ['alertmanager:9093']
  21.   - job_name: 'node-exporter'
  22.     static_configs:
  23.     - targets: ['node:9100']
复制代码
跑脚本
  1. docker build -t monitor-prometheus:v1.0 -f Dockerfile-prometheus .
复制代码
2.2.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。
(5)添加元数据 进入grafana的网页 添加prometheus为数据源
编写docker-compose.yaml文件
  1. version: '3'
  2. services:
  3. # 容器1:用于监控节点的exporter服务
  4.   monitor-node:
  5.     image: monitor-exporter:v1.0
  6.     ports:
  7.       - "9100:9100"        
  8. # 容器2:alertmanager服务
  9.   monitor-alertmanager:
  10.     image: monitor-alert:v1.0
  11.     ports:
  12.       - "9093:9093"
  13.       - "9094:9094"
  14.   # 容器3:grafana服务
  15.   monitor-grafana:
  16.     image: monitor-grafana:v1.0
  17.     ports:
  18.       - "3000:3000"
  19. # 容器4:prometheus服务
  20.   monitor-prometheus:
  21.     image: monitor-prometheus:v1.0
  22.     ports:
  23.       - "9090:9090"
复制代码
有依靠关系的写法;
  1. version: '3'
  2. services:
  3.   node:
  4.     container_name: monitor-node
  5.     image: monitor-exporter:v1.0
  6.     restart: always
  7.     hostname: node
  8.     ports:
  9.       - 9100:9100
  10.   alertmanager:
  11.     container_name: monitor-alertmanager
  12.     image: monitor-alert:v1.0
  13.     depends_on:
  14.       - node
  15.     restart: always
  16.     hostname: alertmanager
  17.     links:
  18.       - node
  19.     ports:
  20.       - 9093:9093
  21.       - 9094:9094
  22.   grafana:
  23.     container_name: monitor-grafana
  24.     image: monitor-grafana:v1.0
  25.     depends_on:
  26.       - node
  27.       - alertmanager
  28.     hostname: grafana
  29.     restart: always
  30.     links:
  31.       - node
  32.       - alertmanager
  33.     ports:
  34.       - 3000:3000
  35.   prometheus:
  36.     container_name: monitor-prometheus
  37.     image: monitor-prometheus:v1.0
  38.     depends_on:
  39.       - node
  40.       - alertmanager
  41.       - grafana
  42.     hostname: prometheus
  43.     restart: always
  44.     links:
  45.       - node
  46.       - alertmanager
  47.       - grafana
  48.     ports:
  49.       - 9090:9090
复制代码
查察pod状态
  1. [root@master Monitor]# docker ps -a
  2. CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS         PORTS                                                           NAMES
  3. e4a643469259   monitor-prometheus:v1.0   "./root/prometheus-2…"   2 minutes ago   Up 2 minutes   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp                       monitor-prometheus
  4. cd1eddaba0d3   monitor-grafana:v1.0      "./root/grafana-6.4.…"   2 minutes ago   Up 2 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                       monitor-grafana
  5. 9032755f8e18   monitor-alert:v1.0        "./root/alertmanager…"   2 minutes ago   Up 2 minutes   0.0.0.0:9093-9094->9093-9094/tcp, :::9093-9094->9093-9094/tcp   monitor-alertmanager
  6. e3ae4d3bf8f9   monitor-exporter:v1.0     "./root/node_exporte…"   2 minutes ago   Up 2 minutes   0.0.0.0:9100->9100/tcp, :::9100->9100/tcp                       monitor-node
复制代码
登录grafana网页
http://10.28.0.244:3000 账号admin 暗码随便(admin)
登录后会提示修改暗码 可以跳过

添加prometheus为数据源


输入主节点的ip加端口号
http://10.28.0.244:9090(普罗米修斯的端口)
然后点击下面绿色的生存 再点back退出

2.2.6 部署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
解压软件包,导入镜像
  1. [root@master ~]# tar -zxvf CICD-Runners-demo2048.tar.gz
  2. [root@master ~]# ctr -n k8s.io image import gitlab-ci/images
  3. /images.tar
  4. [root@master ~]# docker load < gitlab-ci/images/images.tar
复制代码
部署GitLab服务
  1. [root@master ~]# kubectl create ns gitlab-ci        ## 新建命名空间
  2. [root@master ~]# cd gitlab-ci
  3. [root@master gitlab-ci]# vi gitlab-deploy.yaml
  4. apiVersion: apps/v1
  5. kind: Deployment
  6. metadata:
  7.   name: gitlab
  8.   namespace: gitlab-ci
  9.   labels:
  10.     name: gitlab
  11. spec:
  12.   selector:
  13.     matchLabels:
  14.       name: gitlab
  15.   template:
  16.     metadata:
  17.       name: gitlab
  18.       labels:
  19.         name: gitlab
  20.     spec:
  21.       containers:
  22.       - name: gitlab
  23.         image: gitlab/gitlab-ce:latest
  24.         imagePullPolicy: IfNotPresent
  25.         env:
  26.         - name: GITLAB_ROOT_PASSWORD
  27.           value: admin@123
  28.         - name: GITLAB_ROOT_EMAIL
  29.           value: 123456@qq.com
  30.         ports:
  31.         - name: http
  32.           containerPort: 80
  33.         volumeMounts:
  34.         - name: gitlab-config
  35.           mountPath: /etc/gitlab
  36.         - name: gitlab-logs
  37.           mountPath: /var/log/gitlab
  38.         - name: gitlab-data
  39.           mountPath: /var/opt/gitlab
  40.       volumes:
  41.       - name: gitlab-config
  42.         hostPath:
  43.           path: /home/gitlab/conf
  44.       - name: gitlab-logs
  45.         hostPath:
  46.           path: /home/gitlab/logs
  47.       - name: gitlab-data
  48.         hostPath:
  49.           path: /home/gitlab/data
复制代码
删除deployment资源的下令
  1. kubectl -n gitlab-ci delete -f gitlab-deploy.yaml
复制代码
  1. [root@master gitlab-ci]# vi gitlab-svc.yaml        ## 创建service服务释放端口
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   name: gitlab
  6.   namespace: gitlab-ci
  7.   labels:
  8.     name: gitlab
  9. spec:
  10.   type: NodePort
  11.   ports:
  12.     - name: http
  13.       port: 80
  14.       targetPort: http
  15.       nodePort: 30880
  16.   selector:
  17.     name: gitlab
  18. [root@master gitlab-ci]# kubectl apply -f gitlab-deploy.yaml
  19. [root@master gitlab-ci]# kubectl apply -f gitlab-svc.yaml
  20. ## 查看pod
  21. [root@master gitlab-ci]# kubectl -n gitlab-ci get pod
  22. NAME                      READY   STATUS    RESTARTS   AGE
  23. gitlab-65c6b98f6b-q4dwq   1/1     Running   0          2m3s
  24. [root@master gitlab-ci]# kubectl -n gitlab-ci get pods -owide        ## 查看pod详细信息
  25. NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES
  26. gitlab-65c6b98f6b-q4dwq   1/1     Running   0          2m57s   192.244.0.21   master   <none>           <none>
复制代码
在集群中界说hosts添加gitlabPod的解析
  1. [root@master gitlab-ci]# kubectl edit configmap coredns -n kube-system
  2. ... ...
  3.      16            fallthrough in-addr.arpa ip6.arpa
  4.      17            ttl 30
  5.      18  }
  6.      19         hosts {
  7.      20             192.244.0.21 gitlab-65c6b98f6b-q4dwq            ## 这里是Pod容器的ip
  8.      21             fallthrough
  9.      22  }
  10.      23         prometheus :9153
  11.      24                                                             ## 这里有三行删除
  12.      25         cache 30
  13. ... ...
  14. 保存退出  需要保存两遍
  15. [root@master gitlab-ci]# kubectl -n kube-system rollout restart deploy coredns    ## 保存刚才的设置
复制代码
进入gitlab Pod中
  1. [root@master gitlab-ci]#  kubectl -n gitlab-ci get pods
  2. [root@master gitlab-ci]#  kubectl exec -it -n gitlab-ci gitlab-65c6b98f6b-q4dwq bash
  3. root@gitlab-7b54df755-6ljtp:/# vi /etc/gitlab/gitlab.rb
  4. external_url 'http://192.244.0.21:80'            ## 再首行添加  这里也是Pod的ip
  5. root@gitlab-7b54df755-6ljtp:/# reboot
  6. root@gitlab-7b54df755-6ljtp:/# exit
复制代码
查察service
  1. [root@master gitlab-ci]# kubectl -n gitlab-ci get svc
  2. NAME     TYPE       CLUSTER-IP        EXTERNAL-IP   PORT(S)        AGE
  3. gitlab   NodePort   192.102.225.126   <none>        80:30880/TCP   18m
复制代码
访问主机IPhttp://10.28.3.102:30880
用户:123456@qq.com 暗码:admin@123

点击 “Create a project”

点击“Create biank project” 创建项目demo-2048 可见等级选Public

填好后 点“Create project” 进入项目

将代码推送到项目中
  1. [root@master gitlab-ci]# cd /root/gitlab-ci/demo-2048
  2. [root@master demo-2048]# git config --global user.name "Administrator"     ## 这里的用户密码
  3. [root@master demo-2048]# git config --global user.email "123456@qq.com"     ## 是用于下载时候登录的
  4. [root@master demo-2048]# git remote remove origin        ## 删除原有库
  5. [root@master demo-2048]# git remote add origin http://10.28.0.95:30880/root/demo-2048.git ## 添加库主节点IP
  6. [root@master demo-2048]# git add .
  7. [root@master demo-2048]# git commit -m "initial commit"
  8. [root@master demo-2048]# git push -u origin drone
  9. Username for 'http://10.28.0.198:30880': root        
  10. Password for 'http://root@10.28.0.198:30880': admin@123         ## 这是deployment资源文件中设置的
复制代码
推送完刷新 项目库

2.2.7 部署GitLab Runner

将GitLab Runner部署到Kubernetes集群中,为GitLab Runner创建长期化构建缓存目次以加速构建速度,并将其注册到GitLab中。
将GitLab Runner部署到gitlab-ci命名空间下,Release名称为gitlab-runner,为GitLab Runner创建长期化构建缓存目次/home/gitlab-runner/ci-build-cache以加速构建速度,并将其注册到GitLab中。
登录GitLab管理界面(http://10.24.2.14:30880/admin),然后点击左侧菜单栏中的CI/CD下的Runners

记住复制的token:DN3ZZDAGSGB-kWSb-qBT
创建Service服务
  1. [root@master ~]# cd /root/gitlab-ci/
  2. [root@master gitlab-ci]# cat runner-sa.yaml
  3. apiVersion: v1
  4. kind: ServiceAccount
  5. metadata:
  6.   name: gitlab-ci
  7.   namespace: gitlab-ci
复制代码
创建脚色
  1. [root@master gitlab-ci]# cat runner-role.yaml
  2. kind: Role
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. metadata:
  5.   name: gitlab-ci
  6.   namespace: gitlab-ci
  7. rules:
  8.   - apiGroups: [""]
  9.     resources: ["*"]
  10.     verbs: ["*"]
复制代码
创建脚色对接
  1. [root@master gitlab-ci]# cat runner-rb.yaml
  2. kind: RoleBinding
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. metadata:
  5.   name: gitlab-ci
  6.   namespace: gitlab-ci
  7. subjects:
  8.   - kind: ServiceAccount
  9.     name: gitlab-ci
  10.     namespace: gitlab-ci
  11. roleRef:
  12.   kind: Role
  13.   name: gitlab-ci
  14.   apiGroup: rbac.authorization.k8s.io
复制代码
创建资源对象
  1. [root@master gitlab-ci]# kubectl apply -f runner-sa.yaml
  2. [root@master gitlab-ci]# kubectl apply -f runner-role.yaml
  3. [root@master gitlab-ci]# kubectl apply -f runner-rb.yaml
复制代码
  1. apiVersion: rbac.authorization.k8s.io/v1
  2. kind: ClusterRoleBinding
  3. metadata:
  4.   name: default
  5.   labels:
  6.     k8s-app: gitlab-default
  7. roleRef:
  8.   apiGroup: rbac.authorization.k8s.io
  9.   kind: ClusterRole
  10.   name: cluster-admin
  11. subjects:
  12.   - kind: ServiceAccount
  13.     name: default
  14.     namespace: gitlab-ci
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表