2024广东省职业技能大赛云计算——容器云平台(K8S集群)搭建
该文章涉及:Docker、Kubernetes、Kubeeasy、KubeVirt、Istio、Grafana、Prometheus、Jaeger、Kiali、Harbor
容器云平台搭建
前言
容器镜像使用的是斗学培训平台提供的镜像包,这东西网上都没有,一堆人要,我是靠自己想的方法获取到了,也不敢给。你们可以通过在这个网站申请环境进行操作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 | 节点 |
---|---|---|
Master | 192.168.200.11 | master节点 |
Worker | 192.168.200.12 | node节点 |
操作过程
上传镜像
#上传镜像包到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 000000
kubeeasy 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:19
Product............: VMware Virtual Platform None
#系统在VMware虚拟化平台上运行
OS.................: CentOS Linux release 7.9.2009 (Core)
#操作系统是CentOS 7.9.2009
Kernel.............: 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-node1
IP Addresses.......: 192.168.200.11
#主机名和IP
Uptime.............: 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.998Hz
Disk 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 - Harbor
Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)
Active: active (running) since 一 2024-06-17 23:53:42 CST; 1min 3s ago
Docs: http://github.com/vmware/harbor
Main PID: 103621 (docker-compose)
Tasks: 9
Memory: 13.2M
CGroup: /system.slice/harbor.service
└─103621 /usr/local/bin/docker-compose -f /opt/harbor/docker-compose.yml up
...
#我们可以通过在浏览器输入http://master节点ip的方式访问Harbor的Web界面
#账号/密码:admin/Harbor12345
后语
至此,容器云搭建完毕,可以进行后续的运维题目还开发题目
更多推荐
所有评论(0)