Longhorn
通过 NFSv4
服务器(share-manager
)公开常规 Longhorn
卷,原生支持 RWX
工作负载。
对于每个正在使用的 RWX
卷 Longhorn
将在 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
创建期间指定访问模式。
通过 UI
为 Longhorn
卷创建 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