【云原生系列--Longhorn的摆设】
Longhorn摆设手册1.摆设longhorn
longhorn架构图:
https://i-blog.csdnimg.cn/direct/6a4bd79040694d62a6d6e7cdef0c4405.png
1.1摆设环境要求
[*] kubernetes版本要大于v1.21
[*] 每个节点都必须装open-iscsi ,Longhorn依赖于 iscsiadm主机为 Kubernetes 提供长期卷。
apt-get install -y open-iscsi
[*] RWX 支持要求每个节点都安装 NFSv4 客户端
[*] 主机文件体系支持file extents存储数据的功能
[*]ext4
[*]xfs
[*] bash,curl,findmnt,grep,awk,blkid,lsblk 必须安装
[*] Mount propagation 必须启用,它答应将一个容器挂载的卷与同一 pod 中的其他容器共享,甚至可以与同一节点上的其他 pod 共享
1.2 环境查抄
root@master01:~/Longhorn# wget https://github.com/longhorn/cli/releases/download/v1.7.1/longhornctl-linux-amd64
root@master01:~/Longhorn# ll
total 192552
-rwxr-xr-x1 root root40878232 Nov 15 10:16 longhornctl-linux-amd64
root@master01:~/Longhorn# chmod a+xlonghornctl-linux-amd64
root@master01:~/Longhorn# export KUBECONFIG=/root/.kube/config
root@master01:~/Longhorn# ./longhornctl-linux-amd64 check preflight#这个是每个节点启动pod来检查环境是否合格
https://i-blog.csdnimg.cn/direct/14657732611549ebb9c7af17a8f9222e.png
1.3 使用helm摆设longhorn
留意事项:longhorn默认的数据存放路径是/var/lib/longhorn,根据实际环境修改,可以在values.yaml文件里修改,但是我修改时没有生效,故采用传参的方式修改
1、添加helm仓库
helm repo add longhorn https://charts.longhorn.io
helm repo update
2、创建命名空间longhorn-system(在chart包中写死了命名空间必须是longhorn)
kubectl create ns longhorn-system
3、安装longhorn
(1)在线安装
helm install longhorn longhorn/longhorn --namespace longhorn-system --set defaultDataPath=/data/longhorn --create-namespace --version 1.7.1
(2)离线安装
wgethttps://github.com/longhorn/longhorn/releases/download/v1.7.1/charts.tar.gz
helm install longhorn longhorn --namespace longhorn-system--set defaultDataPath=/data/longhorn
root@master01:~/Longhorn/longhorn# kubectl get pod -n longhorn-system
NAME READY STATUS RESTARTS AGE
csi-attacher-644c7b7568-495hh 1/1 Running 0 56m
csi-attacher-644c7b7568-cqb66 1/1 Running 0 56m
csi-attacher-644c7b7568-v9p4r 1/1 Running 1 (71m ago) 89m
csi-provisioner-58cc84b487-24gc4 1/1 Running 0 56m
csi-provisioner-58cc84b487-hqtds 1/1 Running 1 (71m ago) 89m
csi-provisioner-58cc84b487-jj8z5 1/1 Running 0 56m
csi-resizer-6d5c898684-gk5kx 1/1 Running 0 56m
csi-resizer-6d5c898684-lmln4 1/1 Running 0 89m
csi-resizer-6d5c898684-rmwrs 1/1 Running 0 56m
csi-snapshotter-68b686dc4-fgm4f 1/1 Running 0 56m
csi-snapshotter-68b686dc4-lfgx5 1/1 Running 0 56m
csi-snapshotter-68b686dc4-r552m 1/1 Running 0 89m
engine-image-ei-f4f7aa25-54kmw 1/1 Running 0 89m
engine-image-ei-f4f7aa25-bfnbt 1/1 Running 0 89m
engine-image-ei-f4f7aa25-w4pmj 1/1 Running 0 89m
instance-manager-2b871e5c27104071c7f8ae34c9384354 1/1 Running 0 54m
instance-manager-6d8ba5e2d6850b4dbd6df7e2bf4f9c16 1/1 Running 0 54m
instance-manager-95de354c4f2e1d5c13376714640f455c 1/1 Running 0 89m
longhorn-csi-plugin-2b2xc 3/3 Running 0 89m
longhorn-csi-plugin-5zb6x 3/3 Running 0 89m
longhorn-csi-plugin-9ccmx 3/3 Running 0 89m
longhorn-driver-deployer-795c448b6c-vcg46 1/1 Running 0 56m
longhorn-manager-4pg48 2/2 Running 5 (91m ago) 103m
longhorn-manager-dvjmd 2/2 Running 0 87m
longhorn-manager-jgmhw 2/2 Running 5 (91m ago) 103m
longhorn-ui-75f6f6bc8b-b5vkp 1/1 Running 4 (90m ago) 91m
longhorn-ui-75f6f6bc8b-ktkfz 1/1 Running 2 (56m ago) 56m
#注意:部署longhorn需要拉取镜像
root@master01:~/Longhorn# cat pull-image.sh
nerdctl pull longhornio/longhorn-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-share-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-ui:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/csi-attacher:v4.6.1 --namespace=k8s.io
nerdctl pull longhornio/csi-provisioner:v4.0.1 --namespace=k8s.io
nerdctl pull longhornio/csi-resizer:v1.11.1 --namespace=k8s.io
nerdctl pull longhornio/csi-snapshotter:v7.0.2 --namespace=k8s.io
nerdctl pull longhornio/longhorn-engine:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/longhorn-instance-manager:v1.7.1 --namespace=k8s.io
nerdctl pull longhornio/csi-node-driver-registrar:v2.12.0 --namespace=k8s.io
nerdctl pull longhornio/livenessprobe:v2.14.0 --namespace=k8s.io
nerdctl pulllonghornio/longhorn-cli:v1.7.1 --namespace=k8s.io
nerdctl pull registry.k8s.io/pause:3.1 --namespace=k8s.io
nerdctl pull alpine:3.17 --namespace=k8s.io
1.4 查抄longhorn
1.4.1查看storageclass存储卷
root@master01:~/Longhorn# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
longhorn (default) driver.longhorn.io Delete Immediate true 92m
longhorn-static driver.longhorn.io Delete Immediate true 21m
nfs-client k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 49d
#可以看出longhorn自动给集群创建两个Storageclass动态分配卷且会自动给longhorn设置为default,longhorn-static这个Storageclass是手动创建pv、pvc卷,手动将pvc和Storageclass绑定
1.4.2创建pod
https://i-blog.csdnimg.cn/direct/f5e0c242608b4fca83b1959ea23826e6.png
因为我的集群只有三个节点,而longhorn是三副本存储机制,故我每个节点都存有pod的数据,如果你是四个node节点,你就会发现有个节点是没有mongodb-0 pod的数据
https://i-blog.csdnimg.cn/direct/6f7fe7fb3f78460281f376d814817c70.png
2.Longhorn组件的概念
2.1csi-attacher
[*]作用:csi-attacher 负责将 Kubernetes 的长期卷(Persistent Volume, PV)与容器(Pod)关联。它会确保在 Pod 被调度到节点时,正确地挂载相关的卷。
[*]功能:主要处理惩罚 CSI 卷的挂载操纵,即在 pod 创建时将卷“附加”(attach)到节点,大概在 pod 被删除时,卸载卷。
2.2csi-provisioner
[*]作用:csi-provisioner 是 Longhorn 的主动存储卷创建控制器,它负责动态创建存储卷。它与 Kubernetes 的 PersistentVolumeClaim(PVC)资源配合使用,当 PVC 创建时,如果没有匹配的长期卷,csi-provisioner 会调用 CSI 驱动去创建一个新的 Longhorn 卷。
[*]功能:监听 PVC 事件,基于用户请求主动创建或删除卷。这个组件使得卷的动态供应成为大概。
2.3csi-resizer
[*]作用:csi-resizer 负责在需要时调整卷的巨细(即扩容或缩容),当用户通过 PVC 调整卷巨细时,csi-resizer 会触发 Longhorn 进行相应的卷扩展或缩减。
[*]功能:监听 PVC 的 spec.resources.requests.storage 变革,并根据 PVC 的请求对卷进行扩展。它与 Longhorn 的存储引擎交互,确保实际存储卷的巨细和请求一致。
2.4csi-snapshotter
[*]作用:csi-snapshotter 负责对卷进行快照操纵。它答应用户创建卷的快照,以便进行数据备份、恢复或克隆操纵。
[*]功能:监听 Kubernetes 中的 VolumeSnapshot 资源,并与 Longhorn 交互来创建、删除和恢复卷快照。通过这个组件,用户可以在 Kubernetes 中管理 Longhorn 卷的快照。
2.5engine-image-ei
[*]作用:engine-image-ei 负责管理 Longhorn 存储引擎的镜像版本。在 Longhorn 中,每个存储引擎(例如,块存储的实现)都与一个“引擎镜像”相关联,这些镜像包罗特定版本的存储引擎和驱动步伐。
[*]功能:通过这个组件,Longhorn 可以管理和更新其存储引擎的版本,确保引擎镜像正确地加载和摆设。
2.6instance-manager
[*]作用:instance-manager 管理 Longhorn 中的数据卷和节点之间的连接。它负责为每个卷启动和管理虚拟机实例(或容器)来进行数据管理和 I/O 操纵。
[*]功能:在 Kubernetes 节点上创建并管理 Longhorn 数据卷的“实例”(实际运行的容器),这些实例负责数据的读取和写入操纵。instance-manager 确保数据存储和访问的高可用性和可靠性。
2.7longhorn-csi-plugin
[*]作用:longhorn-csi-plugin 是 Longhorn 提供的 CSI 插件,它答应 Kubernetes 使用 Longhorn 存储。它充当 Kubernetes 与 Longhorn 存储之间的中介,负责卷的挂载、卸载、创建等操纵。
[*]功能:实现了 Kubernetes CSI 卷插件的接口,负责与 Longhorn 存储体系的交互,包罗卷的创建、删除、挂载等操纵。
2.8longhorn-manager
[*]作用:longhorn-manager 是 Longhorn 的控制器组件,负责整个 Longhorn 体系的管理、协调和控制。它监视和管理 Longhorn 存储体系的各个组件,包罗卷、节点、快照、卷克隆等。
[*]功能:主要负责 Longhorn 存储体系的团体操纵,例如卷管理、快照管理、扩容和缩容操纵、节点状态管理等。它确保体系的健康状态,协调各个组件的工作。
2.9longhorn-ui
[*]作用:longhorn-ui 是 Longhorn 的用户界面组件,提供了一个 Web 界面,用户可以通过它来管理和监控 Longhorn 存储体系。它答应用户方便地查看存储卷的状态、创建和删除卷、管理快照等。
[*]功能:提供图形化界面用于卷管理、快照管理、节点监控和集群状态查看。用户可以通过 Web UI 来操纵和配置 Longhorn 存储体系,进行卷的创建、删除、备份等操纵。
总结:
[*]csi-attacher:卷挂载
[*]csi-provisioner:动态卷供应
[*]csi-resizer:卷扩展
[*]csi-snapshotter:卷快照
[*]engine-image-ei:存储引擎镜像管理
[*]instance-manager:管理存储实例
[*]longhorn-csi-plugin:与 Kubernetes 的 CSI 插件接口
[*]longhorn-manager:集群和组件管理
[*]longhorn-ui:图形化管理界面
参考链接:https://www.cnblogs.com/misakivv/p/18436873
官网:https://longhorn.io/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]