1

我正在尝试研究如何从 ceph 块存储中传输文件,例如数据库备份。

我已经按照此处的示例进行操作: https ://github.com/rook/rook/blob/master/Documentation/ceph-block.md ,这样我就可以使用 Wordpress 和 mysql 了rook-ceph-block

然后如何从正在运行的 pod 传输文件。例如,如果我想将数据库备份下载到另一台主机上?

4

2 回答 2

1

有许多方法可能可行。如果您知道哪个特定容器具有该文件,则始终可以配置节点端口,使用该文件通过 ssh 进入容器,安装并运行 sshd,然后使用您分配的节点端口从目标计算机使用 scp。

另一种方法是在挂载相同文件系统的新 pod 中创建一个简单的 HTTP 服务器。这可能会使用 HTTP get 命令公开文件。只需几行代码,您就可以使用 nodejs、express 和 fs 轻松完成此操作。这比第一个解决方案要好,因为您不必知道哪个容器有文件(这可能很难发现)。

但是,您可能做错了事。正确的解决方案是配置 rook 使用卷快照为您执行此操作。

于 2020-12-19T17:12:52.770 回答
0

根本不使用块存储。

目前,我使用 NFS 和 Ubuntu+Autofs(Kubernetes 之外)和相对较新的Kubernetes 本地存储。见底部。与默认 Longhorn 相比的一个优势是 RWX 而不是 RWO。

有了sudo mc您可以轻松地来回复制内容。

您也可以轻松地将内容从 GlusterFS 中复制出来,但在我几周前测试的版本 7 中,它还不适合具有许多小型写入操作的数据库或 Redis。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: <PV_NAME>
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: <AUTO_FS_PATH>
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <VM_NAME>
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <PVC_NAME>
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: local-storage
  resources:
    requests:
      storage: 20Gi
于 2020-12-19T17:49:36.960 回答