• 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年最新资料请私聊我!!!!
    参考文档

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

  • 相关阅读:
    【allegro 17.4软件操作保姆级教程九】布线后检查与调整
    从android源码获取版本信息的方法
    5、Mybatis的查询功能(必定有返回值)
    C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件)(Custom Scripting Event)
    【Java】正则表达式,校验数据格式的合法性。
    【树形权限】树形列表权限互斥选择、el-tree设置禁用等等
    Llama模型家族训练奖励模型Reward Model技术及代码实战(三) 使用 TRL 训练奖励模型
    智能告警:如何通过监控易实现精准故障预警与快速定位
    中外联合培养工商管理博士|社科大新加坡社科大学中文授课DBA
    【神印王座】易军献身为林鑫挡箭,万万没想到林鑫太坑,大跌眼镜
  • 原文地址:https://blog.csdn.net/qq_45631844/article/details/125456866