【问题标题】:How to download Google Compute Engine disk content?如何下载 Google Compute Engine 磁盘内容?
【发布时间】:2021-05-06 22:52:00
【问题描述】:

我已将持久卷链接到我的 Kubernetes Neo4j 复制控制器以存储数据库数据。现在我想在本地下载该数据以在我的系统上运行生产数据库。我找不到下载磁盘内容的方法。有人能指出我正确的方向吗?

更新(使用 Kubernetes 创建持久卷):

persistent-volume-db.json
{
  "kind": "PersistentVolume",
  "apiVersion": "v1",
  "metadata": {
    "name": "pv-db"
  },
  "spec": {
    "capacity": {
      "storage": "500Gi"
    },
    "accessModes": [
      "ReadWriteMany"
    ],
    "gcePersistentDisk": {
      "pdName": "tuwa-db-data-disk",
      "fsType": "ext4"
    }
  }
}

persistent-volume-claim-db.json
{
  "kind": "PersistentVolumeClaim",
  "apiVersion": "v1",
  "metadata": {
    "name": "pvc"
  },
  "spec": {
    "accessModes": [
      "ReadWriteMany"
    ],
    "resources": {
      "requests": {
        "storage": "500Gi"
      }
    }
  }
}

然后是用法:

neo4j-controller.json
{
  "kind": "ReplicationController",
  "apiVersion": "v1",
  "metadata": {
    "name": "neo4j-controller",
    "labels": {
      "name": "neo4j"
    }
  },
  "spec": {
    "replicas": 1,
    "template": {
      "metadata": {
        "labels": {
          "name": "neo4j"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "neo4j",
            "image": "neo4j/neo4j",
            "ports": [
              {
                "name": "neo4j-server",
                "containerPort": 7474
              }
            ],
            "volumeMounts": [
              {
                "mountPath": "/data/databases",
                "name": "pv-db"
              }
            ]
          }
        ],
        "volumes": [
          {
            "name": "pv-db",
            "persistentVolumeClaim": {
              "claimName": "pvc-db"
            }
          }
        ]
      }
    }
  }
}

【问题讨论】:

    标签: neo4j google-compute-engine kubernetes persistent-storage


    【解决方案1】:

    GCE 的管理面板没有永久性磁盘的“下载”按钮,但 gcloud 可以轻松地将文件从实例复制到本地计算机:

    gcloud compute copy-files example-instance:~/REMOTE-DIR ~/LOCAL-DIR --zone us-central1-a

    这会将~/REMOTE-DIR 从远程实例复制到您计算机上的~/LOCAL-DIR。只需将目录名称 example-instance 替换为您的实例名称,并在必要时调整您的区域。更多信息请点击docs

    【讨论】:

    • 感谢您的回答,但该磁盘似乎不是实例,因此您无法连接到它。还是我误解了什么?我有运行 Kubernetes 设置的实例和与某些 pod 关联的磁盘。我想访问那些持久卷,我可以在控制台中看到它们,但我无法使用 gcloud compute ssh 访问它们,因为它们不是实例。
    • 正确,磁盘不是实例,但如果其 pod 正在使用永久磁盘,您的实例将挂载永久磁盘。这取决于它们的安装方式,但您应该通过 ssh 进入您的实例(您也可以通过 gcloud 执行此操作)并查看 /mnt/dev/disk/by-id/。您可能会在那里找到磁盘。找到实例中 PD 的挂载位置后,您可以使用 gcloud compute copy-files
    • 谢谢,这让我很高兴;)
    • 我在 /dev/disk/by-id/ 中找到了这个:google-persistent-disk-0 google-tuwa-data-disk scsi-google-persistent-disk-0 scsi-0Google_PersistentDisk_persistent- disk-0 ...冒着提出愚蠢问题的风险,这些文件都不是文件夹,它们是什么?不过他们有我的 PD 的名字。
    • 是的,我得到了 google-tuwa-db-data-disk: symbolic link to `../../sdb' 和其他指向 sda1、sdc 的文件...但是上面的文件夹 2 dir 不存在。我会认为我的驱动器已安装(某处),因为当我重新启动复制控制器时我正在保留我的应用程序数据。我将用我创建云端硬盘的方式更新我的问题。
    【解决方案2】:
    gcloud compute copy-files  #has been deprecated
    

    请改用gcloud compute scp。请注意,gcloud compute scp 默认情况下没有递归复制。要打开递归,请使用--recurse 标志。

    gcloud compute scp --recurse example-instance:~/instance-1_path  ~/locad_path --zone=us-central1-a
    

    这会将 ~/instance-1_path 从远程计算实例复制到您个人计算机上的 ~/local_path 中。只需将目录名称、example-instance 替换为您的实例名称,并在必要时调整您的区域。

    可以在here找到这个SDK的完整文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多