前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Longhorn,企业级云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载(实验性功能)

Longhorn,企业级云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载(实验性功能)

作者头像
为少
发布2021-09-17 09:45:27
7840
发布2021-09-17 09:45:27
举报
文章被收录于专栏:黑客下午茶黑客下午茶

内容来源于官方 Longhorn 1.1.2 英文技术手册

系列

Longhorn 通过 NFSv4 服务器(share-manager)公开常规 Longhorn 卷,原生支持 RWX 工作负载。

对于每个正在使用的 RWXLonghorn 将在 longhorn-system 命名空间中创建一个 share-manager-<volume-name> Pod。

Pod 负责通过在 Pod 内运行的 NFSv4 服务器导出 Longhorn 卷。

还有为每个 RWX 卷创建的服务,用作实际 NFSv4 客户端连接的端点。

要求

为了能够使用 RWX 卷,每个客户端节点都需要安装 NFSv4 客户端。

对于 Ubuntu,您可以通过以下方式安装 NFSv4 客户端:

代码语言:javascript
复制
apt install nfs-common

对于基于 RPM 的发行版,您可以通过以下方式安装 NFSv4 客户端:

代码语言:javascript
复制
yum install nfs-utils

如果 NFSv4 客户端在节点上不可用,则在尝试挂载卷时,以下消息将是错误的一部分:

代码语言:javascript
复制
for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.\n

RWX 卷的创建和使用

对于动态配置的 Longhorn 卷,访问模式基于 PVC 的访问模式。

对于手动创建的 Longhorn 卷(恢复、DR 卷),可以在 Longhorn UI 创建期间指定访问模式。

通过 UILonghorn 卷创建 PV/PVC 时,PV/PVC 的访问模式将基于卷的访问模式。

只要卷未绑定到 PVC,就可以通过 UI 更改 Longhorn 卷的访问模式。

对于 RWX PVC 使用的 Longhorn 卷,卷访问模式将更改为 RWX

故障处理

share-manager Pod 的任何故障(卷故障、节点故障等)都将导致重新创建 Pod 并设置卷的 remountRequestedAt 标志, 这将导致 workload Pods 被删除,Kubernetes 重新创建它们。此功能取决于 卷意外分离时自动删除工作负载 Pod 的设置, 默认情况下为 true。如果该设置被禁用,workload Pods 可能会在 RWX 卷故障时出现 io errors

建议启用上述设置以保证在 RWX 卷出现问题时自动进行工作负载故障转移。

从以前的外部供应商迁移

下面的 PVC 创建了一个 Kubernetes job,可以将数据从一个卷复制到另一个卷。

  • data-source-pvc 替换为之前由 Kubernetes 创建的 NFSv4 RWX PVC 的名称。
  • data-target-pvc 替换为您希望用于新工作负载的新 RWX PVC 的名称。

您可以手动创建一个新的 RWX Longhorn volume + PVC/PV,或者只创建一个 RWX PVC,然后让 Longhorn 为您动态配置一个卷。

两个 PVC 都需要存在于同一个命名空间中。如果您使用的命名空间与默认命名空间不同,请在下方更改 job 的命名空间。

代码语言:javascript
复制
apiVersion: batch/v1
kind: Job
metadata:
  namespace: default  # namespace where the PVC's exist
  name: volume-migration
spec:
  completions: 1
  parallelism: 1
  backoffLimit: 3
  template:
    metadata:
      name: volume-migration
      labels:
        name: volume-migration
    spec:
      restartPolicy: Never
      containers:
        - name: volume-migration
          image: ubuntu:xenial
          tty: true
          command: [ "/bin/sh" ]
          args: [ "-c", "cp -r -v /mnt/old /mnt/new" ]
          volumeMounts:
            - name: old-vol
              mountPath: /mnt/old
            - name: new-vol
              mountPath: /mnt/new
      volumes:
        - name: old-vol
          persistentVolumeClaim:
            claimName: data-source-pvc # change to data source PVC
        - name: new-vol
          persistentVolumeClaim:
            claimName: data-target-pvc # change to data target PVC

历史

  • 从 v1.0.1 开始可用,External provisioner
    • https://github.com/Longhorn/Longhorn/issues/1183
  • 从 v1.1.0 开始可用,Native RWX support
    • https://github.com/Longhorn/Longhorn/issues/1470
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列
  • 要求
  • RWX 卷的创建和使用
  • 故障处理
  • 从以前的外部供应商迁移
  • 历史
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档