如何通过编程将文件从kubernetes pod复制到Google Cloud bucket



我正试图将文件从Kubernetespod复制到GCP Bucket。我可以获得我的文件的路径,但我想知道如果我想用python编程实现这一点,我该怎么做。

我用gcsfs买水桶。如何在不使用kubectl的情况下复制程序中的文件?

有没有通过python来实现这一点。

我需要同意@anemyte:的评论

有一个关于如何从pod中复制文件的问题。您可以下载它,然后使用您的代码将其上传到bucket。


我看到了这个问题的两种可能的解决方案:

  • 使用GCS Fuse和Python代码将文件从Pod复制到GCS存储桶
  • 使用Python库连接到不带gcsfuse的GCS存储桶

使用GCS Fuse和Python代码将文件从Pod复制到GCS存储桶

假设您有一个配置了GCS FusePod,并且它工作正常,您可以使用以下代码片段来复制文件(在dst中,您传递bucket的挂载目录(:

from shutil import copyfile
copyfile(src, dst) 

--Stackoverflow.com:问题:123198:如何复制文件


使用Python库连接到不带GCS Fuse的GCS存储桶

正如社区成员@anemyte所指出的,您可以使用云存储客户端库以编程方式解决您的问题:

  • Cloud.google.com:存储:文档:参考:库

有一个Python代码片段用于处理上传操作:

from google.cloud import storage

def upload_blob(bucket_name, source_file_name, destination_blob_name):
"""Uploads a file to the bucket."""
# The ID of your GCS bucket
# bucket_name = "your-bucket-name"
# The path to your file to upload
# source_file_name = "local/path/to/file"
# The ID of your GCS object
# destination_blob_name = "storage-object-name"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
print(
"File {} uploaded to {}.".format(
source_file_name, destination_blob_name
)
)

请记住,您需要拥有适当的权限才能使用GCS存储桶。您可以通过以下链接阅读更多关于它的信息:

  • Cloud.google.com:存储:文档上传对象:先决条件

旁注!

您还可以使用Workload Identity作为向Pod分配所需权限的方法之一。


其他资源:

  • Github.com:Maciekrb:Gcs保险丝示例
  • Cloud.google.com:存储:文档:GCS保险丝

我突然想到,您可以在Pod的外部使用Python(就像从您的笔记本电脑上一样(来将文件从Pod复制到GCS bucket。我想你可以效仿这个例子:

  • Github.com:Kubernetes客户端:Python:示例:Pod exec.py

最新更新