Linstor 在 Kubernetes 中集成 CSI 插件

Linstor 在 Kubernetes 集成 CSI 插件指南

以下是 Linstor 在 Kubernetes 中集成 CSI 插件 的完整指南,涵盖架构说明、部署步骤、StorageClass 配置、PVC 使用示例等,帮助你实现 Linstor 分布式块存储的自动化编排和持久化卷管理。


🧩 一、架构概览

Linstor CSI 插件通过 CSI(Container Storage Interface)标准与 Kubernetes 集成,主要组件如下:

组件描述
Linstor Controller控制面,管理资源调度、卷调度与复制等
Linstor Satellite部署在每个工作节点上,执行实际数据操作
CSI Controller Plugin接收 K8s CSI 请求并调用 Linstor API
CSI Node Plugin驻留在每个节点,负责挂载卷到 Pod
Linstor Operator(可选)用于自动化安装和管理 Linstor 组件

📦 二、前提条件

  1. 已部署的 Kubernetes 集群(建议 v1.21+)

  2. 每个节点安装好:

    • DRBD 模块(或使用 ZFS 后端)
    • LVM、ZFS、或其他存储后端(作为 Storage Pool)
  3. 启动并配置好的:

    • linstor-controller
    • 至少两个 linstor-satellite 节点

🛠️ 三、部署 Linstor CSI 插件

1. 添加 LINBIT 官方 Helm 仓库(推荐方式)

helm repo add linstor https://charts.linstor.io/
helm repo update

2. 安装 Linstor CSI 插件

helm install linstor-csi linstor/linstor-csi \
  --namespace linstor \
  --create-namespace

你也可以单独安装 linstor-satellitelinstor-controller,或使用 linstor-operator 统一部署。


🧾 四、创建 StorageClass

以下是一个典型的 StorageClass 配置示例:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: linstor-sc
provisioner: linstor.csi.linbit.com
parameters:
  storagePool: lvm-thin  # 指定 Linstor 中的存储池
  replication: "2"       # 设置副本数(需至少 2 个 Satellite 节点)
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

字段说明

  • provisioner:Linstor CSI 插件名称(固定写法)
  • parameters.storagePool:你在 Linstor 中配置的存储池名
  • parameters.replication:副本数,常见为 12
  • volumeBindingMode: WaitForFirstConsumer:延迟绑定,适用于动态调度

📄 五、创建 PVC(动态卷申请)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: linstor-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: linstor-sc
  resources:
    requests:
      storage: 10Gi

创建后,Linstor 会根据配置自动:

  • 在选定的存储节点上创建卷
  • 建立 DRBD 资源副本
  • 将其挂载到使用该 PVC 的 Pod

🚀 六、使用 PVC 的 Pod 示例

apiVersion: v1
kind: Pod
metadata:
  name: linstor-test-pod
spec:
  containers:
  - name: app
    image: busybox
    command: [ "sleep", "3600" ]
    volumeMounts:
    - mountPath: "/data"
      name: linstor-volume
  volumes:
  - name: linstor-volume
    persistentVolumeClaim:
      claimName: linstor-pvc

🧪 七、验证部署

# 查看卷是否绑定成功
kubectl get pvc,pv

# 查看 Linstor 中资源状态
linstor resource list
linstor volume list

# 检查 CSI 插件日志
kubectl -n linstor logs -l app.kubernetes.io/name=linstor-csi

⚙️ 八、进阶配置建议

功能说明
自动副本调度可配合 Topology 约束,设置副本不在同一故障域
快照支持Linstor 支持 CSI 快照功能(需额外安装 Snapshot CRD)
ZFS 后端支持精细化的卷快照、压缩、发送复制等
Prometheus Exporter通过 LINSTOR Prometheus 插件进行监控

📚 官方参考资料


如果你还需要:

  • Linstor CSI 快照恢复完整用例
  • CSI Topology 限制存储调度(zone/host)
  • 结合 StatefulSet 的动态卷管理实践
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值