• 2022 年全国职业院校技能大赛高职组云计算赛项-容器云环境搭建



    一、前言

    来自与2022国赛样卷
    说明:完成本任务需要两台安装了CentOS7.9操作系统的云主机master和node,镜像包中有本次容器云平台部署和运维所需的所有文件。
    云梦公司存在两套虚拟化调度平台,虚拟机使用OpenStack调度,容器使用Kubernetes调度,两套系统两班人马,人力和资源都存在着一定的重叠和浪费。且该公司产品开发上线周期长,用户规模大且版本更新频繁。新版本的每次上线,产品都要承受极大的压力。
    经过技术调研,公司决定引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器等,实现一套调度,多种运行时。同时研发团队决定搭建基于Kubernetes 的CICD环境,基于这个平台来实现DevOps的部分流程,并基于Kubernetes实现业务系统的灰度发布。
    为了能够让云梦公司开发的Web应用系统产品能够缩减开发周期,快速迭代版本,并实现业务从老版本到新版本的平滑过渡,避免升级过程中出现的问题对用户造成的影响。研发部决定使用微服务架构,实现基于Kubernetes的容器化部署、CICD和运维开发。

    二、容器云平台搭建

    1. 在master节点完成Docker CE、docker-compose以及Harbor仓库的安装,导入所有镜像,并推送到私有仓库。
    2. 在master、node节点完成Kubernetes集群的安装。
    3. 在Kubernetes集群中完成KubeVirt环境的安装。
    4. 在Kubernetes集群中完成服务网格(ServiceMesh)项目Istio环境的安装。
    5. 集群部署完成后,使用kubectl自带排序功能,列出集群内所有的Pod,并以name字段排序。

    2.1 节点规划

    节点IP角色备注
    192.168.100.10masterkubernetes集群master节点、Harbor仓库节点
    192.168.100.20workerkubernetes集群node节点

    2.2 基础环境配置

    将**chinaskills_cloud_paas_v2.0.2.iso**上传到master服务器上

    [root@localhost ~]# hostnamectl set-hostname master 
    [root@localhost ~]# hostnamectl set-hostname node
    [root@localhost ~]# mount chinaskills_cloud_paas_v2.0.2.iso /mnt/
    mount: /dev/loop0 is write-protected, mounting read-only
    [root@localhost ~]# cd /mnt/
    [root@localhost mnt]# ls  #这个目录下存在如下软件包
    dependencies     harbor-offline.tar.gz           istio.tar.gz  kubernetes.tar.gz
    extended-images  helm-v3.7.1-linux-amd64.tar.gz  kubeeasy      kubevirt.tar.gz
    [root@localhost mnt]# cp -rfv /mnt/* /opt/  #将软件包都复制出来
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.3 安装kubeeasy

    kubeeasy为kubernetes集群专业部署工具,极大的简化了部署流程。其特性如下:

    1. 全自动化安装流程
    2. 支持DNS识别集群
    3. 支持自我修复等等

    在master节点安装kubeeasy工具

    [root@master ~]# mv /opt/kubeeasy /usr/bin/kubeeasy
    
    • 1

    2.4 安装docker、harbor、docker-compose

    [root@master ~]# kubeeasy install depend --host 192.168.100.10,192.168.100.20 --user root --password 000000 --offline-file /opt/dependencies/base-rpms.tar.gz    
    [2022-06-25 11:58:31] INFO:    [start] bash kubeeasy install depend --host 192.168.100.10,192.168.100.20 --user root --password ****** --offline-file /opt/dependencies/base-rpms.tar.gz
    [2022-06-25 11:58:31] INFO:    [offline] unzip offline dependencies package on local.
    [2022-06-25 11:58:33] INFO:    [offline] unzip offline dependencies package succeeded.
    [2022-06-25 11:58:33] INFO:    [install] install dependencies packages on local.
    [root@master ~]# tail -f /var/log/kubeinstall.log  通过这个可以看到安装报错以及安装步骤
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.5 配置ssh免密钥

    [root@master ~]# kubeeasy check ssh --host 192.168.100.10,192.168.100.20 --user root --password 000000
    [2022-06-25 12:03:05] INFO:    [start] bash kubeeasy check ssh --host 192.168.100.10,192.168.100.20 --user root --password ******
    [2022-06-25 12:03:05] INFO:    [check] sshpass command exists.
    [2022-06-25 12:03:05] INFO:    [check] ssh 192.168.100.10 connection succeeded.
    [2022-06-25 12:03:05] INFO:    [check] ssh 192.168.100.20 connection succeeded.
    
      See detailed log >> /var/log/kubeinstall.log 
    
    [root@master ~]# kubeeasy create ssh-keygen --master 192.168.100.10 --worker 192.168.100.20 --user root --password 000000
    [2022-06-25 12:04:06] INFO:    [start] bash kubeeasy create ssh-keygen --master 192.168.100.10 --worker 192.168.100.20 --user root --password ******
    [2022-06-25 12:04:06] INFO:    [check] sshpass command exists.
    [2022-06-25 12:04:07] INFO:    [check] ssh 192.168.100.10 connection succeeded.
    [2022-06-25 12:04:07] INFO:    [check] ssh 192.168.100.20 connection succeeded.
    [2022-06-25 12:04:07] INFO:    [create] create ssh keygen 192.168.100.10
    [2022-06-25 12:04:08] INFO:    [create] create ssh keygen 192.168.100.10 succeeded.
    [2022-06-25 12:04:08] INFO:    [create] create ssh keygen 192.168.100.20
    [2022-06-25 12:04:08] INFO:    [create] create ssh keygen 192.168.100.20 succeeded.
    
      See detailed log >> /var/log/kubeinstall.log 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2.6 部署Kubernetes集群

    在 master 节点执行以下命令部署 Kubernetes 集群

    更多资料私聊我
    [root@master ~]# kubeeasy install kubernetes --master 192.168.100.10 --worker 192.168.100.20 ........................
    [2022-06-25 12:06:39] INFO:    [start] bash kubeeasy install kubernetes --master 192.168.100.10 --worker 192.168.100.20 --user root --password ****** --version 1.22.1 --offline-file /opt/kubernetes.tar.gz
    [2022-06-25 12:06:39] INFO:    [check] sshpass command exists.
    [2022-06-25 12:06:39] INFO:    [check] rsync command exists.
    [2022-06-25 12:06:39] INFO:    [check] ssh 192.168.100.10 connection succeeded.
    [2022-06-25 12:06:39] INFO:    [check] ssh 192.168.100.20 connection succeeded.
    [2022-06-25 12:06:39] INFO:    [offline] unzip offline package on local.
    查看运行状态
    [root@master ~]# kubectl cluster-info
    Kubernetes control plane is running at https://apiserver.cluster.local:6443
    CoreDNS is running at
    https://apiserver.cluster.local:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump
    
    [root@k8s-master-node1 ~]# kubectl top nodes --use-protocol-buffers
    NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
    master 389m 4% 6926Mi 43%
    worker 875m 10% 3365Mi 21%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2.7 浏览器访问开放平台

    在浏览器上访问一道云云开发平台(http://master_IP:30080),如图所示
    密码:000000000000
    在这里插入图片描述

    2.8 查看集群状态

    在这里插入图片描述

    2.9 部署KubeVirt 集群

    在master部署kubevirt集群

    [root@master ~]# kubeeasy add --virt kubevirt 
    [root@k8s-master-node1 ~]# kubectl -n kubevirt get pods  查看状态
    virt-api-8d998846b-2xx5m 1/1 Running 0 86s
    virt-api-8d998846b-tqwhq 1/1 Running 0 86s
    virt-controller-76b86f6965-gz8m4 1/1 Running 0 62s
    virt-controller-76b86f6965-pjjv5 1/1 Running 0 62s
    virt-handler-hvf45 1/1 Running 0 62s
    virt-handler-x7bvj 1/1 Running 0 62s
    virt-operator-579f86869c-k9nw4 1/1 Running 0 2m22s
    virt-operator-579f86869c-vtrkn 1/1 Running 0 2m22
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.0 部署 Istio

    [root@master ~]# kubeeasy add --istio istio
    [root@master ~]# kubectl -n istio-system get pods
    NAME READY STATUS RESTARTS AGE
    grafana-6ccd56f4b6-twwjv 1/1 Running 0 5m15s
    istio-egressgateway-7f4864f59c-nxz2l 1/1 Running 0 5m34s
    istio-ingressgateway-55d9fb9f-jzhnb 1/1 Running 0 5m34s
    istiod-555d47cb65-jwkgp 1/1 Running 0 5m40s
    jaeger-5d44bc5c5d-h9t29 1/1 Running 0 5m15s
    kiali-79b86ff5bc-v9sfk 1/1 Running 0 5m15s
    prometheus-64fd8ccd65-5px64 2/2 Running 0 5m15s
    查看 Istio 版本信息:
    [root@master ~]# istioctl version
    client version: 1.12.0
    control plane version: 1.12.0
    data plane version: 1.12.0 (2 proxies)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.1 istio可视化

    2022年最新资料请私聊我!!!!
    参考文档

    在这里插入图片描述
    软件包
    在这里插入图片描述

  • 相关阅读:
    二项分布和泊松分布
    每日面试题和算法
    wireshark过滤CAN报文小技巧
    【C++初阶(三)】引用&内联函数&auto关键字
    最新版校园招聘进大厂系列----------(4)京东篇 -----未完待续
    四足蜘蛛机械人
    上周内容回顾
    Cygwin使用心得
    ELK 企业级日志分析系统
    上市公司信息透明度数据(1991-2019年)包含stata源代码和数据
  • 原文地址:https://blog.csdn.net/qq_45631844/article/details/125456866