Ai *_* Da 6 bucket boto kubernetes google-kubernetes-engine gcsfuse
我正在寻找一种方法将一些 .mp4 视频文件(因为它们是由某些 python 应用程序生成的)“写入流”到谷歌云存储桶。python 应用程序已容器化并部署在 GKE 中,目前可以作为 Web 服务正常执行。但问题是,所有视频文件都是本地生成的,并存储在tmp/processedpod 内的路径 ( ) 中。
但是,我希望将视频文件写入 Google 名为 的存储桶中的文件my_bucket。
我已阅读有关如何在 Kubernetes pod 中安装存储桶的gcsfuse指南(https://github.com/maciekrb/gcs-fuse-sample ),还阅读了有关boto的信息(https://cloud.google.com/storage/docs ) /boto-plugin#streaming-transfers)用于将流传输到存储桶。
为了安装my_bucket在 中tmp/processed,我已将以下行添加到我的应用程序的部署文件 (YAML) 中:
lifecycle:
postStart:
exec:
command:
- gcsfuse
- -o
- nonempty
- my_bucket
- tmp/processed
preStop:
exec:
command:
- fusermount
- -u
- tmp/processed/
securityContext:
capabilities:
add:
- SYS_ADMIN
Run Code Online (Sandbox Code Playgroud)
我还没有使用过 boto,想也许只安装就足够了!但是,我的应用程序在尝试生成视频文件时出现输入/输出错误。
现在我的问题是,我是否需要同时使用gcsfuse和boto,还是只需将存储桶安装在我的 GKE pod 中就足够了?我的安装正确吗?
更新:我使用以下命令验证了我是否正确安装了:
kubectl exec -it [POD_NAME] bash
问题解决了!我只需要将我的水桶安装在吊舱内即可。安装脚本(如上面我的问题中所写)已正确完成。但是,导致该问题的input/output error原因是我的 GKE 集群没有足够的权限。基本上,集群没有读/写存储的权限,并且项目需要一些其他权限。因此,我使用以下命令创建了一个新集群:
gcloud container clusters create [MY_CLUSTER_NAME] \
--scopes=https://www.googleapis.com/auth/userinfo.email,cloud-platform,https://www.googleapis.com/auth/devstorage.read_write,storage-rw,trace,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/servicecontrol,compute-rw,https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/taskqueue \
--num-nodes 4 --zone "us-central1-c"
Run Code Online (Sandbox Code Playgroud)
为了能够从/向存储桶读取/写入,集群必须拥有权限https://www.googleapis.com/auth/devstorage.read_write。
另外,不需要使用boto并且通过gcsfuse安装足以让我能够将流视频文件写入my_bucket.
| 归档时间: |
|
| 查看次数: |
3894 次 |
| 最近记录: |