网络知识 娱乐 2022 年全国职业院校技能大赛高职组云计算赛项-容器云环境搭建

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

文章目录

    • 一、前言
    • 二、容器云平台搭建
      • 2.1 节点规划
      • 2.2 基础环境配置
      • 2.3 安装kubeeasy
      • 2.4 安装docker、harbor、docker-compose
      • 2.5 配置ssh免密钥
      • 2.6 部署Kubernetes集群
      • 2.7 浏览器访问开放平台
      • 2.8 查看集群状态
      • 2.9 部署KubeVirt 集群
      • 3.0 部署 Istio
      • 3.1 istio可视化


一、前言

来自与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/  #将软件包都复制出来

2.3 安装kubeeasy

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

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

在master节点安装kubeeasy工具

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

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  通过这个可以看到安装报错以及安装步骤

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 

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%

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

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)

3.1 istio可视化

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

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