当前位置: 首页 > news >正文

2024广东省职业技能大赛云计算赛项实战——容器云平台搭建

容器云平台搭建

前言

容器镜像使用的是斗学培训平台提供的镜像包,这东西网上都没有,一堆人要,我是靠自己想的方法获取到了,也不敢给。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/

虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我这篇文章:职业技能大赛云计算赛项实战——OpenStack搭建-CSDN博客
CentOS7 系统选择 2009 版本:CentOS-7-x86_64-DVD-2009.iso
可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/

容器的搭建部分相较于私有部分而言十分简单

节点规划如下

主机名IP/24节点
Master192.168.200.11master节点
Worker192.168.200.12node节点

操作过程

上传镜像

#上传镜像包到master节点在平台的环境的话,就是直接Curl获取:
#curl -O http://mirrors.douxuedu.com/competition/cchinaskills_cloud_paas_v2.0.2.iso
[root@localhost ~]# ls
anaconda-ks.cfg  chinaskills_cloud_paas_v2.0.2.iso

解压镜像包

#Master:
#先临时挂载到mnt目录
[root@localhost ~]# mount -o loop chinaskills_cloud_paas_v2.0.2.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
#再复制到opt目录,这样挂载后的内容重启系统不会消失
[root@localhost ~]# cp -rf /mnt/* /opt/
[root@localhost ~]# umount /mnt/
[root@localhost ~]# ls /opt/
dependencies           helm-v3.7.1-linux-amd64.tar.gz  kubernetes.tar.gz
extended-images        istio.tar.gz                    kubevirt.tar.gz
harbor-offline.tar.gz  kubeeasy

安装Kubeeasy

Kubeeasy是一个开源的Kubernetes管理工具,可以简化 Kubernetes 集群的部署、管理和运维,还提供了图形化界面和命令行工具,可以帮助用户更轻松地创建和管理Kubernetes集群,从而提高工作效率和降低Kubernetes的使用门槛。

#Master:
[root@localhost ~]# mv /opt/kubeeasy /usr/bin/kubeeasy
#我为什么说这个搭建简单呢,就是因为后续的部分,都可以通过-h来查看命令
[root@localhost ~]# kubeeasy -h
...
Example:[install dependencies package cluster]#安装依赖包的命令,主要是docker-ce、wget、unzip、vim、git这些kubeeasy install dependencies \--host 10.24.2.31,10.24.2.14,10.24.2.46 \--user root \--password 000000 \--offline-file /opt/dependencies/base-rpms.tar.gz[install k8s cluster offline]#安装k8s集群的命令kubeeasy install kubernetes \--master 10.24.2.31 \--worker 10.24.2.43,10.24.2.34,10.24.2.40 \--user root \--password 000000 \--version 1.22.1 \--offline-file /opt/kubernetes.tar.gz[reset force k8s node]#重置集群的命令,如果搭建过程中出错了可以重新来kubeeasy reset --force \--master 10.24.2.31 \--worker 10.24.2.43 \--user root \--password 000000[add node] ##Only add worker#添加集群节点的命令,只能添加worker节点kubeeasy add \--master 10.24.2.31,10.24.2.32--user root \--password 000000kubeeasy add \--worker 10.24.2.31,10.24.2.32--user root \--password 000000#安装kubevirt的命令[add virt]kubeeasy add --virt kubevirt#安装harbor仓库的命令[add harbor]kubeeasy add --registry harbor
#我们可以先安装依赖包,复制命令改一改IP就行了
[root@localhost ~]# kubeeasy install dependencies \
> --host 192.168.200.11,192.168.200.12 \
> --user root \
> --password 000000 \
> --offline-file /opt/dependencies/base-rpms.tar.gz

配置免密钥登录

在搭建k8s时,需要频繁的通过ssh远程登录,此时配置免密钥就很有必要,kubeeasy也提供了配置的命令,我们直接用。

[root@localhost ~]# kubeeasy create ssh-keygen \
> --master 192.168.200.11 \
> --worker 192.168.200.12 \
> --user root --password 000000

安装K8S

这个就不用我过多介绍了吧?K8S即Kubernetes,一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。

#同样根据-h的命令改一改就行了
[root@localhost ~]# kubeeasy install kubernetes \
> --master 192.168.200.11 \
> --worker 192.168.200.12 \
> --user root \
> --password 000000 \
> --version 1.22.1 \
> --offline-file /opt/kubernetes.tar.gz
#我们可以看一下集群的节点状态
[root@localhost ~]# kubectl get nodes
NAME               STATUS   ROLES                         AGE     VERSION
k8s-master-node1   Ready    control-plane,master,worker   35s     v1.22.1
k8s-worker-node1   Ready    worker                        15s     v1.22.1
#看一下集群的负载情况
[root@localhost ~]# kubectl top nodes --use-protocol-buffers
NAME               CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master-node1   244m         6%     1329Mi          34%       
k8s-worker-node1   110m         2%     676Mi           17%
#同时,我们重新登录一下终端,就会显示该节点的设备信息和资源使用情况██╗  ██╗ █████╗ ███████╗██║ ██╔╝██╔══██╗██╔════╝█████╔╝ ╚█████╔╝███████╗██╔═██╗ ██╔══██╗╚════██║██║  ██╗╚█████╔╝███████║╚═╝  ╚═╝ ╚════╝ ╚══════╝ Information as of: 2024-06-17 23:15:19Product............: VMware Virtual Platform None#系统在VMware虚拟化平台上运行OS.................: CentOS Linux release 7.9.2009 (Core)#操作系统是CentOS 7.9.2009Kernel.............: Linux 3.10.0-1160.el7.x86_64 x86_64 GNU/Linux#内核版本CPU................: 12th Gen Intel(R) Core(TM) i5-12450H 4P 1C 4L#处理器信息,这里指的是我物理机的Hostname...........: k8s-master-node1IP Addresses.......: 192.168.200.11#主机名和IPUptime.............: 0 days, 01h 26m 31s#系统已运行时间Memory.............: 1.36GiB of 3.84GiB RAM used (35.51%)#共有3.84G的内存,使用了1.36G,占用率是35.51%Load Averages......: 0.43 / 0.45 / 0.46 with 4 core(s) at 2495.998Hz#系统的平均负载(分别为过去1分钟5分钟和15分钟),共4个CPU核心,每个核心的频率是2495.998HzDisk Usage.........: 14G of 37G disk space used (38%)#磁盘总空间为37G,用了14G,占用率为38%Users online.......: 4#有4个在线的用户Running Processes..: 180#有180个正在运行的进程Container Info.....: Exited:2 Running:12 Images:27#容器的信息,有27个容器镜像,12个正在运行,2个已经退出[root@k8s-master-node1 ~]# 

安装KubeVirt

KubeVirt是一个在K8S上运行虚拟化工作负载的开源项目。它让K8S可以在集群里管理和运行虚拟机(VMs),同时与容器化的应用一起使用。KubeVirt 提供了一种将传统虚拟化技术与容器编排平台结合的方法。它允许用户在K8S环境中创建和管理可以运行传统基于虚拟机的应用程序和操作系统的虚拟机实例。有了KubeVirt,我们就可以在同一个K8S集群中同时管理容器和虚拟机,简化了混合云环境中多种工作负载的管理。

#使用-h得到的命令就行了
[root@k8s-master-node1 ~]# kubeeasy add --virt kubevirt
#通过查看KubeVirt CR的资源定义,我们可以看到kubevirt的版本为v0.47.1
[root@k8s-master-node1 ~]# kubectl get kubevirt -n kubevirt -o yaml | grep Version
...
observedKubeVirtVersion: v0.47.1
...
#我们还可以看一下Pod的信息
[root@k8s-master-node1 ~]# kubectl -n kubevirt get pods
NAME                              READY   STATUS    RESTARTS   AGE
virt-api-86f9d6d4f-22khz          1/1     Running   0          85s
virt-api-86f9d6d4f-jgkld          1/1     Running   0          85s
virt-controller-54b79f5db-96xsb   1/1     Running   0          60s
virt-controller-54b79f5db-wmsxs   1/1     Running   0          60s
virt-handler-7hzcr                1/1     Running   0          60s
virt-handler-jpwsd                1/1     Running   0          60s
virt-operator-6fbd74566c-bq4sc    1/1     Running   0          116s
virt-operator-6fbd74566c-sbn8l    1/1     Running   0          116s

安装Istio服务网格

Istio 是一个开源的服务网格,用于连接、安全、控制和观察微服务应用程序的通信。它提供了一种简单的方式来建立服务间的安全连接、流量管理、策略实施以及监控功能,而无需对每个服务进行代码更改,让我们可以更专注于业务逻辑而不必担心通信、安全和可观察性的实施细节。

#同样使用-h得到的命令就行了
[root@k8s-master-node1 ~]# kubeeasy add --istio istio
#我们可以查看istio的版本,为v1.12.0
[root@k8s-master-node1 ~]# istioctl version
client version: 1.12.0
control plane version: 1.12.0
data plane version: 1.12.0 (2 proxies)
#查看Pod
[root@k8s-master-node1 ~]# kubectl -n istio-system get pods
NAME                                   READY   STATUS    RESTARTS   AGE
grafana-6ccd56f4b6-8vbq7               1/1     Running   0          3m14s
istio-egressgateway-7f4864f59c-wrsgm   1/1     Running   0          3m31s
istio-ingressgateway-55d9fb9f-7h2rk    1/1     Running   0          3m30s
istiod-555d47cb65-nrjs6                1/1     Running   0          3m37s
jaeger-5d44bc5c5d-rklp2                1/1     Running   0          3m13s
kiali-9f9596d69-vtdvh                  1/1     Running   0          3m13s
prometheus-64fd8ccd65-4cq2m            2/2     Running   0          3m13s

我们可以通过浏览器输入master节点ip:对应端口访问对应工具的操作界面

33000访问Grafana(用于可视化和展示监控数据,帮助用户创建、浏览和共享仪表板,实时显示来自不同数据源(如Prometheus)的指标数据)
30090访问Prometheus(普罗米修斯,开源监控系统,用于收集、存储和查询监控指标。可以与Grafana结合使用,通过查询语言PromQL 实现对监控数据的分析和可视化)
30686访问Jaeger(分布式追踪系统,用于跟踪服务间的调用链路和性能分析。它可以帮助发现服务调用的延迟和瓶颈问题,从而优化微服务架构的性能)
20001访问Kiali(一个用于可视化服务网格拓扑和管理的工具,提供了对服务依赖关系、健康状态和流量管理的可视化展示,帮助用户更好地理解和管理服务网格)

部署Harbor仓库

Harbor是一个开源的企业级容器镜像仓库,为企业提供了集中式的容器镜像管理平台,同时注重安全性、权限管理和漏洞扫描等方面,为容器化应用的构建和部署提供了便利和可靠性。

#同样使用-h得到的命令就行了
[root@k8s-master-node1 ~]# kubeeasy add --registry harbor
#查看一下仓库的状态
[root@k8s-master-node1 ~]# systemctl status harbor
● harbor.service - HarborLoaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)Active: active (running) since 一 2024-06-17 23:53:42 CST; 1min 3s agoDocs: http://github.com/vmware/harborMain PID: 103621 (docker-compose)Tasks: 9Memory: 13.2MCGroup: /system.slice/harbor.service└─103621 /usr/local/bin/docker-compose -f /opt/harbor/docker-compose.yml up
...
#我们可以通过在浏览器输入http://master节点ip的方式访问Harbor的Web界面
#账号/密码:admin/Harbor12345

后语

至此,容器云搭建完毕,可以进行后续的运维题目还开发题目

相关文章:

  • python watchdog 配置文件热更新
  • BP神经网络的反向传播(Back Propagation)
  • 方法区讲解
  • EasyExcel 导出批注信息
  • 【Go】十四、图形验证码、短信验证码、注册接口与redis的简单使用
  • 单片机练习题3
  • 每日优秀影视分享❗❗
  • WPF文本绑定显示格式StringFormat设置-特殊格式时间日期和多数据绑定
  • 原生dom操作快速写入html渲染(insertAdjacentHTML)
  • Cadence:Conformal系列形式验证工具
  • 深入解析Netty的Reactor模型及其实现:详解与代码示例
  • Pikachu靶场--XSS
  • excel数据透视
  • Ubuntu常见命令解释
  • 修改主频睡眠模式停止模式待机模式
  • 《Java编程思想》读书笔记-对象导论
  • 2017-09-12 前端日报
  • css选择器
  • FastReport在线报表设计器工作原理
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript-Array类型
  • JavaScript设计模式之工厂模式
  • Java的Interrupt与线程中断
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js正则,这点儿就够用了
  • Linux中的硬链接与软链接
  • npx命令介绍
  • python_bomb----数据类型总结
  • rc-form之最单纯情况
  • webpack入门学习手记(二)
  • 百度小程序遇到的问题
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 新书推荐|Windows黑客编程技术详解
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 以太坊客户端Geth命令参数详解
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # SpringBoot 如何让指定的Bean先加载
  • (70min)字节暑假实习二面(已挂)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (LeetCode C++)盛最多水的容器
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (四)库存超卖案例实战——优化redis分布式锁
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .Net 基于MiniExcel的导入功能接口示例
  • .net 使用ajax控件后如何调用前端脚本
  • .net 无限分类
  • .NET/C# 的字符串暂存池
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • ;号自动换行
  • [ NOI 2001 ] 食物链
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [001-03-007].第07节:Redis中的管道