官方文档

记录下 Longhorn 的使用 - Rancher Lab 提供的开源分布式块存储方案

Longhorn 支持以下架构:

  1. AMD64
  2. ARM64(实验性)

Longhorn 需要 open-iscsi、curl、findmnt、grep、awk、blkid、lsblk 的依赖(是否需要单独安装可以使用这个脚本进行验证,CentOS 7 有可能需要单独安装下 jqopen-iscsi

利用 Rancher 安装

在 Rancher UI 上选择自己的集群,然后找到对应 App 安装即可,v2.6.3 测试没问题(尝试用 kubectl 安装的时候告诉我缺少 NODE_NAME ENV,但是 Rancher 就正常):https://longhorn.io/docs/1.2.3/deploy/install/install-with-rancher/

查看对应几个 Node 是否正常创建 Longhorn

默认数据路径:

1
ls /var/lib/longhorn

界面

创建应用进行测试

应用 yaml 创建 PVC 和 pod

pvc.yaml

1
2
3
4
5
6
7
8
9
10
11
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: longhorn-volv-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 2Gi

pod.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
kind: Pod
metadata:
name: volume-test
namespace: default
spec:
containers:
- name: volume-test
image: nginx:stable-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
- name: volv
mountPath: /data
ports:
- containerPort: 80
volumes:
- name: volv
persistentVolumeClaim:
claimName: longhorn-volv-pvc

整个集群空间使用

Dashboard 页面中,Longhorn 会显示集群空间使用信息:

  • Schedulable:可用于 Longhorn 卷调度的实际空间。
  • Reserved:为其他应用程序和系统保留的空间。
  • Used:Longhorn、系统和其他应用程序使用的实际空间。
  • Disabled:不允许调度 Longhorn 卷的磁盘/节点的总空间。

每个节点的空间使用

Node 页面中,Longhorn 将显示每个节点的空间分配、调度和使用信息:

  • Size column:Longhorn 卷可以使用的最大实际可用空间。它等于节点的总磁盘空间减去保留空间。
  • Allocated 列:左边的数字是已经用于卷调度的大小,并不表示空间已经用于 Longhorn 卷数据存储。右边的数字是卷调度的最大大小,Size 乘以 Storage Over Provisioning Percentage。(在上图中,Storage Over Provisioning Percentage 是 500。)因此,这两个数字之间的差异(我们称之为可分配空间)决定了是否可以将卷副本调度到该节点。
  • Used column:左边部分表示该节点当前使用的空间。整条表示节点的总空间。

注意:设置大于 100 时,可分配空间可能会大于节点的实际可用空间 Storage Over Provisioning Percentage。如果卷被大量使用,卷快照中会存储大量历史数据,请谨慎使用此设置的值很大。有关设置的更多信息,请参阅此处了解详细信息。