| Longhorn | k8s | 操作系统 |
| v1.2.2 | 1.19.1 | centos8.2 |
本文采用kubectl方式部署,Longhorn有rancher在线方式部署。helm方式部署和kubectl方式部署。个人实验测试k8s版本比较老旧采用了很老的Longhorn版本但大致都差不多。另外吐槽一下,csdn关于Longhorn介绍没多少并且都像是抄袭从官网扒的一样没有什么自己的见解最烦的就是互相抄,这样的文档真是一点营养都没有都不如不写了翻来覆去全都一样的。抄别人的文档适可而止吧!话不多说直接开始!
官网:Longhorn | Kubernetes 云原生分布式块存储解决方案 | Rancher
https://www.rancher.cn/longhorn
部署步骤
我是三台节点。1,2,3步骤三台节点都操作一遍
1.下载必要yaml文件
https://github.com/longhorn/longhorn/blob/v1.2.2/deploy/longhorn.yaml #核心部署yaml
https://github.com/longhorn/longhorn/blob/v1.2.2/deploy/longhorn-images.txt #镜像列表
https://github.com/longhorn/longhorn/blob/v1.2.2/examples/storageclass.yaml #sc模板
https://github.com/longhorn/longhorn/blob/v1.2.2/scripts/environment_check.sh #环境检查脚本
https://github.com/longhorn/longhorn/blob/v1.2.2/uninstall/uninstall.yaml #卸载脚本
2.yum下载前置依赖包
sudo yum install -y iscsi-initiator-utils device-mapper-persistent-data lvm2 kmod device-mapper iptables iproute
systemctl start iscsid
systemctl enable iscsid
systemctl start lvm2-monitor
systemctl enable lvm2-monitor
3.创建目录修改environment_check.sh配置
mkdir longhorn && cd longhorn
wget 1 第一步的地址
environment_check.sh 将
image: busybox 修改
image: gcr.io/google-containers/busybox:latest #镜像自行下载只要是busybox均可
imagePullPolicy: IfNotPresent
4.执行environment_check.sh
daemonset.apps/longhorn-environment-check created
waiting for pods to become ready (0/3)
waiting for pods to become ready (0/3)
all pods ready (3/3)
MountPropagation is enabled!
cleaning up...
daemonset.apps "longhorn-environment-check" deleted
clean up complete #成功
5.下载镜像(自行下载)
cat longhorn-images.txt
k8s.gcr.io/sig-storage/csi-attacher:v3.2.1
k8s.gcr.io/sig-storage/csi-provisioner:v2.1.2
k8s.gcr.io/sig-storage/csi-resizer:v1.2.0
k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3
k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.3.0
longhornio/backing-image-manager:v2_20210820
longhornio/longhorn-engine:v1.2.2
longhornio/longhorn-instance-manager:v1_20210731
longhornio/longhorn-manager:v1.2.2
longhornio/longhorn-share-manager:v1_20210914
longhornio/longhorn-ui:v1.2.2
6.开始部署
kubectl apply -f longhorn.yaml #过程较慢1-3分钟我的配置2核4G
执行成功后会如下

测试
Longhorn 存储路径
默认情况下,Longhorn 将数据存储在每个节点的 /var/lib/longhorn 目录下。这个目录包含了所有与 Longhorn 相关的数据,包括卷数据、快照、备份等。以下是该目录的一些子目录及其用途:/var/lib/longhorn/engine: 包含卷的实际数据。
/var/lib/longhorn/replica: 包含卷的副本数据。
/var/lib/longhorn/snapshot: 包含卷的快照数据。
/var/lib/longhorn/backing-image: 包含用于创建卷的基础镜像数据
但var数据存储太少了,我选择在/data/longhorn存数据
#前面步骤已经生成了longhorn。为了修改更彻底我们需要先卸载在修改在生成,有兴趣可以看一下longhorn.yaml内的configmap内容
kubectl apply -f uninstall.yaml
mkdir -p /data/longhorn
chmod 755 /data/longhorn
#卸载好以后修改longhorn.yaml
vim longhorn.yaml
default-data-path: /data/longhorn
#测试
kubectl apply -f storageclass.yaml
vi pod_with_pvc.yaml
修改此处
storageClassName: longhorn-test
kubectl apply -f pod_with_pvc.yaml
修改好输出存储目录测试pvc是否存储在指定目录 /data/longhorn

各个组件具备功能
longhorn-manager:Longhorn 的核心控制器,负责协调和管理存储资源。它监控 Kubernetes API Server 并根据用户创建的 StorageClass、PersistentVolumeClaim (PVC) 和 PersistentVolume (PV) 来自动创建和管理 Longhorn 卷实例。
engine-image-ei:长角引擎图像管理器,负责维护 Longhorn 引擎镜像。引擎镜像包含 Longhorn 引擎容器的预拉取副本,用于快速启动新的卷实例。
instance-manager-e*与instance-manager-r*:实例管理器负责运行 Longhorn 卷实例和复制控制器。e 类型的实例管理器用于控制卷实例。r 类型的实例管理器用于控制复制控制器。
longhorn-csi-plugin:兼容 Kubernetes CSI 规范的插件,提供与 Kubernetes 的接口,用于挂载和卸载卷。
CSI Attacher:负责将 Longhorn 卷附加到 Kubernetes 节点上的 Pod。
CSI Provisioner:负责根据 StorageClass 自动创建和删除 Longhorn PV。
CSI Resizer:负责调整 Longhorn 卷大小。
CSI Snapshotter:负责创建和管理 Longhorn 卷快照。
Backward Compatibility:为了向后兼容,部署旧版本的 Flexvolume 插件和 Volume Plugin。
UI:Longhorn 用户界面,提供 Web 控制面板供用户管理和监视 Longhorn 资源。
Pod 之间的交互
Longhorn Manager 与 Kubernetes API Server 通信,接收用户的请求并协调其他组件的工作。
Engine Image Manager 与 Longhorn Manager 通信,提供引擎镜像。
Instance Manager 与 Longhorn Manager 通信,报告卷的状态并响应管理指令。
CSI 插件与 Longhorn Manager 通信,报告卷的状态并响应挂载和卸载请求。
CSI Attacher、Provisioner、Resizer 和 Snapshotter 与 Longhorn Manager 通信,报告状态并响应相应的操作请求。
Longhorn 工作流程如下
1.用户创建一个 PVC。
2.Longhorn Manager 接收到 PVC 请求后,根据 StorageClass 创建一个新的 Longhorn 卷实例。
3.Engine Image Manager 提供预先拉取的引擎镜像给 Instance Manager。
4.Instance Manager 根据需要启动卷实例和复制控制器。
5.CSI 插件将卷挂载到 Pod 上。
6.当用户请求扩展卷时,CSI Resizer 处理请求并将请求发送给 Longhorn Manager。
7.当用户请求快照时,CSI Snapshotter 处理请求并将请求发送给 Longhorn Manager。
8.Longhorn Manager 更新卷状态并在需要时创建新的副本。
9.用户可以通过 UI 或 CLI 监视和管理 Longhorn 资源。

本文所用部署包
链接:https://caiyun.139.com/m/i?2hoTcnfjPcgpc
提取码:gbrc
复制内容打开移动云盘PC客户端,操作更方便哦
1692

被折叠的 条评论
为什么被折叠?



