【问题标题】:How to use gsutil in startup-script on container-os image in GCP?如何在 GCP 中容器操作系统映像的启动脚本中使用 gsutil?
【发布时间】:2020-10-13 17:36:04
【问题描述】:

我正在使用gcloud beta compute instances create-with-container 和以下启动脚本创建我的 GCE 实例:

#! /bin/bash
gsutil cp gs://artifacts.<PROJECT-ID>.appspot.com/some-file .
docker-credential-gcr configure-docker
docker pull gcr.io/<PROJECT-ID>/image:tag
docker run --name compose --rm -v $PWD:$PWD -w $PWD -v /var/run/docker.sock:/var/run/docker.sock docker/compose:1.26.0 up -d --force-recreate

但我的结尾是:

Jun 23 15:22:08 app startup-script[389]: INFO Found startup-script in metadata.
Jun 23 15:22:08 app startup-script[389]: INFO startup-script: /var/lib/google/startup-DqGmUt/tmpPyYsVd: line 2: gsutil: command not found
Jun 23 15:22:09 app startup-script[389]: INFO startup-script: ERROR: Unable to save docker config: mkdir /root/.docker: read-only file system

我尝试在启动脚本中也安装 gsutil,但它解决了 /root 是 RO 的相同问题。在 COS 图像上真的可以这样做吗?

【问题讨论】:

    标签: docker google-cloud-platform google-compute-engine


    【解决方案1】:

    作为文档 [1],gsutil 工具似乎可以在 Linux/Unix、MAC OS 以及 Windows 上运行。所以看起来 COS 镜像不支持 gsutil。我也希望链接 [2] 和 [3] 能有所帮助。

    请准备好文档 [4],因为 COS 图像有一些限制。

    [1]https://cloud.google.com/storage/docs/gsutil_install#specifications

    [2]`gsutil cp` from Storage to compute instance running container doesn't copy files

    [3]https://github.com/GoogleCloudPlatform/gsutil/issues/453

    [4]https://cloud.google.com/container-optimized-os/docs/concepts/features-and-benefits#limitations

    【讨论】:

    • 嗯... containerOS 是 Linux。
    • Container-Optimized OS 对其他操作系统 [1] 上您可能熟悉的一些常见功能的支持有限或不支持。 [1]cloud.google.com/container-optimized-os/docs/concepts/…
    • 是的,我知道 ContainerOS 是什么,也知道它的局限性。不过,这个问题的目的是看看我尝试做的事情在使用 gsutil 命令方面是否可行。你说不是吗?
    • 嗨,很抱歉造成混乱。作为错误消息:第 2 行:gsutil:找不到命令,您能否尝试将 gsutil 安装为文档 [1]?另一方面,请向我提供您所遵循的步骤以及相关文档,我将尝试在我的项目中重现。多谢。 [1]cloud.google.com/storage/docs/gsutil_install#alt-install
    • 最后我决定只迁移到一个单节点区域 GCP Kubernetes 集群,它可以解决上述所有问题,感谢您的帮助!
    【解决方案2】:

    有一种方法可以在 Container Optimized OS 中使用 gsutil 和 gcloud 等工具。您可以访问工具箱以使用 gsutil 访问存储桶,然后将下载的数据从工具箱目录复制到您的实际 VM。

    启动工具箱后,您可以在工具箱和您的虚拟机之间交换文件,在您的虚拟机中使用/var/lib/toolbox/USER-gcr.io_google-containers_toolbox-20200404-00/ 从工具箱中获取数据,在工具箱中使用/media/root/从 vm 中获取文件。

    更多信息 https://cloud.google.com/container-optimized-os/docs/how-to/toolbox

    【讨论】:

      【解决方案3】:

      对于gcloud beta compute instances create--create-disk=...image=projects/cos-cloud/global/images/cos-85-13310-1416-9,...,我在启动脚本中使用了容器化的gsutil

      #!/bin/bash
      docker run -v /tmp:/tmp google/cloud-sdk:slim gsutil cp gs://BUCKET/file /tmp/
      cat /tmp/file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-19
        • 1970-01-01
        • 2022-08-06
        • 2021-10-31
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多