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

歷史


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM