专栏首页黑客下午茶Longhorn,企业级云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载(实验性功能)

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

内容来源于官方 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 客户端:

apt install nfs-common

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

yum install nfs-utils

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

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 的命名空间。

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

本文分享自微信公众号 - 黑客下午茶(hi-weishao),作者:为少

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Longhorn 云原生容器分布式存储 - Python Client

    目前,您可以使用 Longhorn UI 操作 Longhorn。同时,您可以使用 Python 访问 Longhorn API,如下所示。

    为少
  • Longhorn,企业级云原生容器分布式存储 - 定制部署默认设置

    您可以在部署 Longhorn 时自定义它的默认设置。例如,您可以在启动 Longhorn 之前指定 Create Default Disk With Node...

    为少
  • K8s原生存储持续进化,Longhorn 1.1迎来ARM支持

    当DevOps团队同时使用Rancher和Longhorn 1.1时,他们可以轻松管理位于任意位置的持久化数据卷,无论这些持久化数据卷位于云端、数据中心抑或边缘...

    CNCF
  • Longhorn云原生容器分布式存储-Air Gap安装

    Longhorn 可以通过使用 manifest file、Helm chart 或 Rancher UI 安装在 air gapped 环境中。

    为少
  • Longhorn 微服务化存储初探

    Longhorn 官方推荐的最小配置如下,如果数据并不算太重要可适当缩减和调整,具体请自行斟酌:

    CNCF
  • Longhorn,企业级云原生容器分布式存储 - 高可用

    数据局部性设置(data locality setting)旨在在以下情况下启用:只要有可能,至少应在与使用该卷的 pod 相同的节点上调度 Longhorn ...

    为少
  • Longhorn,Kubernetes 云原生分布式块存储

    Longhorn 是用于 Kubernetes 的轻量级、可靠且功能强大的分布式块存储系统。

    为少
  • 什么是ReadWriteMany?

    在Kubenetes体系内,针对每一个持久化存储卷,都有三种访问方式: ReadWriteOnce(RWO), ReadOnlyMany(ROX), ReadW...

    焱融科技
  • 使用Longhorn优雅地恢复正在运行中的容器应用

    鞠宏超,Rancher研发工程师。4年云计算领域经验,2018年加入Rancher Labs,先后参与了Longhorn产品研发,Rancher2.x产品研发,...

    CNCF
  • Rook带你玩转云原生存储

    First thing first,Rook is not a CSI driver. —— 首先,Rook不是一个容器存储驱动。

    nevermosby
  • Longhorn,企业级云原生容器分布式存储 - 监控(Prometheus+AlertManager+Grafana)

    Longhorn 在 REST 端点 http://LONGHORN_MANAGER_IP:PORT/metrics 上以 Prometheus 文本格式原生公...

    为少
  • Longhorn,企业级云原生容器分布式存储 - K8S 资源配置示例

    请注意,只有 ext4 文件系统支持在卷意外分离后(detached unexpectedly)自动重新挂载。

    为少
  • 容器存储才是新的制高点

    存储圈都在谈论闪存以及软件定义存储。一个是存储介质的更新换代;一个是存储架构的变化。

    用户5498443
  • Rancher大中华区技术总监带你6分钟了解Rancher 1.5

    摘要 Rancher容器管理平台1.5版已正式与大家见面了,此次分享将由Rancher Labs大中华区技术总监介绍Rancher的版本演进历史以及Ranche...

    IT大咖说
  • Longhorn 企业级云原生分布式容器存储-券(Volume)和节点(Node)

    在本教程中,您将学习如何创建与 Longhorn 卷对应的持久卷 (PV) 和持久卷声明 (PVC) 的 Kubernetes 持久存储资源。您将使用 kube...

    为少
  • Longhorn 云原生分布式块存储解决方案设计架构和概念

    Longhorn 设计有两层:数据平面(data plane)和控制平面(control plane)。Longhorn Engine 是存储控制器对应数据平面...

    为少
  • Longhorn 企业级云原生容器存储解决方案-部署篇

    安装 Longhorn 的 Kubernetes 集群中的每个节点都必须满足以下要求:

    为少
  • kubernetes-存储卷(十二)

    为了保证数据的持久性,必须保证数据在外部存储在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实...

    yuezhimi
  • KubeSphere 社区大量全职开源职位诚邀您的加入!

    KubeSphere 团队是开源项目 KubeSphere(https://kubesphere.io)的核心维护成员。在 KubeSphere 团队,一切都是...

    LinuxSuRen

扫码关注云+社区

领取腾讯云代金券